samedi 1 septembre 2018

Chapitre 41 : programmer en assembleur sans OS (baremetal) partie 1


Jusqu’à maintenant, nous avons écrit des programmes en assembleur en utilisant les appels system de Linux pour les fonctions de base. Maintenant, nous allons commencer une série pour ne plus utiliser aucune fonction de l’OS.
Avertissement : Ne vous lancez pas la dedans si vous souhaitez développer rapidement des programmes importants. En effet, sans OS, il vous faudra réécrire en assembleur une grande partie des fonctionnalités offertes par un système d’exploitation complet (ou alors recopier les programmes de ce blog et des programmes trouvés sur internet qui contiennent les fonctionnalités que vous voulez utiliser).
Dans ce blog, nous essaierons d’aller le plus loin possible en récupérant des parties de logiciel déjà écrites sur Internet (ou en s’inspirant fortement) pour voir les difficultés et les contraintes de ce type de développement.
Déjà sans OS, cela veut dire que nous ne pouvons plus afficher quoi que ce soit à l’écran, plus de gestion du clavier à travers le port usb, plus de lecture écriture de la carte SD, plus de connexion ssh et même plus de wifi, bref nous n’avons plus rien !!   Ah si nous avons tous les pins du GPIO de disponibles et la lecture d’une image binaire contenant le ou les programmes et leur exécution lors du démarrage du Raspberry.
C’est pourquoi, les premiers exemples de développement trouvés sur Internet consistent à faire clignoter une LED relié aux pins du GPIO après avoir compilé quelques instructions assembleur ARM et généré une image binaire lisible par le GPU (voir la séquence de boot du raspberry).  Pas très folichon comme début d’expérience.
Voir le site en anglais: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html
Heureusement, mon fils me signale un tutoriel qui explique comment programmer la mini uart du BCM2835, la relier à un ordinateur portable afin d’enclencher une communication entre les 2 ordinateurs. C’est déjà beaucoup mieux.
Bon le tutoriel est en anglais, mélange du C et de l’assembleur ARM, utilise des fonctions des librairies LINUX et concerne le Raspberry modèle 3 !!
Mais rien d’impossible à comprendre !!  donc aller sur : https://github.com/s-matyukevich/raspberry-pi-os
Dressons les étapes de la démarche à suivre pour arriver à notre fin  (remarque ces étapes ne sont à effectuer qu'une seule fois heureusement ) :
                Avoir un raspberry pi !!  (dans mon cas un modèle 1 B 512MO )et un ordinateur (dans mon cas sous Windows 10) qui puisse lire écrire sur une carte SD (ou acheter un petit lecteur de carte SD)
                Installer si ce n’est déjà fait le logiciel Putty sur le PC
                Acheter une carte SD (4GO suffisent car dans l’immédiat on ne sait pas écrire de fichiers sur la carte)
                Acheter un câble de liaison USB TTL   (voir modèle proposé ici https://cdn-learn.adafruit.com/downloads/pdf/adafruits-raspberry-pi-lesson-5-using-a-console-cable.pdf)
                Installer sur l’ordinateur, le driver nécessaire au câble : Attention, avec windows 10 et driver Prolific , j’ai rencontré des problèmes résolus en chargeant le driver du site :
http://www.totalcardiagnostics.com/support/Knowledgebase/Article/View/92/20/prolific-usb-to-serial-fix-official-solution-to-code-10-error
                Rechercher dans le gestionnaire de périphérique le port de l’ordinateur (comX) auquel est rattaché le câble
                En suivant le tutoriel précèdent, activer la console série sur le Raspberry, brancher le câble sur les pins du GPIO, redémarrer le raspberry.
                Sur l’ordinateur lancer putty connexion série, avec le port (comX) trouvé plus haut, et la vitesse 115200 (enregistrer la configuration pour la retrouver ultérieurement)
                Taper <ENTER>  et vous devez vous retrouver avec le login du raspberry pour établir une connexion.
                Sinon, boucler sur les étapes précédentes pour résoudre les problèmes potentiels !!!

Dans le chapitre suivant, nous verrons la partie logiciel. Bon courage.

Aucun commentaire:

Enregistrer un commentaire