Jak vytvořit programy pro Windows v Arduinu

Jak vytvořit programy pro Windows v Arduinu

Jednoho dne mě napadl bláznivý nápad přinést 500 laserových ukazovátek na jednom místě. Strávil jsem spoustu času a udělal to. Ukázalo se to velkolepé a zbytečné, ale líbilo se mi to. Před šesti měsíci jsem dostal další bláznivý nápad. Tentokrát ne nijak velkolepé, ale mnohem užitečnější. Taky jsem tomu věnoval hodně času. A v tomto článku uvádím beta verzi svého druhého šíleného nápadu.

Projekt jsem nazval Nanonyam (Nanonyam) a dokonce jsem k němu vymyslel logo (kreslil jsem 5 minut).

Jak vytvořit programy pro Windows v Arduinu

Pro ty, kteří uvažují v pojmech Arduino, můžeme říci, že Nanonyam je virtuální štít Arduina pro ovládání Windows.

Jinými slovy, Nanonyam je virtuální stroj, který používá firmware pro mikrokontrolér AVR (doporučuje se ATMEGA2560) jako bytekód. Uvnitř tohoto virtuálního stroje je simulátor jádra AVR, ale místo periferií, které jsou umístěny na adresách SRAM od 0x0060 do 0x01FF, je speciální rozhraní pro virtuální funkce (včetně funkcí Windows API). A zde je velmi důležité hned pochopit: kód pro Nanonyam by neměl mít žádný přístup k zadanému rozsahu paměti, aby náhodou nezavolal například funkci mazání souborů nebo formátování disku. Zbytek rozsahu paměti SRAM od 0x0200 do 0xFFFF (to je více než ve skutečném mikrokontroléru) je uživateli k dispozici pro jakýkoli účel. Hned poznamenávám, že existuje speciální ochrana proti náhodnému spuštění firmwaru skutečného mikrokontroléru (nebo firmwaru z jiné architektury): před aktivací „nebezpečných“ funkcí musíte zavolat speciální záludnou virtuální funkci. Existují také některé další bezpečnostní funkce.

Chcete-li vytvořit programy pro Nanonyam, musíte použít speciální knihovny, které implementují všechny aktuálně dostupné virtuální funkce. Stáhněte si virtuální stroj Nanonyam a jeho knihovny Pak můžete. Avšak stránka s popisem virtuální funkce. A ano, můj web je velmi primitivní a není přizpůsobený pro mobilní zařízení.

Nanonyam je zdarma pro domácí i komerční použití. Program Nanonyam je poskytován „tak, jak je“. Zdrojový kód není uveden.

Program je v současné době ve fázi testování. Implementováno asi 200 virtuálních funkcí, které umožňují vytvářet jednoduché programy pro Windows.
Je zřejmé, že vytvoření něčeho složitého v takovém virtuálním stroji nebude fungovat, protože paměť pro kód je pouze 256 kB. Data lze ukládat do samostatných souborů, vyrovnávací paměť pro grafickou část je implementována externě. Všechny funkce jsou zjednodušené a přizpůsobené pro 8bitovou architekturu.

Co můžete dělat v Nanonyam? Přišel jsem na pár problémů.

Vývoj programových bloků

Jednou jsem potřeboval navrhnout komplexní menu pro grafický displej 128x64 bodů. Opravdu se mi nechtělo neustále nahrávat firmware do skutečného mikrokontroléru, abych viděl, jak vypadají pixely. A tak se zrodila myšlenka Nanonyam. Obrázek níže ukazuje obrázek ze skutečného OLED displeje jedné z položek ve stejné nabídce. Nyní s tím mohu pracovat bez skutečného zařízení.

Jak vytvořit programy pro Windows v Arduinu

Nanonyam (ve své konečné myšlence) je dobrý nástroj pro zpracování programových bloků pro mikrokontroléry, protože existují funkce pro práci s grafikou (můžete simulovat displeje a indikátory), se soubory (můžete vytvářet protokoly, číst testovací data), s klávesnice (můžete číst až 10 tlačítek současně), s COM porty (zde je samostatná položka).

Vytváření rychlých programů

Například potřebujete rychle zpracovat 100500 XNUMX textových souborů. Každý z nich je třeba otevřít, mírně upravit podle nějakého jednoduchého algoritmu, uložit a zavřít. Pokud jste mistr Pythonu, pak vám gratuluji, máte vše. Pokud jste ale zatvrzelí arduino (a není jich málo), pak vám Nanonyam s řešením tohoto problému pomůže. Toto je můj druhý cíl v Nanonyamu: přidat do systému mnoho užitečných funkcí, jako je zpracování textu, pořizování snímků obrazovky nebo simulace stisků kláves (všechny mimochodem již existují), a také mnoho dalších funkcí pro řešení rutinních úkolů. .

Testování hardwaru přes COM port

Nanonyam může fungovat jako terminál, který funguje podle vašeho algoritmu. Pro ovládání zařízení a zobrazení dat přijatých z portu můžete nakreslit malé menu. Můžete ukládat a číst data ze souborů pro analýzu. Šikovný nástroj pro jednoduché ladění a kalibraci hardwaru a také pro vytváření jednoduchých virtuálních ovládacích panelů přístrojů. Pro studenty a mladé vědce může být tento projekt velmi užitečný.

Školení programování

Stejně jako u celého projektu Arduino však hlavní užitečnost Nanonyamu spočívá ve zjednodušení funkcí, rozhraní a bootloaderu. Proto by tento projekt měl zajímat začínající programátory a ty, kteří jsou spokojeni s úrovní arduina. Mimochodem, já sám jsem arduino stále podrobně nestudoval, protože jsem vždy používal WinAVR nebo AVR Studio, ale začínal s assemblerem. Proto níže uvedený příklad programu bude trochu chybný, ale docela funkční.

Ahoj Habr!

Je čas seznámit se s některými funkcemi Nanonyam a napsat jednoduchý program. Budeme psát v Arduinu, ale ne obvyklým způsobem, ale tak, jak to teď umím (už jsem řekl, že tohle prostředí jsem zatím moc nevymyslel). Nejprve vytvořte nový náčrt a vyberte desku Mega2560.

Jak vytvořit programy pro Windows v Arduinu

Uložte skicu do souboru a zkopírujte dále Knihovna Nanonyam. Bylo by správné zahrnout záhlaví knihoven, ale nevím, jak napsat kompilaci jednotlivých souborů v Arduinu, takže prozatím zahrneme pouze knihovny přímo (a všechny najednou):

#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"

Ještě správnější by bylo vytvořit speciální modul „Nanonyam pro Arduino“, který lze nainstalovat přímo z Arduina. Jakmile na to přijdu, udělám to, ale zatím jen ukazuji podstatu práce s virtuálním strojem. Napíšeme následující 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);//Задержка и разгрузка процессора
}

Skica s tímto programem lze stáhnout zde. Podrobný popis funkcí hledat na webu. Doufám, že komentáře v tomto kódu jsou dostatečné k tomu, abyste pochopili podstatu. Zde funkce sys_Nanonyam() hraje roli „hesla“ pro virtuální stroj, které odstraňuje omezení virtuálních funkcí. Bez této funkce se program po 3 sekundách provozu uzavře.

Stiskneme tlačítko "Zkontrolovat" a neměly by být žádné chyby.

Jak vytvořit programy pro Windows v Arduinu

Nyní musíte získat binární soubor (firmware). Vyberte nabídku "Skica >> Export binárního souboru (CTRL+ALT+S)".

Jak vytvořit programy pro Windows v Arduinu

Tím se zkopírují dva HEX soubory do složky skici. Bereme pouze soubor bez prefixu "with_bootloader.mega".

Existuje několik způsobů, jak zadat HEX soubor virtuálnímu počítači Nanonyam, všechny jsou popsány na této stránce. Navrhuji vytvořit vedle souboru Nanonyam.exe файл cesta, ve kterém zaregistrujete úplnou cestu k našemu HEX souboru. Po kterém můžete běžet Nanonyam.exe. Dostáváme okno s naším nápisem.

Jak vytvořit programy pro Windows v Arduinu

Podobně můžete vytvářet programy v jiných prostředích, jako je AVR Studio nebo WinAVR.

Zde končíme naše seznámení s Nanonyamem. Hlavní myšlenka by měla být jasná. Další příklady jsou na webu.. Pokud se najde dostatek lidí ochotných tento projekt použít, pak udělám další příklady a budu pokračovat v „plnění“ knihoven virtuálních funkcí. Konkrétní nápady pro vývoj projektu a zprávy o poruchách, chybách a chybách jsou přijímány. Je vhodné je nasměrovat na kontakty, uvedeno na webu. A diskuze vítána v komentářích.

Děkuji všem za pozornost a dobré programování!

Zdroj: www.habr.com

Přidat komentář