Le Processeur éducatif nommé Scott

À cette période de l’année, à l’université, c’est le summum, le sommet de la course vers la quête de l’apprentissage pour les étudiants. J’ai pu visualiser récrément une excellente vidéo sur le thème qui intéresse particulièrement les étudiants du Module Architecture des Ordinateurs, la vidéo en bas est plus centrée sur la micro-architecture, le narrateur explique le fonctionnement interne d’un processeur, avec en plus son interaction avec les autres composants d’un PC, comme la RAM, le moniteur et le clavier.

Processeur de l’intérieur

Le processeur en question est le processeur Scott, c’est un processeur académique développé par John Scott, le processeur reste comme un processeur simpliste par rapport aux processeurs actuels, mais les concepts de base restent les mêmes. John Scott a probablement acquis les bases de la conception Hardware et la conception des processeurs tout au long de sa carrière en travaillant à la silicon valley dans des entreprises comme Intel et IBM. La conception de ce processeur a abouti au final à un livre ; But How Do It Know? – The Basic Principles of Computers for Everyone, plusieurs autres éléments et informations sont accessibles sur le site consacré à ce livre, www.buthowdoitknow.com

Arduino cheat sheet

Le terme cheat sheet désigne littéralement en Français feuille de copiage, quelque chose que les profs méprisent particulièrement, mais dans ce cas-ci c’est pour la bonne cause. Les cheat sheets ou encore appelés quick refererece ou encore memento, sont généralement des images de grande taille contenant l’essentiel et juste nécessaire formules, concepts ou règles pour un domaine scientifique ou une technologie donnée. Par exemple pour les 2 cheat sheets d’Arduino en bas on trouve les principales formes d’instruction de programmation d’Arduino (quasi identique au C++), les bibliothèques, les caractéristiques matérielles…etc., c’est juste pour titre référentiel ou pour s’en rappeler mais pas pour apprendre ou maîtriser cette technologie. Les cheat sheets y on a pour tous les domaines, mathématiques, physique, chimie, électronique, langages de programmation…etc. Cliquez sur l’image pour agrandir, et utilisez le zoom pour le PDF

Arduino cheat sheet
Arduino-cheatsheet

Le processeur MOS 6502

Personnellement le processeur MOS 6502 est l’un de mes processeurs préférés, pour plusieurs bonnes raisons à mon point de vue, c’est un processeur 8 bits relativement simple avec un jeu d’instructions en tout de 56 instructions, qui en dépit de sa simplicité reste un processeur robuste avec des mécanismes dans son assembleur qui le rendent plus puissant, notamment ses douzaines (ou plus) de modes d’adressage. Le 6502 est aussi un processeur avec un énorme succès commercial, notamment son intégration dans d’importantes machines des années 80, comme le Apple-1, le Apple-2, Commodore PET et 64, la Nintendo NES, Atari 2600…etc. La vidéo en bas est celle d’une conférence sur le processeur, elle est présentée par un nom bien connu dans le domaine du hack du Hardware rétro, c’est Michael Stail (voici son blog), actuellement il est entrain de développer le noyau software d’une nouvelle machine rétro appelée Cammander X16 (plus de détails sur le lien).

Il faut savoir que la présentation est technique, destinée principalement à des connaisseurs dans le domaine, des fins d’études, des doctorants/chercheurs, des hackeurs…etc. Une bonne partie ne serait pas totalement compréhensible par des étudiants de 1-ière ou 2-ème année, mais ça reste toujours une excellente présentation pour avoir une petite idée sur le processeur 6502 et le Hardware en général. La présentation traite trois parties, la 1-ière est celle de l’architecture du processeur, les registres programmables, le jeu d’instructions, les modes d’adressages…etc., ce qui se fait généralement dans un module d’Architecture des Ordinateur. La 2-ème est celle de la microarchitecture, concernant la construction matérielle interne du processeur, sachant qu’un grand travail de reverse engineering a été fait sur le processeur pour comprendre sa microarchitecture, puisque à la base ce processeur est commercial et sa microarchitecture n’a jamais été rendue publique. Et dernièrement, l’extraction des connaissances et l’expertise du fonctionnement du processeur, et une compréhension poussée de son fonctionnement au-delà de son manuel, en créant un simulateur du processeur au niveau transistor (lien du simulateur online), comprendre les bugs hardware et les instructions non documentées…etc. Bon visionnage.

Programmation online des machines rétro

La programmation sur des machines anciennes est très en vogue ces derniers temps, c’est une manière très particulière et plaisante de programmer, dans le sens où la programmation est de très bas niveau, pas de langage évolué, le plus souvent c’est de l’assembleur, le langage C au plus, ça implique aussi une maîtrise totale de l’architecture, car il n’y a pas de système d’exploitation ni de pilote pour les périphériques, ni aucune couche intermédiaire pour faciliter la programmation. Dans un sens c’est très pédagogique dans l’apprentissage des architectures des ordinateurs.

Machines programmables sur 8bitworkshop.com

Le site web 8 bit workshop est un site qui offre plusieurs machines rétro à programmer, dont les consoles Nintendo NES, l’Atari 2600, le PC Apple II+, des machines de jeux arcades…etc, comme c’est présenté sur l’image en haut. L’interface du site web est représentée sur l’image en bas. L’avantage d’utiliser la programmation online est d’éviter de faire l’installation de tous les outils nécessaire pour faire ce type de programmation, comme un éditeur de texte, un assembleur/compilateur, un émulateur, un éditeur de graphique, un débogueur…etc, ça permet aussi de faire la sauvegarde online, et de profiter directement de plusieurs exemples à tester sur le site. Si vous envisagez autrement de faire la même chose sur PC, pour programmer la NES par exemple vous aurez besoin d’installer Notepad++ (ou autres) comme éditeur de texte pour écrire le code source, de cc65 pour compiler/assembler le code, c’est une chaîne à outils pour le processeur 6502 (le processeur de la NES) qui contient entre autres un assembleur, un compilateur C, un éditeur de liens, un débogueur…etc. Mesen un émulateur pour faire tourner votre jeu sur PC comme s’il était sur une machine NES réel, il fait aussi office d’un excellent débogueur. De Asprite et Tiled pour réaliser des graphismes compatibles avec la NES…etc.

Interface de l’IDE NES du site web 8 bit workshop

,Dans tous les cas, la programmation sur les machines rétro donne au programmeur un contrôle total de la machine et ainsi une compréhension accrue du hardware, avec en plus un degré plus élevé de complexité. Tandis que les machines modernes sont plus faciles à programmer mais le prix de cette facilité c’est au détriment de plusieurs couches logicielles, comme les pilotes, les API, le système d’exploitation, qui masquent au programmeur le fonctionnement réel de la couche matériel.

La carte Arduino

Réellement Arduino est un terme qui peut désigner plusieurs choses en même temps, ça peut désigner le hardware qui est une carte sous forme de Kit pour microcontrôleur, comme sur l’image en bas à gauche. Ça peut aussi désigner le software, c’est un IDE pour développer ce qu’on appel des Sketchs, ce sont des programmes à exécuter sur le microcontrôleur de la carte Arduino, c’est représenté sur la photo en bas à droite. Le terme peut aussi designer le projet open source qui englobe le hardware et le software et une communauté réputée très active avec énormément de projets utilisant Arduino (pour plus d’information vous pouvez voir le site web officiel d’Arduino, ou sa définition sur Wikipédia).

La carte Arduino à gauche et l’IDE Arduino à droite

Autrement dit l’Arduino est un microcontrôleur 8 bits, initialement c’était le Atmega 328 de marque AVR, il est programmable avec l’IDE Arduino utilisant un langage spécifique sous forme d’un sous-ensemble du langage C/C++, Actuellement il existe des Arduino à base de microcontrôleur à plus grande puissance comme ceux d’ARM ou d’Intel. Mais pour bien comprendre Arduino il faut tout d’abord définir c’est quoi un microcontrôleur ? Le microcontrôleur est un processeur avec une RAM, une ROM/Mémoire Flash et beaucoup de connecteurs d’entrées/sorties, le tout est encapsulé sur une même puce (comme la puce sur la carte Arduino sur l’image en haut). Le microcontrôleur en soit est de très faible puissance, le processeur est de fréquence de 10 à 100 Mhz, la RAM est de quelques kilo-octets, de même pour la ROM et la mémoire flash. Le microcontrôleur et contrairement à un processeur normal, est destiné pour les systèmes embarqués, il est utilisé à l’intérieur des appareils électroniques pour les contrôler et potentiellement les programmer, on peut les trouver par exemple dans les machine à laver, les robots de cuisine, les imprimantes, les scanners, les voitures, les machines à distributions automatiques…etc, ce sont tous des appareils qui utilisent les microcontrôleurs pour contrôler leur fonctionnement interne, vous pouvez apercevoir quelques exemples sur l’image en bas.

Quelques exemples d’appareils électroniques utilisant les microcontrôleurs

Les microcontrôleurs ont toujours existé, pour plus de 20 ans au moins. À l’université par exemple, au département de l’électronique ont (avant la démocratisation d’Arduino) toujours été connu pour l’utilisation du microcontrôleur PIC, néanmoins ce dernier reste extrêmement difficile à programmer, les étudiants en général ne pouvaient l’utiliser qu’après 5 années d’études. L’Arduino au contraire est extrêmement accessible, pratiquement un étudiant de première année avec quelques connaissances en programmation en C/C++ comme les tests, les boucles et les fonctions, peut facilement programmer sur Arduino. La plate forme Arduino facilite grandement l’utilisation des microcontrôleurs pour les projets concernant des domaines comme les systèmes embarqués, le hardware, le hack, la robotique et l’électronique, vous pouvez voir quelques projets en Arduino sur les images en bas.

Exemples de projets à base d’Arduino

Il existe plusieurs variantes de l’Arduino actuellement disponibles, mais 3 d’entre elles sont plus connus parmi tous les autres, elles sont représentées sur l’image en bas de gauche à droite : l’Arduino uno, c’est l’Arduino standard, l’Arduino nano, c’est l’Arduino minimaliste, et l’Arduino mega, la version étoffée et complète d’Arduino. Tous les trois sont disponibles en Algérie avec des prix abordables pour l’étudiant, allant de 1200 DA à 4500 DA dans les vendeurs locaux d’électronique ou sur Ouedkniss. Plusieurs autres accessoires sont aussi disponibles pour réaliser différents types de projets, vous pouvez voir par exemple sur l’image tout en bas des accessoires comme, des capteurs de distance, des afficheurs, des LEDs, des moteurs, une télécommande, transmission sans fils…etc. L’Arduino reste à mon avis la meilleure porte pour l’étudiant lui permettant d’entrer dans le domaine des systèmes embarqués même pour les étudiants en première année.

De gauche à droite : Arduino uno, Arduino nano, Arduino mega
Accessoires utilisables avec Arduino

Conception Hardware dans le jeu Minecraft

Le jeu Minecraft est un jeu vidéo très populaire, réellement il s’agit du jeu vidéo le plus vendu au monde à ce jour. C’est un jeu de type SandBox dans lesquel le gameplay est axé sur la modification, la création et la destruction de l’environnement dans lequel théoriquement le joueur peut modeler et construire n’importe quel maison, building, bâtiment, ou même des villes entières à base de petits cubes qu’il peut disposer à volonté dans le jeu. Le jeu aussi dispose d’un élément appelé Redstone qui permet au joueur de construire des circuits numérique à base de portes logiques et de cellules mémoires de type latch et flipflop, la communauté du jeu a réussi a construire de fabuleux machines numériques entières comme des calculatrices, des processeurs, des téléphones, des robots, des machine automatiques…etc.

Calculatrice en Minecraft Redstone

La vidéo est une introduction d’une série de tutoriaux sur la chaîne youtube de Qubit, pour apprendre comment avec Minecraft pouvoir construire une calculatrice simple et fonctionnelle d’une manière bien détaillée en utilisant des portes logiques et des cellules mémoires.