
Un jour j'ai eu l'idée folle d'apporter . 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, j'ai eu une autre idée folle. Cette fois, pas du tout spectaculaire, mais bien plus utile. J'y ai aussi passé beaucoup de temps. Et dans cet article, je vous 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 créé un logo (j'ai dessiné pendant 5 minutes).

Для тех, кто мыслит терминами Arduino, можно сказать, что Nanonyam это виртуальный ардуино-шилд для управления Windows.
Другими словами, Nanonyam это виртуальная машина, в которой в качестве байт-кода используется прошивка для микроконтроллера AVR (рекомендуется ATMEGA2560). Внутри этой виртуальной машины находится симулятор ядра AVR, но вместо периферийных устройств, которые располагаются по адресам SRAM от 0x0060 до 0x01FF, находится специальный интерфейс к виртуальным функциям (в том числе функциям Windows API). И тут очень важно сразу уяснить: код для Nanonyam не должен иметь никаких обращений к указанному диапазону памяти, чтобы случайно не вызвать, например, функцию удаления файлов или форматирования диска. Остальной диапазон памяти SRAM от 0x0200 до 0xFFFF (это больше, чем в реальном микроконтроллере) доступен пользователю для любых целей. Сразу отмечу, что имеется специальная защита от случайного запуска прошивки реального микроконтроллера (или прошивки от другой архитектуры): прежде, чем активировать «опасные» функции, нужно вызвать специальную хитрую виртуальную функцию. Есть и некоторые другие элементы защиты.
Pour créer des programmes pour Nanonyam, vous devez utiliser des bibliothèques spéciales qui implémentent toutes les fonctions virtuelles actuellement disponibles. Téléchargez la machine virtuelle Nanonyam et ses bibliothèques . Mais l' . Et oui, mon site est très primitif et pas adapté aux appareils mobiles.
Nanonyam est gratuit pour un usage domestique et commercial. Le programme Nanonyam est fourni "tel quel". Le code source n'est pas fourni.
На данный момент программа находится в стадии тестирования. Реализовано около 200 виртуальных функций, которые позволяют создавать простые программы для Windows.
Évidemment, créer quelque chose de compliqué dans une telle machine virtuelle ne fonctionnera pas, car la mémoire pour le code n'est que de 256 Ko. Les données peuvent être stockées dans des fichiers séparés, le tampon de la partie graphique est implémenté en externe. Toutes les fonctions sont simplifiées et adaptées à l'architecture 8 bits.
Que pouvez-vous faire à Nanonyam ? J'ai rencontré quelques problèmes.
Développement de blocs de programme
Une fois, j'ai eu besoin de concevoir un menu complexe pour un affichage graphique de 128x64 points. Je ne voulais vraiment pas charger constamment le firmware dans un vrai microcontrôleur pour voir à quoi ressemblent les pixels. Et c'est ainsi que l'idée de Nanonyam est née. La figure ci-dessous montre une image d'un véritable écran OLED de l'un des éléments du même menu. Maintenant, je peux travailler dessus sans véritable appareil.

Nanonyam (dans son idée finale) est un bon outil pour élaborer des blocs de programme pour les 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 des ports COM (voici un élément séparé).
Création de programmes rapides
Par exemple, vous devez traiter rapidement 100500 XNUMX fichiers texte. Chacun 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 arduino endurci (et il y en a beaucoup), alors Nanonyam vous aidera à résoudre ce problème. C'est mon deuxième objectif dans Nanonyam : ajouter de nombreuses fonctions utiles telles que le traitement de texte, la prise de captures d'écran ou la simulation de frappes au clavier dans le système (qui, soit dit en passant, sont déjà là), ainsi que de nombreuses autres fonctions pour résoudre des tâches de routine .
Test du matériel 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 des données à partir de fichiers pour analyse. Un outil pratique pour le débogage et l'étalonnage simples du matériel, ainsi que pour la création de panneaux de commande d'instruments virtuels simples. Pour les étudiants et les jeunes scientifiques, ce projet peut être très utile.
Formation à la programmation
Cependant, comme pour l'ensemble du projet Arduino, l'utilité principale de Nanonyam réside dans la simplification des fonctions, de l'interface et du bootloader. Par conséquent, ce projet devrait intéresser les programmeurs novices et ceux qui sont satisfaits du niveau d'arduino. Soit dit en passant, je n'ai toujours pas étudié 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 tout à fait fonctionnel.
Bonjour Habr!
Il est temps de se familiariser avec certaines fonctionnalités de Nanonyam et d'écrire un programme simple. Nous allons écrire dans Arduino, mais pas de la manière habituelle, mais de la manière dont je peux maintenant (j'ai déjà dit que je n'avais pas encore très bien compris cet environnement). Tout d'abord, créez un nouveau croquis et sélectionnez la carte Mega2560.

Enregistrez l'esquisse dans un fichier et copiez ensuite . Il serait correct d'inclure les en-têtes des bibliothèques, mais je ne sais pas comment écrire une compilation de fichiers individuels dans Arduino, donc pour l'instant nous allons simplement inclure les bibliothèques directement (et toutes à la fois) :
#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"Il serait encore plus correct de faire un module spécial "Nanonyam pour Arduino", qui peut être installé directement depuis Arduino. Dès que j'aurai compris, je le ferai, mais pour l'instant je ne fais que montrer l'essence du travail avec une machine virtuelle. Nous écrivons le code suivant :
//Сразу после запуска рисуем текст в окне
void setup() {
sys_Nanonyam();//Подтверждаем код виртуальной машины
g_SetScreenSize(400,200);//Задаём размер дисплея 400х200 точек
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);//Задержка и разгрузка процессора
}Dessinez avec ce programme . Description détaillée des fonctions . J'espère que les commentaires dans ce code sont suffisants pour en comprendre l'essentiel. Fonction ici sys_Nanonymam() joue le rôle d'un "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.
Nous appuyons sur le bouton "Vérifier" et il ne devrait pas y avoir d'erreurs.

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

Cela copiera deux fichiers HEX dans le dossier d'esquisse. Nous ne prenons que le fichier sans le préfixe "with_bootloader.mega".
Il existe plusieurs façons de spécifier un fichier HEX à la machine virtuelle Nanonyam, toutes sont décrites . Je suggère de créer à côté du fichier Nanonyam.exe файл chemin, dans lequel enregistrer le chemin complet vers notre fichier HEX. Après quoi vous pouvez courir Nanonyam.exe. Nous obtenons une fenêtre avec notre inscription.

De même, vous pouvez créer des programmes dans d'autres environnements, tels que AVR Studio ou WinAVR.
C'est là que nous terminons notre connaissance de Nanonyam. L'idée principale doit être claire. . S'il y a suffisamment de personnes prêtes à utiliser ce projet, je ferai plus d'exemples et continuerai à "remplir" les bibliothèques de fonctions virtuelles. Les idées concrètes pour le développement du projet et les rapports de dysfonctionnements, bugs et bugs sont acceptés. Il est conseillé de les diriger vers des contacts, . Et la discussion est la bienvenue dans les commentaires.
Merci à tous pour votre attention et bonne programmation !
Source: habr.com
