URL: https://linuxfr.org/users/maxb/journaux/ecrire-son-os-partie-1-preparer-le-terrain Title: Écrire son OS - Partie 1 : préparer le terrain Authors: maxb Date: 2015年02月18日T21:42:09+01:00 License: CC By-SA Tags: système_d'exploitation, arm, cortex, microcontrôleur, embarqué, c et franglais Score: 35 Bonjour à tous, Pour ce premier journal, je vous propose de vous raconter un peu les différentes étapes de mon projet du moment : écrire un petit OS pour un microcontrôleur STM32. # De quoi ça s'agit ? # J'ai récupéré une carte de développement construite autour d'un STM32F103RBT6. C'est un microcontrôleur basé sur un cœur ARM [Cortex-M3](http://fr.wikipedia.org/wiki/ARM_Cortex-M). Il est un peu daté mais bon, on fait avec ce qu'on a (surtout quand c'est gratuit :). Pour situer un peu le bouzin, c'est un micro 32 bits qui embarque 20Ko de SRAM et 128Ko de Flash, plus un certain nombre de périphériques habituels (UART, SPI, I2C...). La carte de dev est une MCBSTM32 de chez Keil. Le but du jeu c'est donc d'écrire un petit noyau capable de faire tourner une application sur ce chip. Il ne s'agit pas de faire un truc de dingue (nothing big and professional like GNU), mais vraiment d'apprendre en faisant le plus simple et clair possible. # Récupérer de la doc # Bon allez c'est parti, la première des choses à faire c'est de récupérer toutes les docs susceptibles de nous servir : * le [schéma de la carte](http://www.keil.com/mcbstm32/mcbstm32-schematics.pdf) * le [programming manual](http://www.st.com/web/en/resource/technical/document/programming_manual/CD00228163.pdf) du cœur Cortex-M3 * la [datasheet](http://www.st.com/web/en/resource/technical/document/reference_manual/CD00171190.pdf) de la "famille" du chip (STM32F10xxx) * la [datasheet](http://www.st.com/web/en/resource/technical/document/datasheet/CD00161566.pdf) du chip en lui-même * le [Flash programming manual](http://www.st.com/web/en/resource/technical/document/programming_manual/CD00283419.pdf). Celui-là nous servira plus tard, une fois le développement un peu avancé, pour écrire du code capable de reprogrammer la Flash du micro (ceci afin de pouvoir mettre à jour le programme sans devoir sortir le JTAG). Ensuite ? Ben y'a plus qu'à lire tout ça... Ça devrait vous occuper un certain temps. On lit jusqu'à ce qu'on ait une idée claire du boulot qui nous attend pour écrire un code qui démarre sur cette carte. # Préparer la boîte à outils # Une fois qu'on a bien digéré la doc, reste une étape avant de se lancer comme un dingue dans le code : préparer ses outils de développement. Les ingrédients pour bien réussir cette recette sont : * une toolchain de cross-compilation pour notre cible (arm-none-eabi). Chez moi ça revient à `sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi` * un cross debugger (`sudo apt-get install gdb-arm-none-eabi`) * une sonde JTAG qui nous servira à programmer et debugger le programme sur le chip. Sans vouloir faire de pub, j'ai opté pour [ça](https://www.olimex.com/Products/ARM/JTAG/ARM-USB-TINY-H/). Ça fonctionne bien sous Linux et c'est un poil moins cher qu'une sonde Lauterbach à 3000€ ;) * enfin, un OpenOCD, un programme sympa qui fait le traducteur entre votre sonde JTAG et GDB (`sudo apt-get install openocd`) Ah et il nous faudra aussi un peu de make, du git et un éditeur de texte, mais je suppose que vous avez déjà tout ça... Voilà, c'est tout pour cette fois, on se retrouve bientôt pour parler de la config des outils et commencer à écrire du code ! ### PS: il est où le code ? ### Pour ceux que ça intéresse, le code est libre (licence BSD) et hébergé sur [Github](https://github.com/maxbernelas/MOS) (pour faire plaisir aux trolls). Évidemment c'est un travail en cours, qui progresse suivant mes envies et mon temps libre.

AltStyle によって変換されたページ (->オリジナル) /