Avec la révolution des ordinateurs personnels du début des années 80, les personnes qui ont programmé les premiers microcontrôleurs ont instantanément vu dans les ordinateurs leur nouvel outil favori. Les ordinateurs fonctionnaient avec les mêmes tensions et disposaient généralement d'un grand nombre de ports d'entrées/sorties (GPIO), comme par exemple le port parallèle sur l'IBM PC et le port utilisateur sur le Commodore 64. Comme les microcontrôleurs et leurs périphériques associés fonctionnaient tous avec une logique TTL standard sous 5 volts, l'interfaçage avec les ordinateurs était un jeu d'enfant, et vous pouviez créer votre propre micrologiciel personnalisé en un rien de temps (bien que le matériel n'était pas bon marché à l'époque).

C'était fantastique jusqu'au milieu et à la fin des années 90, lorsque les PC sont devenus plus puissants, que les microcontrôleurs ont commencé à intégrer leurs EEPROMs dans la mémoire flash, et que de nouvelles interfaces de programmation faciles à utiliser sur un port parallèle se sont développées. Vous pouviez programmer des plates-formes depuis les dérivés de l'Intel 8051 (par exemple, l'Atmel AT89S8252 avec sa mémoire flash intégrée) jusqu'aux favoris de la fin des années 90 et du début des années 2000, la série des microcontrôleurs PIC,  sans tensions spéciales, sans équipement sophistiqué (oui, vous pouviez câbler le port parallèle directement à la puce) et sans effaceurs d'EPROM ultraviolets (même si ceux-ci étaient amusants !).
 
20230208124454_at89s8252-board.png
Une carte à microcontrôleur AT89S8252 à usage général qui pouvait être programmée directement depuis le port parallèle du PC.

Non seulement l'interfaçage du matériel était facile, mais les systèmes d'exploitation PC de l'époque (du DOS au début de Windows 98) pouvaient communiquer directement avec le matériel à la demande de l'utilisateur, sans aucun obstacle paranoïaque de sécurité virtuelle pour barrer le chemin. Depuis QBASIC ou DEBUG, vous pouviez activer et désactiver les bits du port de l'imprimante. Vous pouviez même fixer des LED directement dans les broches du port et programmer vos propres chenillards lumineux comme dans la série télévisée K-2000.

Ensuite pour un court instant ce fut une époque un peu plus sombre.

Premièrement, les systèmes d'exploitation ont pris la sécurité plus au sérieux. Cela signifiait que vous ne pouviez pas simplement dire « Hé, ordinateur, active maintenant tous les bits du port parallèle » ou « envoie rapidement cet octet vers l'UART série » à partir de l'invite de commande. À partir des versions ultérieures de Windows 98, en passant par XP et à l'avenir, l'ordinateur vous demandera probablement qui vous êtes, et pourquoi vous trafiquez ses bits internes - à moins, bien sûr, que vous ne vouliez faire preuve de fantaisie et apprendre une programmation Windows plus sophistiquée, écrire des pilotes et... euh.

Je ne parle pas de Linux, qui était peu utilisé comme principal ordinateur de bureau polyvalent.

De plus, le système d'exploitation cachait le logiciel ; le matériel commençait également à faire obstacle. L'USB est arrivé, et les simples ports série et parallèles natifs (c'est-à-dire proches des connexions directes au microprocesseur) ont commencé à disparaître. Et l'USB était un cauchemar complexe par rapport à l'époque de la liberté de programmation des ports parallèles et sériels. Maintenant, pour programmer un simple dispositif PIC à 8 broches, il fallait du matériel coûteux et un environnement de développement, tel que MPLAB et ICD 2 de Microchip, qui pouvait se connecter à votre PC via USB, mais nécessitait un pilote spécial, était livré avec un CD-ROM... J'en possède encore un, mais il ne me rappelle pas de bons souvenirs.
 
20230208125422_image.png
Une des (nombreuses) solutions de Microchip pour programmer les puces PIC. Source : Microchip

C'est vers 2007 environ, avec le lancement du premier Arduino, que les gens ont recommencé à prendre les makers moyens au sérieux. Les premiers Raspberry Pi ont suivi en 2012. Tout d'un coup, après cet affreux contretemps dans la pépinière des makers , vous pouviez connecter votre carte de développement à votre PC rapidement et facilement, écrire un code rapide pour essayer quelque chose à la volée, en ayant ainsi à nouveau un accès immédiat à l'informatique physique, de sorte que vous pouviez faire clignoter des LED, des buzzers et faire tourner des servos à votre convenance.

Ces deux géants de la carte de dévelopement ont abordé la question sous des angles différents : L'Arduino était doté d'un simple microcontrôleur, et pouvait faire des choses simples à peu de frais et facilement. À l'autre bout du spectre se trouvait le Raspberry Pi : Un ordinateur à part entière, doté d'un stockage de masse et d'un système d'exploitation, comme les PC d'autrefois, mais avec le retour de ces merveilleux GPIO.

Entre les deux, il y avait une sorte de gouffre béant. Les gens se demandaient lequel était le meilleur, le Raspberry Pi ou l'Arduino. Les adeptes du RPi disaient que l'Arduino était trop simple. Les fans de l'Arduino disaient que le Pi était trop complexe. En fait, les deux pourraient avoir raison car les cartes répondent à des besoins différents. Les deux plateformes ont étendu leurs offres dans le no-man's land : Arduino a créé des cartes plus grandes, plus rapides et plus complexes, tandis que Raspberry Pi a créé des versions réduites et moins chères du Pi, comme la série Pi Zero. Les plateformes sont désormais si proches qu'il suffit d'un rien pour franchir la distance qui les sépare.

Voici le Raspberry Pi Pico. Avec son microcontrôleur RP2040, il représente un changement de concept pour le Raspberry Pi. Il n'a rien à voir avec ses grands frères, puisqu'il n'a pas de capacité de stockage de masse intégrée, pas de système d'exploitation Linux, et la méthode la plus populaire pour le programmer est l'utilisation de Python.
 
200711-014-94-original-17829-raspberry-pi-pico-01jpg.png
Le Raspberry Pi Pico

Le microcontrôleur RP2040, cependant, représente toujours la bonne vieille éthique du microcontrôleur, et oui, vous pouvez le programmer directement dans son langage assembleur natif. Pour les audacieux, et si cela vous tente, il dispose d'un manuel technique de 636 pages. Oui, la puce est de la taille de quelque chose de petit, et pourtant elle possède un répertoire (vous vous en souvenez ?) pour expliquer toutes ses fonctions.
 
20230208130405_rp2040-page-31.png
En weekend entrain de lire quelques pages du RP2040 parmi les 636 que compte le manuel.  
 
C'est pourquoi je suis heureux d'être tombé sur les vidéos YouTube de Will Thomas sur la programmation du RP2040 en bas niveau, en langage assembleur. Commencez par le bas de la page YouTube, où il commence par un exposé d'introduction dans la première vidéo, expliquant pourquoi vous voudriez faire quelque chose d'aussi fou que de programmer en assembleur dans les années 2020.
 
 
Je ne l'aurait pas aussi bien expliqué que lui.

Dans la deuxième vidéo, vous réalisez déjà le « Hello World » en assembleur dans le RP2040, même si dans ce cas cela veut dire faire clignoter la LED : 
 
 

J'ai hâte de visionner avec beaucoup plus d'attention ses autres vidéos, et je vous recommande de consulter sa chaîne si vous êtes également intéressé par ce genre de choses !

Traduction : Laurent RAUBER