Ako vytvoriť programy pre Windows v Arduine

Ako vytvoriť programy pre Windows v Arduine

Jedného dňa som dostal bláznivý nápad priniesť 500 laserových ukazovadiel na jednom mieste. Strávil som veľa času a urobil som to. Ukázalo sa to veľkolepé a zbytočné, ale páčilo sa mi to. Pred šiestimi mesiacmi som dostal ďalší bláznivý nápad. Tentoraz vôbec nie veľkolepé, ale oveľa užitočnejšie. Tiež som tomu venoval veľa času. A v tomto článku predstavujem beta verziu môjho druhého bláznivého nápadu.

Projekt som nazval Nanonyam (Nanonyam) a dokonca som mu vymyslel logo (kreslil som 5 minút).

Ako vytvoriť programy pre Windows v Arduine

Pre tých, ktorí uvažujú v pojmoch Arduino, môžeme povedať, že Nanonyam je virtuálny štít Arduina na ovládanie Windows.

Inými slovami, Nanonyam je virtuálny stroj, ktorý používa firmvér pre mikrokontrolér AVR (odporúča sa ATMEGA2560) ako bajtový kód. Vo vnútri tohto virtuálneho stroja sa nachádza simulátor jadra AVR, no namiesto periférií, ktoré sa nachádzajú na adresách SRAM od 0x0060 do 0x01FF, je špeciálne rozhranie pre virtuálne funkcie (vrátane funkcií Windows API). A tu je veľmi dôležité hneď pochopiť: kód pre Nanonyam by nemal mať žiadny prístup k špecifikovanému rozsahu pamäte, aby náhodou nezavolal napríklad funkciu vymazania súborov alebo formátovania disku. Zvyšok pamäte SRAM v rozsahu od 0x0200 do 0xFFFF (to je viac ako v skutočnom mikrokontroléri) je používateľovi k dispozícii na akýkoľvek účel. Hneď si všimnem, že existuje špeciálna ochrana proti náhodnému spusteniu firmvéru skutočného mikrokontroléra (alebo firmvéru z inej architektúry): pred aktiváciou „nebezpečných“ funkcií musíte zavolať špeciálnu zložitú virtuálnu funkciu. Existujú aj ďalšie bezpečnostné funkcie.

Na vytváranie programov pre Nanonyam je potrebné použiť špeciálne knižnice, ktoré implementujú všetky aktuálne dostupné virtuálne funkcie. Stiahnite si virtuálny stroj Nanonyam a jeho knižnice môže byť tu. Avšak stránka s popisom virtuálnej funkcie. A áno, moja stránka je veľmi primitívna a nie je prispôsobená pre mobilné zariadenia.

Nanonyam je zadarmo pre domáce a komerčné použitie. Program Nanonyam je poskytovaný „tak, ako je“. Zdrojový kód nie je poskytnutý.

Program je momentálne vo fáze testovania. Implementovaných asi 200 virtuálnych funkcií, ktoré umožňujú vytvárať jednoduché programy pre Windows.
Je zrejmé, že vytvorenie niečoho zložitého v takomto virtuálnom stroji nebude fungovať, pretože pamäť pre kód je iba 256 kB. Dáta je možné ukladať do samostatných súborov, vyrovnávacia pamäť pre grafickú časť je implementovaná externe. Všetky funkcie sú zjednodušené a prispôsobené pre 8-bitovú architektúru.

Čo môžete robiť v Nanonyam? Prišiel som na niekoľko problémov.

Vývoj programových blokov

Raz som potreboval navrhnúť komplexné menu pre grafický displej s rozlíšením 128 x 64 bodov. Naozaj som nechcel neustále nahrávať firmvér do skutočného mikrokontroléra, aby som videl, ako vyzerajú pixely. A tak sa zrodila myšlienka Nanonyam. Obrázok nižšie zobrazuje obrázok zo skutočného OLED displeja jednej z položiek v tej istej ponuke. Teraz to dokážem zvládnuť bez skutočného zariadenia.

Ako vytvoriť programy pre Windows v Arduine

Nanonyam (vo svojej konečnej myšlienke) je dobrý nástroj na vypracovanie programových blokov pre mikrokontroléry, pretože existujú funkcie na prácu s grafikou (môžete simulovať displeje a indikátory), so súbormi (môžete vytvárať protokoly, čítať testovacie údaje), s klávesnica (môžete čítať až 10 tlačidiel súčasne), s COM portami (tu je samostatná položka).

Vytváranie rýchlych programov

Napríklad potrebujete rýchlo spracovať 100500 XNUMX textových súborov. Každý z nich musí byť otvorený, mierne upravený podľa nejakého jednoduchého algoritmu, uložený a zatvorený. Ak ste majster Pythonu, tak vám blahoželám, máte všetko. Ak ste ale zarytý arduino (a nie je ich málo), tak vám pri riešení tohto problému pomôže Nanonyam. Toto je môj druhý cieľ v Nanonyame: pridať do systému mnoho užitočných funkcií, ako je spracovanie textu, vytváranie snímok obrazovky alebo simulácia stlačenia klávesov (mimochodom, všetky tam už sú), ako aj mnoho ďalších funkcií na riešenie rutinných úloh. .

Testovanie hardvéru cez COM port

Nanonyam môže fungovať ako terminál, ktorý funguje podľa vášho algoritmu. Môžete nakresliť malú ponuku na ovládanie zariadenia a zobrazenie údajov prijatých z portu. Môžete ukladať a čítať údaje zo súborov na analýzu. Šikovný nástroj na jednoduché ladenie a kalibráciu hardvéru, ako aj na vytváranie jednoduchých virtuálnych ovládacích panelov prístrojov. Pre študentov a mladých vedcov môže byť tento projekt veľmi užitočný.

Školenie programovania

Avšak, ako pri celom projekte Arduino, hlavná užitočnosť Nanonyamu spočíva v zjednodušení funkcií, rozhrania a bootloaderu. Preto by tento projekt mal zaujímať začínajúcich programátorov a tých, ktorí sú spokojní s úrovňou arduina. Mimochodom, ja sám som arduino stále podrobne neštudoval, pretože som vždy používal WinAVR alebo AVR Studio, ale začínal som s assemblerom. Preto bude nižšie uvedený príklad programu trochu nesprávny, ale celkom funkčný.

Ahoj Habr!

Je čas zoznámiť sa s niektorými funkciami Nanonyam a napísať jednoduchý program. Budeme písať v Arduine, ale nie zvyčajným spôsobom, ale tak, ako to dokážem teraz (už som povedal, že toto prostredie som zatiaľ veľmi nevymyslel). Najprv vytvorte nový náčrt a vyberte dosku Mega2560.

Ako vytvoriť programy pre Windows v Arduine

Uložte skicu do súboru a skopírujte ďalej Knižnica Nanonyam. Bolo by správne zahrnúť hlavičky knižníc, ale neviem, ako napísať kompiláciu jednotlivých súborov v Arduine, takže zatiaľ zahrnieme iba knižnice priamo (a všetky naraz):

#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šte správnejšie by bolo vytvoriť špeciálny modul „Nanonyam for Arduino“, ktorý je možné nainštalovať priamo z Arduina. Hneď ako na to prídem, urobím to, ale zatiaľ len ukazujem podstatu práce s virtuálnym strojom. Napíšeme nasledujúci kód:

//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}

Skicujte pomocou tohto programu možno stiahnuť tu. Podrobný popis funkcií hľadať na stránke. Dúfam, že komentáre v tomto kóde stačia na pochopenie podstaty. Tu funkcia sys_Nanonyam() zohráva úlohu „hesla“ pre virtuálny stroj, ktorý odstraňuje obmedzenia virtuálnych funkcií. Bez tejto funkcie sa program zatvorí po 3 sekundách prevádzky.

Stlačíme tlačidlo "Skontrolovať" a nemali by sa vyskytnúť žiadne chyby.

Ako vytvoriť programy pre Windows v Arduine

Teraz musíte získať binárny súbor (firmvér). Vyberte ponuku "Skica >> Exportovať binárny súbor (CTRL+ALT+S)".

Ako vytvoriť programy pre Windows v Arduine

Tým sa skopírujú dva HEX súbory do priečinka skic. Berieme iba súbor bez predpony „with_bootloader.mega“.

Existuje niekoľko spôsobov, ako zadať HEX súbor virtuálnemu stroju Nanonyam, všetky sú opísané na tejto stránke. Navrhujem vytvoriť vedľa súboru Nanonyam.exe файл cesta, v ktorom si zaregistrujete úplnú cestu k nášmu HEX súboru. Po ktorom môžete bežať Nanonyam.exe. Dostávame okno s naším nápisom.

Ako vytvoriť programy pre Windows v Arduine

Podobne môžete vytvárať programy v iných prostrediach, ako je AVR Studio alebo WinAVR.

Tu končíme naše zoznámenie s Nanonyamom. Hlavná myšlienka by mala byť jasná. Viac príkladov je na webe.. Ak sa nájde dostatok ľudí ochotných využiť tento projekt, tak urobím ďalšie príklady a budem pokračovať v „napĺňaní“ virtuálnych knižníc funkcií. Prijímajú sa konkrétne nápady na vývoj projektu a správy o poruchách, chybách a chybách. Je vhodné ich nasmerovať na kontakty, uvedené na webovej stránke. A diskusia je vítaná v komentároch.

Ďakujem vám všetkým za pozornosť a dobré programovanie!

Zdroj: hab.com

Pridať komentár