Un dia vaig tenir la bogeria idea de portar
Vaig trucar al projecte Nanonyam (Nanonyam) i fins i tot vaig fer-hi un logotip (vaig dibuixar durant 5 minuts).
Per a aquells que pensen en termes d'Arduino, podem dir que Nanonyam és un escut Arduino virtual per controlar Windows.
En altres paraules, Nanonyam és una màquina virtual que utilitza firmware per al microcontrolador AVR (es recomana ATMEGA2560) com a bytecode. Dins d'aquesta màquina virtual hi ha un simulador central AVR, però en lloc de perifèrics, que es troben a adreces SRAM de 0x0060 a 0x01FF, hi ha una interfície especial per a funcions virtuals (incloses les funcions de l'API de Windows). I aquí és molt important entendre de seguida: el codi de Nanonyam no hauria de tenir accés a l'interval de memòria especificat, per no trucar accidentalment, per exemple, a la funció d'esborrar fitxers o formatar un disc. La resta del rang de memòria SRAM de 0x0200 a 0xFFFF (això és més que en un microcontrolador real) està disponible per a l'usuari per a qualsevol propòsit. Observo de seguida que hi ha una protecció especial contra el llançament accidental del firmware d'un microcontrolador real (o un firmware d'una altra arquitectura): abans d'activar funcions "perilloses", heu de trucar a una funció virtual especial complicada. També hi ha altres funcions de seguretat.
Per crear programes per a Nanonyam, heu d'utilitzar biblioteques especials que implementin totes les funcions virtuals disponibles actualment. Baixeu la màquina virtual Nanonyam i les biblioteques
Nanonyam és gratuït per a ús domèstic i comercial. El programa Nanonyam es proporciona "tal com està". No es proporciona el codi font.
Actualment el programa es troba en fase de proves. S'han implementat unes 200 funcions virtuals que permeten crear programes senzills per a Windows.
Òbviament, crear quelcom complicat en una màquina virtual d'aquest tipus no funcionarà, ja que la memòria del codi només és de 256 kB. Les dades es poden emmagatzemar en fitxers separats, el buffer per a la part gràfica s'implementa externament. Totes les funcions es simplifiquen i s'adapten a l'arquitectura de 8 bits.
Què pots fer a Nanonyam? Em van plantejar uns quants problemes.
Desenvolupament de blocs de programes
Una vegada vaig necessitar dissenyar un menú complex per a una pantalla gràfica de 128 x 64 punts. Realment no volia carregar constantment el microprogramari en un microcontrolador real per veure com es veuen els píxels. I així va néixer la idea de Nanonyam. La figura següent mostra una imatge d'una pantalla OLED real d'un dels elements del mateix menú. Ara puc treballar-hi sense un dispositiu real.
Nanonyam (en la seva idea final) és una bona eina per elaborar blocs de programes per a microcontroladors, ja que hi ha funcions per treballar amb gràfics (pots simular pantalles i indicadors), amb fitxers (pots fer registres, llegir dades de prova), amb un teclat (podeu llegir fins a 10 botons alhora), amb ports COM (aquí hi ha un element separat).
Creació de programes ràpids
Per exemple, heu de processar ràpidament 100500 fitxers de text. Cadascun s'ha d'obrir, modificar lleugerament segons un algorisme senzill, guardar i tancar. Si ets un mestre de Python, aleshores et felicito, ho tens tot. Però si sou un arduino endurit (i n'hi ha molts), Nanonyam us ajudarà a resoldre aquest problema. Aquest és el meu segon objectiu a Nanonyam: afegir moltes funcions útils com processar textos, fer captures de pantalla o simular pulsacions de tecles al sistema (totes les quals, per cert, ja hi són), així com moltes altres funcions per resoldre tasques rutinàries. .
Prova de maquinari a través del port COM
Nanonyam pot actuar com un terminal que funciona segons el vostre algorisme. Podeu dibuixar un petit menú per controlar el dispositiu i mostrar les dades rebudes del port. Podeu desar i llegir dades dels fitxers per analitzar-los. Una eina pràctica per a la depuració i el calibratge senzills de maquinari, així com per crear panells de control d'instruments virtuals senzills. Per a estudiants i joves científics, aquest projecte pot ser molt útil.
Formació en programació
Tanmateix, com amb tot el projecte Arduino, la principal utilitat de Nanonyam rau en la simplificació de funcions, interfície i carregador d'arrencada. Per tant, aquest projecte hauria de ser d'interès per als programadors novells i els que estan satisfets amb el nivell d'arduino. Per cert, jo encara no he estudiat arduino en detall, perquè sempre he fet servir WinAVR o AVR Studio, però vaig començar amb assemblador. Per tant, el programa d'exemple següent serà una mica incorrecte, però funcionarà bastant.
Hola Habr!
És hora de familiaritzar-se amb algunes característiques de Nanonyam i escriure un programa senzill. Escriurem en Arduino, però no de la manera habitual, sinó de la manera que puc ara (ja he dit que encara no he descobert molt bé aquest entorn). Primer, creeu un nou esbós i seleccioneu el tauler Mega2560.
Deseu l'esbós en un fitxer i copieu-lo a continuació
#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"
Seria encara més correcte fer un mòdul especial "Nanonyam per a Arduino", que es pugui instal·lar directament des d'Arduino. Tan bon punt ho descobri, ho faré, però de moment només estic mostrant l'essència de treballar amb una màquina virtual. Escrivim el següent codi:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Esbós amb aquest programa
Premem el botó "Comprovar" i no hi hauria d'haver cap error.
Ara necessiteu obtenir un fitxer binari (firmware). Seleccioneu el menú "Esbós>>Exporta el fitxer binari (CTRL+ALT+S)".
Això copiarà dos fitxers HEX a la carpeta d'esbós. Agafem només el fitxer sense el prefix "with_bootloader.mega".
Hi ha diverses maneres d'especificar un fitxer HEX a la màquina virtual Nanonyam, totes es descriuen
De la mateixa manera, podeu crear programes en altres entorns, com AVR Studio o WinAVR.
Aquí és on acabem el nostre coneixement amb Nanonyam. La idea principal ha de ser clara.
Gràcies a tots per la vostra atenció i bona programació!
Font: www.habr.com