Installer un émulateur ARM gratuit

Décembre 2016

Il se peut que vous ayez besoin de tester du code assembleur pour processeur arm, simplement parce que vous êtes étudiant ou professionnel. Le problème c'est que la plupart des ordinateurs que nous utilisons ont des processeurs de famille x86, il n'est pas possible d'y executer du code ARM.

GNU ARM


Sous Windows


Il existe un paquetage de développement basé sur gcc pour produire des executables compatibles Linux sur architecture Arm. Et, plus important, vous pouvez tester des petits executables simples. Par contre je n'ai pas pu tester le débogage, donc pour ça il faudra vous débrouiller.

Rendez vous sur cette page et choisissez, dans cette section binaries, la dernière version du toolchain gcc pour Cygwin. A l'heure ou j'écris, c'est la version 4.1.1.
Je tiens à signaler que c'est une version destinées à Cygwin, mais l'installation de Cygwin n'est pas necessaire finalement.

Executez l'installeur.Lorsque l'on vous demandera de choisir des options, laissez les telles qu'elles, l'installation par défaut est une installation complète.

A présent, faisons un petit test avec du code arm. On va esssayer d'afficher "Hello CCM". Ouvrez le bloc note de windows et enregistrez un fichier avec ce contenu (appelez ce fichier test.s):
.text

.chaine:
     .ascii "Hello CCM"
     .align 2

.global main
.type	main, %function

main:
     /* Sauvegarde l'adresse de retour dans la pile */
     str lr, [sp, #-4]!
     
    /* Appel de la fonction puts avec l'adresse de notre chaîne */
     ldr r0, .Adr_Chaine
     bl puts
     
    /* return 0 du main */
     mov r0, #0

    /* On reprend notre adresse de retour de fonction que l'on injecte dans le compteur d'instruction */
     ldr lr, [sp], #4
     mov pc, lr
     
.Adr_Chaine:
    .word .chaine


Nous avons notre fichier de source assembleur. A présent, ouvrez l'invite de commande de Windows, vous devez être dans le repertoire du fichier source avec l'invite de commande. Pour compiler ce fichier en un executable elf (format d'executable Linux), tapez cette commande:
arm-elf-gcc test.s -o test

Pour tester cet executable, tapez:
arm-elf-run test


C'est bien pour tester du code mais vous n'aurez que l'execution. Pour deboguer, vous aurez besoin de la commande arm-elf-gdb.

Comme vous l'aurez remarqué, la syntaxe utilisée par gcc pour les fichiers source assembleur est compliquée, sinon atroce. Il faut le temps de l'apprivoiser. Pour tester ce qu'un code C peut rendre en assembleur arm avec la syntaxe gcc, vous pouvez compiler un fichier C avec arm-elf-gcc en utiliisant l'option -S, celà produira en sortie un fichier en assembleur au lieu d'un executable. L'exemple pour faire notre hello CCM est d'ailleurs une version simplifiée d'un fichier assembleur produit par gcc.

Vous trouverez plus bas des liens qui pointent vers de la documentation sur la syntaxe gcc pour l'assembleur.

IAR


Voici une solution simple mais pas portable (uniquement sous Windows) et limitée.
Il s'agit d'un environnement de développement ARM. L'éditeur IAR en propose un sur son site gratuitement. Mais il est limité à 32 Ko de code, ce qui est toutefois suffisant pour tester des petits bouts de code. Ce logiciel n'est hélas pas portable, il n'existe donc sous Windows et vous devez vous inscrire sur le site officiel pour obtenir une licence gratuite.
Le logiciel en question est KickStart version of IAR Embedded Workbench for ARM.
C'est surtout une solution pour dépanner, elle n'est en tout cas pas limitée dans le temps.

Note: Je n'ai pas vérifié si la licence permettait une utilisation commerciale pour cette version.

Notes


_ Un site qui regroupe plein de tutoriaux pour utiliser l'assempleur avec la syntaxe de gcc (en)
_ Le jeux d'instructions Arm (ne remplace pas un tutoriel d'assembleur) (en)
_ Developpement arm sous Linux (fr)

A voir également :

Ce document intitulé «  Installer un émulateur ARM gratuit  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.