Eräänä päivänä minulla oli hullu idea tuoda mukanani
Nimesin projektin Nanonyam (Nanonyam) ja jopa keksin sille logon (piirsin 5 minuuttia).
Niille, jotka ajattelevat Arduinoa, voimme sanoa, että Nanonyam on virtuaalinen Arduino-kilpi Windowsin ohjaamiseen.
Toisin sanoen Nanonyam on virtuaalikone, joka käyttää AVR-mikro-ohjaimen laiteohjelmistoa (suositus on ATMEGA2560) tavukoodina. Tämän virtuaalikoneen sisällä on AVR-ydinsimulaattori, mutta oheislaitteiden, jotka sijaitsevat SRAM-osoitteissa 0x0060 - 0x01FF, sijasta on erityinen käyttöliittymä virtuaalitoimintoihin (mukaan lukien Windows API -toiminnot). Ja tässä on erittäin tärkeää ymmärtää heti: Nanonyam-koodilla ei pitäisi olla pääsyä määritettyyn muistialueeseen, jotta se ei vahingossa kutsuisi esimerkiksi tiedostojen poistamista tai levyn alustamista. Loput SRAM-muistialueesta 0x0200 - 0xFFFF (tämä on enemmän kuin todellisessa mikro-ohjaimessa) on käyttäjän käytettävissä mihin tahansa tarkoitukseen. Huomaan heti, että todellisen mikro-ohjaimen laiteohjelmiston (tai laiteohjelmiston toisesta arkkitehtuurista) vahingossa tapahtuvaa käynnistystä vastaan on erityinen suojaus: ennen "vaarallisten" toimintojen aktivoimista sinun on kutsuttava erityinen hankala virtuaalitoiminto. On myös joitain muita turvaominaisuuksia.
Nanonyam-ohjelmien luomiseksi sinun on käytettävä erityisiä kirjastoja, jotka toteuttavat kaikki tällä hetkellä saatavilla olevat virtuaalitoiminnot. Lataa Nanonyam-virtuaalikone ja sen kirjastot
Nanonyam on ilmainen koti- ja kaupalliseen käyttöön. Nanonyam-ohjelma tarjotaan "sellaisenaan". Lähdekoodia ei anneta.
Ohjelma on tällä hetkellä testausvaiheessa. Toteutettu noin 200 virtuaalista toimintoa, joiden avulla voit luoda yksinkertaisia ohjelmia Windowsille.
Ilmeisesti monimutkaisen luominen tällaisessa virtuaalikoneessa ei toimi, koska koodin muisti on vain 256 kB. Tiedot voidaan tallentaa erillisiin tiedostoihin, graafisen osan puskuri toteutetaan ulkoisesti. Kaikki toiminnot on yksinkertaistettu ja mukautettu 8-bittiseen arkkitehtuuriin.
Mitä voit tehdä Nanonyamissa? Keksin muutaman ongelman.
Ohjelmalohkojen kehittäminen
Minun piti kerran suunnitella monimutkainen valikko 128x64 pisteen graafiselle näytölle. En todellakaan halunnut jatkuvasti ladata laiteohjelmistoa oikeaan mikro-ohjaimeen nähdäkseni, miltä pikselit näyttävät. Ja niin syntyi idea Nanonyamista. Alla olevassa kuvassa on kuva todellisesta OLED-näytöstä yhdestä saman valikon kohdasta. Nyt voin työskennellä sen läpi ilman oikeaa laitetta.
Nanonyam (lopullisessa ideassaan) on hyvä työkalu mikro-ohjaimien ohjelmalohkojen työstämiseen, sillä siellä on toimintoja grafiikan (voit simuloida näyttöjä ja indikaattoreita), tiedostojen (voit tehdä lokeja, lukea testitietoja), kanssa toimintoja. näppäimistö (voit lukea jopa 10 painiketta samanaikaisesti), jossa on COM-portit (tässä on erillinen kohde).
Pikaohjelmien luominen
Sinun on esimerkiksi käsiteltävä nopeasti 100500 XNUMX tekstitiedostoa. Jokainen on avattava, muutettava hieman yksinkertaisen algoritmin mukaan, tallennettava ja suljettava. Jos olet Python-mestari, onnittelen sinua, sinulla on kaikki. Mutta jos olet karkaistu arduino (ja niitä on monia), Nanonyam auttaa sinua ratkaisemaan tämän ongelman. Tämä on toinen tavoitteeni Nanonyamissa: lisätä monia hyödyllisiä toimintoja, kuten tekstinkäsittelyä, kuvakaappausten ottamista tai näppäinpainallusten simulointia järjestelmään (jotka kaikki ovat muuten jo olemassa), sekä monia muita toimintoja rutiinitehtävien ratkaisemiseen. .
Laitteiston testaus COM-portin kautta
Nanonyam voi toimia päätelaitteena, joka toimii algoritmisi mukaan. Voit piirtää pienen valikon ohjataksesi laitetta ja näyttääksesi portista saadut tiedot. Voit tallentaa ja lukea tietoja tiedostoista analysointia varten. Kätevä työkalu yksinkertaiseen virheenkorjaukseen ja laitteiston kalibrointiin sekä yksinkertaisten virtuaalisten instrumenttiohjauspaneelien luomiseen. Opiskelijoille ja nuorille tutkijoille tämä projekti voi olla erittäin hyödyllinen.
Ohjelmointikoulutus
Kuitenkin, kuten koko Arduino-projektissa, Nanonyamin tärkein hyöty on toimintojen, käyttöliittymän ja käynnistyslataimen yksinkertaistaminen. Siksi tämän projektin pitäisi kiinnostaa aloittelevia ohjelmoijia ja niitä, jotka ovat tyytyväisiä arduinon tasoon. Itse en muuten ole vieläkään opiskellut arduinoa yksityiskohtaisesti, koska käytin aina WinAVR:tä tai AVR Studiota, mutta aloitin assemblerilla. Siksi alla oleva esimerkkiohjelma on hieman väärä, mutta melko toimiva.
Hei Habr!
On aika tutustua joihinkin Nanonyamin ominaisuuksiin ja kirjoittaa yksinkertainen ohjelma. Kirjoitamme Arduinolla, mutta emme tavalliseen tapaan, vaan niin kuin nyt osaan (sanoin jo, että en ole vielä keksinyt tätä ympäristöä kovin hyvin). Luo ensin uusi luonnos ja valitse Mega2560-kortti.
Tallenna luonnos tiedostoon ja kopioi seuraavaksi
#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"
Vielä oikeampaa olisi tehdä erityinen moduuli "Nanonyam for Arduino", joka voidaan asentaa suoraan Arduinosta. Heti kun saan sen selville, teen sen, mutta toistaiseksi näytän vain virtuaalikoneen kanssa työskentelyn olemuksen. Kirjoitamme seuraavan koodin:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Piirrä tällä ohjelmalla
Painamme "Tarkista" -painiketta, eikä virheitä pitäisi olla.
Nyt sinun on hankittava binääritiedosto (laiteohjelmisto). Valitse valikko "Luonnos>>Vie binaaritiedosto (CTRL+ALT+S)".
Tämä kopioi kaksi HEX-tiedostoa luonnoskansioon. Otamme vain tiedoston ilman etuliitettä "with_bootloader.mega".
On olemassa useita tapoja määrittää HEX-tiedosto Nanonyam-virtuaalikoneelle, ja ne kaikki kuvataan
Samoin voit luoda ohjelmia muissa ympäristöissä, kuten AVR Studiossa tai WinAVR:ssä.
Tähän päätämme tutustumisemme Nanonyamin kanssa. Pääidean tulee olla selvä.
Kiitos kaikille huomiosta ja hyvästä ohjelmoinnista!
Lähde: will.com