Nekega dne se mi je porodila nora ideja, da bi prinesel
Projekt sem poimenoval Nanonyam (Nanonyam) in zanj celo izmislil logotip (risal sem 5 minut).
Za tiste, ki razmišljajo v smislu Arduina, lahko rečemo, da je Nanonyam virtualni Arduino ščit za nadzor Windows.
Z drugimi besedami, Nanonyam je virtualni stroj, ki kot bajtno kodo uporablja vdelano programsko opremo za mikrokrmilnik AVR (priporočeno je ATMEGA2560). Znotraj tega virtualnega stroja je simulator jedra AVR, vendar je namesto perifernih naprav, ki se nahajajo na naslovih SRAM od 0x0060 do 0x01FF, poseben vmesnik za virtualne funkcije (vključno s funkcijami Windows API). In tukaj je zelo pomembno, da takoj razumemo: koda za Nanonyam ne sme imeti dostopa do določenega obsega pomnilnika, da ne bi slučajno poklicali na primer funkcije brisanja datotek ali formatiranja diska. Preostali del pomnilnika SRAM od 0x0200 do 0xFFFF (to je več kot pri pravem mikrokontrolerju) je uporabniku na voljo za kakršnekoli namene. Takoj ugotavljam, da obstaja posebna zaščita pred nenamernim zagonom vdelane programske opreme pravega mikrokrmilnika (ali vdelane programske opreme iz druge arhitekture): preden aktivirate "nevarne" funkcije, morate poklicati posebno zapleteno virtualno funkcijo. Obstaja tudi nekaj drugih varnostnih funkcij.
Če želite ustvariti programe za Nanonyam, morate uporabiti posebne knjižnice, ki izvajajo vse trenutno razpoložljive virtualne funkcije. Prenesite virtualni stroj Nanonyam in knjižnice zanj
Nanonyam je brezplačen za domačo in komercialno uporabo. Program Nanonyam je na voljo na podlagi "kot je". Izvorna koda ni na voljo.
Program je trenutno v fazi testiranja. Izvedenih približno 200 virtualnih funkcij, ki vam omogočajo ustvarjanje preprostih programov za Windows.
Očitno ustvarjanje nečesa zapletenega v takšnem virtualnem stroju ne bo delovalo, saj je pomnilnik za kodo le 256 kB. Podatki so lahko shranjeni v ločenih datotekah, medpomnilnik za grafični del je implementiran zunaj. Vse funkcije so poenostavljene in prilagojene za 8-bitno arhitekturo.
Kaj lahko počnete v Nanonyamu? Naletel sem na nekaj težav.
Razvoj programskih blokov
Nekoč sem moral oblikovati kompleksen meni za grafični zaslon 128x64 pik. Resnično nisem želel neprestano nalagati vdelane programske opreme v pravi mikrokrmilnik, da bi videl, kako izgledajo slikovne pike. In tako se je rodila ideja o Nanonyamu. Spodnja slika prikazuje sliko iz pravega zaslona OLED enega od elementov v istem meniju. Zdaj lahko to delam brez prave naprave.
Nanonyam (v končni ideji) je dobro orodje za izdelavo programskih blokov za mikrokrmilnike, saj obstajajo funkcije za delo z grafiko (lahko simulirate zaslone in indikatorje), z datotekami (lahko delate dnevnike, berete testne podatke), z tipkovnico (hkrati lahko berete do 10 gumbov), s COM vrati (tukaj je ločen element).
Ustvarjanje hitrih programov
Na primer, hitro morate obdelati 100500 besedilnih datotek. Vsakega je treba odpreti, nekoliko spremeniti po nekem preprostem algoritmu, shraniti in zapreti. Če ste mojster Pythona, potem vam čestitam, imate vse. Če pa ste prekaljeni arduino (in teh je veliko), vam bo Nanonyam pomagal pri reševanju te težave. To je moj drugi cilj v Nanonyamu: dodati številne uporabne funkcije, kot so obdelava besedila, snemanje posnetkov zaslona ali simulacija pritiskov na tipke v sistemu (mimogrede, vse to že obstaja), pa tudi številne druge funkcije za reševanje rutinskih nalog .
Testiranje strojne opreme prek vrat COM
Nanonyam lahko deluje kot terminal, ki deluje v skladu z vašim algoritmom. Narišete lahko majhen meni za nadzor naprave in prikaz podatkov, prejetih iz vrat. Podatke iz datotek lahko shranite in preberete za analizo. Priročno orodje za enostavno odpravljanje napak in kalibracijo strojne opreme ter za ustvarjanje preprostih virtualnih nadzornih plošč instrumentov. Za študente in mlade znanstvenike je ta projekt lahko zelo koristen.
Usposabljanje programiranja
Vendar, tako kot pri celotnem projektu Arduino, je glavna uporabnost Nanonyama v poenostavitvi funkcij, vmesnika in zagonskega nalagalnika. Zato bi moral biti ta projekt zanimiv za programerje začetnike in tiste, ki so zadovoljni s stopnjo arduina. Mimogrede, sam še vedno nisem podrobno preučil arduina, ker sem vedno uporabljal WinAVR ali AVR Studio, začel pa sem z asemblerjem. Zato bo spodnji primer programa nekoliko napačen, a precej delujoč.
Pozdravljeni Habr!
Čas je, da se seznanite z nekaterimi funkcijami Nanonyama in napišete preprost program. Pisali bomo v Arduinu, vendar ne na običajen način, ampak tako, kot ga znam zdaj (sem že rekel, da tega okolja še nisem dobro razumel). Najprej ustvarite novo skico in izberite ploščo Mega2560.
Shranite skico v datoteko in nato 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"
Še bolj pravilno bi bilo narediti poseben modul "Nanonyam za Arduino", ki ga je mogoče namestiti neposredno iz Arduina. Takoj ko bom ugotovil, bom to naredil, vendar zaenkrat samo pokažem bistvo dela z virtualnim strojem. Napišemo naslednjo kodo:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Skica s tem programom
Pritisnemo gumb "Preveri" in napak ne bi smelo biti.
Zdaj morate pridobiti binarno datoteko (firmware). Izberite meni "Sketch>>Izvozi binarno datoteko (CTRL+ALT+S)".
S tem boste kopirali dve datoteki HEX v mapo s skicami. Vzamemo samo datoteko brez predpone "with_bootloader.mega".
Obstaja več načinov za določitev datoteke HEX virtualnemu stroju Nanonyam, vsi so opisani
Podobno lahko ustvarjate programe v drugih okoljih, kot sta AVR Studio ali WinAVR.
Tu zaključimo naše spoznavanje z Nanonyamom. Glavna ideja mora biti jasna.
Hvala vsem za pozornost in dobro programiranje!
Vir: www.habr.com