Jednog dana sinula mi je luda ideja donijeti
Projekt sam nazvao Nanonyam (Nanonjam) i čak mu smislio logo (crtao sam 5 minuta).
Za one koji razmišljaju o Arduinu, možemo reći da je Nanonyam virtualni Arduino štit za kontrolu Windowsa.
Drugim riječima, Nanonyam je virtualni stroj koji koristi firmware za AVR mikrokontroler (preporučuje se ATMEGA2560) kao bajt kod. Unutar ovog virtualnog stroja nalazi se simulator AVR jezgre, no umjesto perifernih uređaja, koji se nalaze na SRAM adresama od 0x0060 do 0x01FF, postoji posebno sučelje za virtualne funkcije (uključujući Windows API funkcije). I ovdje je vrlo važno odmah razumjeti: kod za Nanonyam ne bi trebao imati pristup navedenom rasponu memorije, kako ne bi slučajno pozvao, na primjer, funkciju brisanja datoteka ili formatiranja diska. Ostatak raspona SRAM memorije od 0x0200 do 0xFFFF (ovo je više nego u pravom mikrokontroleru) dostupan je korisniku za bilo koju svrhu. Odmah napominjem da postoji posebna zaštita od slučajnog pokretanja firmvera pravog mikrokontrolera (ili firmvera iz druge arhitekture): prije aktiviranja "opasnih" funkcija morate pozvati posebnu lukavu virtualnu funkciju. Postoje i neke druge sigurnosne značajke.
Za izradu programa za Nanonyam morate koristiti posebne biblioteke koje implementiraju sve trenutno dostupne virtualne funkcije. Preuzmite Nanonyam virtualni stroj i biblioteke za njega
Nanonyam je besplatan za kućnu i komercijalnu upotrebu. Program Nanonyam dostupan je "kakav jest". Izvorni kod nije naveden.
Program je trenutno u fazi testiranja. Implementirano oko 200 virtualnih funkcija koje vam omogućuju stvaranje jednostavnih programa za Windows.
Očito, stvaranje nečeg kompliciranog u takvom virtualnom stroju neće raditi, budući da je memorija za kod samo 256 kB. Podaci se mogu pohraniti u zasebne datoteke, međuspremnik za grafički dio implementiran je eksterno. Sve funkcije su pojednostavljene i prilagođene 8-bitnoj arhitekturi.
Što možete raditi u Nanonyamu? Naišao sam na nekoliko problema.
Izrada programskih blokova
Jednom sam trebao dizajnirati složeni izbornik za grafički zaslon od 128x64 točaka. Stvarno nisam želio stalno učitavati firmware u pravi mikrokontroler da vidim kako pikseli izgledaju. I tako se rodila ideja o Nanonyamu. Slika ispod prikazuje sliku sa stvarnog OLED zaslona jedne od stavki na istom izborniku. Sada mogu raditi kroz to bez pravog uređaja.
Nanonyam (u svojoj konačnoj ideji) je dobar alat za razradu programskih blokova za mikrokontrolere, jer postoje funkcije za rad s grafikom (možete simulirati zaslone i indikatore), s datotekama (možete praviti zapisnike, čitati testne podatke), s tipkovnica (možete čitati do 10 gumba u isto vrijeme), s COM portovima (ovdje je zasebna stavka).
Izrada brzih programa
Na primjer, trebate brzo obraditi 100500 tekstualnih datoteka. Svaku je potrebno otvoriti, malo modificirati po nekom jednostavnom algoritmu, spremiti i zatvoriti. Ako ste majstor Pythona, onda vam čestitam, imate sve. Ali ako ste okorjeli arduino (a ima ih mnogo), onda će vam Nanonyam pomoći u rješavanju ovog problema. Ovo je moj drugi cilj u Nanonyamu: dodati mnoge korisne funkcije kao što su obrada teksta, snimanje zaslona ili simulacija pritisaka na tipke u sustavu (sve to, usput rečeno, već postoji), kao i mnoge druge funkcije za rješavanje rutinskih zadataka .
Testiranje hardvera preko COM porta
Nanonyam može djelovati kao terminal koji radi prema vašem algoritmu. Možete nacrtati mali izbornik za upravljanje uređajem i prikaz podataka primljenih iz priključka. Možete spremati i čitati podatke iz datoteka za analizu. Zgodan alat za jednostavno otklanjanje pogrešaka i kalibraciju hardvera, kao i za stvaranje jednostavnih virtualnih kontrolnih ploča s instrumentima. Za studente i mlade znanstvenike ovaj projekt može biti vrlo koristan.
Trening programiranja
Međutim, kao i kod cijelog Arduino projekta, glavna korisnost Nanonyama leži u pojednostavljenju funkcija, sučelja i bootloadera. Stoga bi ovaj projekt trebao biti zanimljiv programerima početnicima i onima koji su zadovoljni razinom arduina. Usput, još uvijek nisam detaljno proučavao arduino, jer sam uvijek koristio WinAVR ili AVR Studio, ali sam počeo s asemblerom. Stoga će primjer programa u nastavku biti malo pogrešan, ali prilično radi.
Pozdrav Habr!
Vrijeme je da se upoznate s nekim značajkama Nanonyama i napišete jednostavan program. Pisaćemo u Arduinu, ali ne na uobičajeni način, već na način na koji ja sada mogu (već sam rekao da nisam još dobro shvatio ovo okruženje). Prvo napravite novu skicu i odaberite Mega2560 ploču.
Spremite skicu u datoteku i zatim kopirajte
#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"
Bilo bi još ispravnije napraviti poseban modul "Nanonyam za Arduino", koji se može instalirati izravno iz Arduina. Čim skužim, napravit ću to, ali za sada samo pokazujem bit rada s virtualnim strojem. Napišemo sljedeći kod:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Skicirajte ovim programom
Pritisnemo gumb "Provjeri" i ne bi trebalo biti nikakvih pogrešaka.
Sada trebate nabaviti binarnu datoteku (firmware). Odaberite izbornik "Skica>>Izvoz binarne datoteke (CTRL+ALT+S)”.
Ovo će kopirati dvije HEX datoteke u mapu skica. Uzimamo samo datoteku bez prefiksa "with_bootloader.mega".
Postoji nekoliko načina za određivanje HEX datoteke Nanonyam virtualnom stroju, svi su opisani
Slično, možete kreirati programe u drugim okruženjima, kao što su AVR Studio ili WinAVR.
Ovdje završavamo naše upoznavanje s Nanonyamom. Glavna ideja treba biti jasna.
Hvala svima na pažnji i dobrom programiranju!
Izvor: www.habr.com