jeudi 19 octobre 2017

Introduction



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