Jednoho dne mě napadl bláznivý nápad přinést
Projekt jsem nazval Nanonyam (Nanonyam) a dokonce jsem k němu vymyslel logo (kreslil jsem 5 minut).
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
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í.
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.
Uložte skicu do souboru a zkopírujte dále
#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
Stiskneme tlačítko "Zkontrolovat" a neměly by být žádné chyby.
Nyní musíte získat binární soubor (firmware). Vyberte nabídku "Skica >> Export binárního souboru (CTRL+ALT+S)".
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
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á.
Děkuji všem za pozornost a dobré programování!
Zdroj: www.habr.com