Comment créer des programmes Windows dans Arduino



Une fois, j'ai eu l'idée folle d'apporter 500 pointeurs laser au même endroit . J'ai passé beaucoup de temps et je l'ai fait. Cela s'est avéré spectaculaire et inutile, mais j'ai bien aimé. Il y a six mois, une autre idée folle m'est venue. Cette fois pas du tout spectaculaire, mais bien plus utile. J'ai également passé beaucoup de temps dessus. Et dans cet article, je présente une version bêta de ma deuxième idée folle.

J'ai appelé le projet Nanonyam (Nanonyam) et j'ai même trouvé un logo pour cela (j'ai peint pendant 5 minutes).



Pour ceux qui pensent en termes d'Arduino, nous pouvons dire que Nanonyam est un bouclier Arduino virtuel pour gérer Windows.

En d'autres termes, Nanonyam est une machine virtuelle qui utilise le micrologiciel du microcontrôleur AVR comme bytecode (ATMEGA2560 recommandé). À l'intérieur de cette machine virtuelle se trouve le simulateur de noyau AVR, mais au lieu de périphériques situés à des adresses SRAM de 0x0060 à 0x01FF, il existe une interface spéciale pour les fonctions virtuelles (y compris les fonctions API Windows). Et ici, il est très important de comprendre immédiatement: le code de Nanonyam ne doit pas avoir accès à la plage de mémoire spécifiée, afin de ne pas appeler accidentellement, par exemple, la fonction de suppression de fichiers ou de formatage du disque. Le reste de la plage de mémoire SRAM de 0x0200 à 0xFFFF (c'est plus que dans un vrai microcontrôleur) est à la disposition de l'utilisateur pour n'importe quel but. Je note tout de suite qu'il existe une protection spéciale contre le démarrage accidentel du firmware d'un vrai microcontrôleur (ou firmware d'une architecture différente): avant d'activer les fonctions "dangereuses", vous devez appeler une fonction virtuelle spéciale délicate. Il existe d'autres fonctionnalités de sécurité.

Pour créer des programmes pour Nanonyam, vous devez utiliser des bibliothèques spéciales qui implémentent toutes les fonctions virtuelles actuellement disponibles. Vous pouvez télécharger la machine virtuelle Nanonyam et ses bibliothèques ici . Et voici la page de description des fonctions virtuelles . Et oui, mon site est très primitif et non adapté aux appareils mobiles.

Nanonyam est gratuit pour un usage domestique et commercial. Nanonyam est «tel quel». Code source non fourni.

Pour le moment, le programme est en phase de test. Environ 200 fonctions virtuelles ont été implémentées qui vous permettent de créer des programmes simples pour Windows.
Évidemment, créer quelque chose de compliqué dans une telle machine virtuelle ne fonctionnera pas, car la mémoire du code n'est que de 256 ko. Les données peuvent être stockées dans des fichiers séparés, un tampon pour la partie graphique est implémenté en externe. Toutes les fonctions sont simplifiées et adaptées à l'architecture 8 bits.

Que peut-on faire à Nanonyam? J'ai trouvé plusieurs tâches.

Développement de blocs de programme


Une fois, j'avais besoin de développer un menu complexe pour un affichage graphique à 128x64 points. Je ne voulais vraiment pas télécharger constamment le firmware dans un vrai microcontrôleur pour voir à quoi ressemblent les pixels. L'idée de Nanonyam est donc née. Dans la figure ci-dessous, l'image de l'affichage OLED réel de l'un des éléments du même menu. Maintenant, je peux travailler sans véritable appareil.



Nanonyam (dans son idée finale) est un bon outil pour élaborer des blocs logiciels pour microcontrôleurs, car il existe des fonctions pour travailler avec des graphiques (vous pouvez simuler des affichages et des indicateurs), avec des fichiers (vous pouvez créer des journaux, lire des données de test), avec un clavier (vous pouvez lire jusqu'à 10 boutons en même temps), avec ports COM (voici un élément séparé).

Créez des programmes rapides


Par exemple, vous devez traiter rapidement 100 500 fichiers texte. Tout le monde doit être ouvert, légèrement modifié selon un algorithme simple, enregistré et fermé. Si vous êtes un maître Python, alors je vous félicite, vous avez tout. Mais si vous êtes un travailleur arduino invétéré (et il y en a beaucoup), Nanonyam vous aidera à résoudre ce problème. C'est exactement mon deuxième objectif dans Nanonyam: ajouter de nombreuses fonctions utiles telles que le traitement de texte, la création de captures d'écran ou la simulation de frappes dans le système (ce qui, soit dit en passant, est déjà là), ainsi que de nombreuses autres fonctions pour résoudre les tâches de routine.

Test des glandes via le port COM


Nanonyam peut agir comme un terminal qui fonctionne selon votre algorithme. Vous pouvez dessiner un petit menu pour contrôler l'appareil et afficher les données reçues du port. Vous pouvez enregistrer et lire les données des fichiers pour analyse. Un outil pratique pour le débogage et l'étalonnage simples des glandes, ainsi que pour la création de simples panneaux de commande d'instruments virtuels. Pour les étudiants et les jeunes scientifiques, ce projet peut être très utile.

Formation à la programmation


Cependant, comme pour tout le projet Arduino, l'utilité principale de Nanonyam est la simplification de ses fonctions, de son interface et de son chargeur de démarrage. Par conséquent, ce projet devrait intéresser les programmeurs débutants et ceux qui sont satisfaits du niveau d'arduino. Soit dit en passant, je n'ai pas encore étudié l'arduino en détail, car j'ai toujours utilisé WinAVR ou AVR Studio, mais j'ai commencé avec l'assembleur. Par conséquent, l'exemple de programme ci-dessous sera un peu faux, mais fonctionnera tout à fait.

Bonjour, Habr!


Il est temps d'apprendre à connaître certaines des fonctionnalités de Nanonyam et d'écrire un programme simple. Nous allons écrire en Arduino, mais pas de la manière habituelle, mais de la manière que je peux maintenant (j'ai déjà dit que je n'avais pas très bien géré cet environnement). Créez d'abord un nouveau croquis et sélectionnez la carte Mega2560.



Enregistrez l'esquisse dans un fichier et copiez la bibliothèque Nanonyam à proximité . Il serait correct d'inclure les en-têtes de bibliothèque, mais je ne sais pas comment écrire la compilation de fichiers individuels dans Arduino, alors pour l'instant il suffit d'activer les bibliothèques directement (et tout d'un coup):

#include <stdio.h> #include "Nanonyam\nN_System_lib.c" #include "Nanonyam\nN_Keyboard_lib.c" #include "Nanonyam\nN_File_lib.c" #include "Nanonyam\nN_Math_lib.c" #include "Nanonyam\nN_Text_lib.c" #include "Nanonyam\nN_Graphics_lib.c" #include "Nanonyam\nN_RS232_lib.c" 

Il serait encore plus correct de réaliser un module spécial «Nanonyam for Arduino», qui peut être installé directement depuis Arduino. Dès que je m'occuperai de cela, je le ferai, mais pour l'instant je vais simplement montrer l'essence du travail avec une machine virtuelle. Nous écrivons le code suivant:

 //       void setup() { sys_Nanonyam();//    g_SetScreenSize(400,200);//   400200  sys_WindowSetText("Example");//  g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//  Windows    0 g_SetExternalFont(0);//   0    g_SetBackRGB(0,0,255);//   g_SetTextRGB(255,255,0);//   g_ClearAll();//  (  ) g_DrawTextCenterX(0,400,70,"Hello, Habr!");//  g_Update();//     } //    void loop() { sys_Delay(100);//    } 

Un croquis avec ce programme peut être téléchargé ici . Recherchez une description détaillée des fonctions sur le site . J'espère que les commentaires dans ce code sont suffisants pour comprendre le point. Ici, la fonction sys_Nanonyam () joue le rôle de «mot de passe» pour la machine virtuelle, ce qui supprime les restrictions sur les fonctions virtuelles. Sans cette fonction, le programme se fermera après 3 secondes de fonctionnement.

Cliquez sur le bouton "Vérifier" et il ne devrait y avoir aucune erreur.



Vous devez maintenant obtenir le fichier binaire (firmware). Sélectionnez le menu " Esquisse >> Exporter un fichier binaire (CTRL + ALT + S) ".



Dans ce cas, deux fichiers HEX seront copiés dans le dossier contenant l'esquisse. Nous prenons uniquement le fichier sans le préfixe "with_bootloader.mega".

Il existe plusieurs façons de spécifier un fichier HEX pour une machine virtuelle Nanonyam, toutes décrites sur cette page . Je suggère de créer le fichier Nanonyam.path à côté du fichier Nanonyam.exe , dans lequel écrire le chemin complet de notre fichier HEX. Ensuite, vous pouvez exécuter Nanonyam.exe . Nous obtenons une fenêtre avec notre inscription.



De même, vous pouvez créer des programmes dans d'autres environnements, par exemple, dans AVR Studio ou WinAVR.

C'est là que nous terminons la connaissance de Nanonyam. L'idée de base doit être claire. Plus d'exemples sont sur le site . S'il y a suffisamment de personnes qui souhaitent utiliser ce projet, alors je vais faire plus d'exemples et continuer à «remplir» les bibliothèques de fonctions virtuelles. Des idées concrètes pour le développement du projet et des rapports sur les dysfonctionnements, les bugs et les erreurs sont acceptés. Il est conseillé de les envoyer aux contacts répertoriés sur le site . Une discussion est la bienvenue dans les commentaires.

Merci à tous pour votre attention et votre bonne programmation!

Source: https://habr.com/ru/post/fr472958/


All Articles