GCC ARM installation et utilisation sur Mac

GCC ARM installation et utilisation sur Mac

Ici est presente mon investigation sur la programmation d’un systeme ‘bare metal’ pour un microcontroleur ARM.

Table des matieres:

  •       –Compilateur–
  •       –Commande Line Tool–
  •       –Tester le fonctionnement avec la commande–
  •       –Lancer les compilations avec la commande–
  •       –Creation du fichier make (base)–
  •       –Fichier Startup Code (startup.s)–
  •       –Fichier Linker Script (*.lst)–

 

–Compilateur–
Télécharger ‘gcc-arm-none-eabi-5_4-2016q2’ (gcc-arm-none-eabi-5_4-2016q2-20160622-mac.tar) sur le site de GCC (https://launchpad.net/gcc-arm-embedded).
Extraire et placer dans $install_dir ($install_dir est le chemin vers le dossier de votre choix).

–Commande Line Tool– (est ce necessaire ??)

L’installation de Xcode permet d’installer Commande Line Tool de meme que Make (utiliser plus tard).
Téléchargement et installation du ‘Command Line Tools for Xcode’ (Command_Line_Tools_OS_X_10.11_for_Xcode_8_beta) sur le site apple developer (https://developer.apple.com/download/more/)

–Tester le fonctionnement avec la commande–

$install_dir/gcc-arm-none-eabi-*/bin/arm-none-eabi-as --version

il devrait retourner quelque chose comme :

GNU assembler version 2.26.0 (arm-none-eabi) using BFD version 
(GNU Tools for ARM Embedded Processors) 2.26.0.20160616

–Lancer les compilations avec la commande–
Tester avec le fichier ‘main.s’:

            @ main.s
            .section .text
            .globl main

main:       mov   r0, #5        @ on met la valeur 5 dans R0
            mov   r1, #4        @ on met la valeur 4 dans R1
            add   r2, r1, r0    @ on additionne R0 et R1 dans R2
                                @ et on bloque le programme
emain:      b     emain         @ dans une boucle infinie

Lancer la commande depuis le repertoire ou se trouve le fichier main.s:

$install_dir/gcc-arm-none-eabi-*/bin/arm-none-eabi-as -o main.o main.s

il devrait retourner le fichier main.o:

7f45 4c46 0101 0100 0000 0000 0000 0000
0100 2800 0100 0000 0000 0000 0000 0000
9400 0000 0000 0005 3400 0000 0000 2800
0800 0500 0500 a0e3 0410 a0e3 0020 81e0
...

— Creation du fichier make (base)–
make est installe de base (a cause de Commande Line Tool ?? avec Xcode) et la commande de test permet de le verifier :

make --version

La réponse devrait etre :

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0

Le fichier make (tres simple) suivant permet de compiler le fichier main.s en main.o (sauvegarder le fichier make sous le nom Makefile sans extention)

GCC_base 	= $install_dir/gcc-arm-none-eabi-*
GCC_bin 	= $install_dir/gcc-arm-none-eabi-*/bin
GCC_lib 	= $install_dir/gcc-arm-none-eabi-*/lib
GCC_inc 	= $install_dir/gcc-arm-none-eabi-*/include
AS 		= $(GCC_bin)/arm-none-eabi-as

all :
	$(AS) main.s -o main.o

sous le terminal et a la racine de votre repertoir contenant ‘main.s’ et ‘Makefile’ lancer la commande ‘make’. Voila, le fichier main.o est compilé.

–Fichier Startup Code (startup.s)–

–Fichier Linker Script (*.lst)–

[suite a venir…]

——————————————————————————————————-
ref :
https://www.gnu.org/software/make/manual/html_node/index.html#SEC_Contents
https://www.cs.umd.edu/class/fall2002/cmsc214/Tutorial/makefile.html
http://mrbook.org/blog/tutorials/make/
http://mcufreaks.blogspot.ca/2013/03/customizable-makefile-for-gcc-arm.html
http://www.embedded.com/design/mcus-processors-and-socs/4007119/Building-Bare-Metal-ARM-Systems-with-GNU-Part-1–Getting-Started
Simplest bare metal program for ARM
http://www.state-machine.com/doc/Building_bare-metal_ARM_with_GNU.pdf
https://sites.google.com/site/michaelsafyan/software-engineering/how-to-write-a-makefile
https://sites.google.com/site/microsrobots/home/les-outils/compilateur-arm