Ce blog a été créé pour raconter mon expérience sur la
programmation en assembleur avec le Raspberry pi et pour guider les personnes
débutantes intéressées par l’assembleur ARM sur ce matériel.
J’ai acquis récemment un Rasperry modèle 1B (512MO de ram)
et je me suis demandé ce que je pouvais en obtenir en matière de formation à la
programmation. Connaissant déjà le langage C et des langages de haut niveau
comme Java, l’apprentissage d’un nouveau langage comme Python ne me semblait
pas intéressant. Par contre en étudiant les caractéristiques du processeur du
Raspberry, je me rends compte qu’il s’agit d’un processeur de type RISC avec un
jeu d’instruction réduit. Cela me changeait des processeurs Intel avec leurs
centaines d’instructions Assembleur et en plus dans un environnement Windows.
Je décidais donc de me lancer dans la programmation en
assembleur pour voir quelles étaient les limites de son utilisation sur un
Raspberry dans un environnement LINUX. De plus conscient de la faible puissance
du processeur et de la taille limitée de l’espace mémoire du Raspberry, je
supposais que des programmes écrits dans ce langage seraient plus performants
que des programmes écrits en langages de haut niveau.
Mais ce blog ne sera pas un cours formel sur l’assembleur
ARM mais plutôt l’utilisation de celui-ci dans l’environnement Linux du
Raspberry. Pour une bonne présentation des instructions de assembleur, je vous
conseille (hélas en anglais) le site suivant : http://thinkingeek.com/arm-assembler-raspberry-pi/
Attention :
apprendre l’assembleur ne sert que pour connaitre les principes de base
du fonctionnement d’un processeur, pour des besoins de formation ou d’écriture
d’algorithmes performants. Si vous voulez écrire des programmes complets rapidement et proches de la machine, je
vous conseille plutôt d’utiliser le langage C .
Pour beaucoup, l’assembleur parait difficile à apprendre
mais en fait il n’y a que peu d’instructions à apprendre, 15 registres de 32
bits à gérer, 4 drapeaux à tester et de la mémoire composée d’octets
indifférenciés dont les adresses sont sur 32 bits.
Autant que possible, je donnerais des exemples de programmes
en indiquant les difficultés que j’aurais pu rencontrer. Mais attention, ces
programmes ne seront pas forcément optimisés et ne seront pas la meilleure
solution à des problèmes. Actuellement ils fonctionnent sur un Raspberry avec
la version Raspbian Jessie et sur le
modèle B.
Pour l’utilisation, j’ai préféré utiliser une connexion ssh
à partir d’un ordinateur sous Windows 10 où j’ai installé le logiciel puTTY.
Cela me permet d’avoir les sources en double et d’utiliser un éditeur plus
perfectionné que l’éditeur nano du Raspberry, en l’occurrence Notepad++ ( en
plus celui ci permet le transfert des sources directement sur le Raspberry avec
l’extension NppFtp).
Pour les prérequis nécessaires, je suppose que vous
connaissez un minimum des commandes Linux, un minimum de programmation (tests,
boucles, fonctions, sous programmes, tables etc ) et les représentation des
données (hexa, binaire, décimal signé ou non signé, caractères et chaines de
caractères).
En ce qui me concerne, vous voudriez bien me pardonner
et me corriger de toutes les bévues que je pourrais raconter dans ce blog. En
effet je découvre seulement les problèmes quelques chapitres avant leur
diffusion et donc j’ignore toutes les subtilités de cette programmation.Remarque : ce blog me permet aussi de me familiariser avec les outils de publication de blog.
Aucun commentaire:
Enregistrer un commentaire