Kaip sukurti „Windows“ programas „Arduino“.

Kaip sukurti „Windows“ programas „Arduino“.

Vieną dieną man kilo beprotiška mintis atsinešti 500 lazerinių rodyklių vienoje vietoje. Aš praleidau daug laiko ir tai padariau. Tai pasirodė įspūdinga ir nenaudinga, bet man patiko. Prieš šešis mėnesius turėjau dar vieną beprotišką idėją. Šį kartą visai ne įspūdingai, bet daug naudingiau. Aš irgi tam skyriau daug laiko. Ir šiame straipsnyje pateikiu savo antrosios beprotiškos idėjos beta versiją.

Paskambinau į projektą Nanonyam (Nanonyam) ir net sugalvojau jam logotipą (piešiau 5 minutes).

Kaip sukurti „Windows“ programas „Arduino“.

Tiems, kurie galvoja apie Arduino, galime pasakyti, kad Nanonyam yra virtualus Arduino skydas, skirtas valdyti Windows.

Kitaip tariant, Nanonyam yra virtuali mašina, kuri kaip baitų kodą naudoja AVR mikrovaldiklio programinę-aparatinę įrangą (rekomenduojama ATMEGA2560). Šios virtualios mašinos viduje yra AVR branduolio treniruoklis, tačiau vietoj periferinių įrenginių, esančių SRAM adresais nuo 0x0060 iki 0x01FF, yra speciali sąsaja virtualioms funkcijoms (įskaitant Windows API funkcijas). Ir čia labai svarbu iš karto suprasti: Nanonyam kodas neturėtų turėti jokios prieigos prie nurodyto atminties diapazono, kad netyčia neiškviestų, pavyzdžiui, failų ištrynimo ar disko formatavimo funkcijos. Likusi SRAM atminties diapazonas nuo 0x0200 iki 0xFFFF (tai daugiau nei tikrame mikrovaldiklyje) yra prieinama vartotojui bet kokiam tikslui. Iš karto pažymiu, kad yra speciali apsauga nuo netyčinio tikro mikrovaldiklio programinės aparatinės įrangos (arba kitos architektūros programinės aparatinės įrangos) paleidimo: prieš suaktyvinant „pavojingas“ funkcijas, reikia iškviesti specialią sudėtingą virtualią funkciją. Taip pat yra keletas kitų saugos funkcijų.

Norėdami sukurti Nanonyam programas, turite naudoti specialias bibliotekas, kurios įgyvendina visas šiuo metu prieinamas virtualias funkcijas. Atsisiųskite „Nanonyam“ virtualią mašiną ir jai skirtas bibliotekas Tada galite. Tačiau virtualus funkcijos aprašymo puslapis. Ir taip, mano svetainė yra labai primityvi ir nepritaikyta mobiliesiems įrenginiams.

Nanonyam yra nemokamas namų ir komerciniam naudojimui. Nanonyam programa teikiama tokia, kokia yra. Šaltinio kodas nepateiktas.

Šiuo metu programa yra testavimo etape. Įdiegta apie 200 virtualių funkcijų, kurios leidžia kurti paprastas programas, skirtas Windows.
Akivaizdu, kad tokioje virtualioje mašinoje sukurti kažką sudėtingo nepavyks, nes kodo atmintis yra tik 256 kB. Duomenys gali būti saugomi atskiruose failuose, buferis grafinei daliai realizuotas išoriškai. Visos funkcijos supaprastintos ir pritaikytos 8 bitų architektūrai.

Ką galima nuveikti Nanonyam? Aš sugalvojau keletą problemų.

Programų blokų kūrimas

Kartą man reikėjo sukurti sudėtingą meniu 128 x 64 taškų grafiniam ekranui. Tikrai nenorėjau nuolat įkelti programinės įrangos į tikrą mikrovaldiklį, kad pamatyčiau, kaip atrodo pikseliai. Taip gimė Nanonyam idėja. Žemiau esančiame paveikslėlyje parodytas vieno iš to paties meniu elementų vaizdas iš tikro OLED ekrano. Dabar galiu dirbti be tikro įrenginio.

Kaip sukurti „Windows“ programas „Arduino“.

Nanonyam (galutine idėja) yra geras įrankis mikrovaldiklių programų blokams kurti, nes yra funkcijų, skirtų darbui su grafika (galite imituoti ekranus ir indikatorius), su failais (galite kurti žurnalus, skaityti testo duomenis), su klaviatūra (vienu metu galite skaityti iki 10 mygtukų), su COM prievadais (čia yra atskiras elementas).

Greitųjų programų kūrimas

Pavyzdžiui, reikia greitai apdoroti 100500 tekstinių failų. Kiekvieną iš jų reikia atidaryti, šiek tiek modifikuoti pagal kokį nors paprastą algoritmą, išsaugoti ir uždaryti. Jei esate Python meistras, sveikinu jus, jūs turite viską. Bet jei esate užkietėjęs arduino (o jų yra daug), tada Nanonyam padės jums išspręsti šią problemą. Tai yra antrasis mano Nanonyam tikslas: pridėti daug naudingų funkcijų, tokių kaip teksto apdorojimas, ekrano kopijų darymas ar klavišų paspaudimų imitavimas sistemoje (beje, visos jos jau yra), taip pat daug kitų funkcijų, skirtų įprastoms užduotims spręsti. .

Aparatinės įrangos testavimas per COM prievadą

Nanonyam gali veikti kaip terminalas, veikiantis pagal jūsų algoritmą. Galite nupiešti nedidelį meniu, kad galėtumėte valdyti įrenginį ir rodyti duomenis, gautus iš prievado. Galite išsaugoti ir skaityti duomenis iš failų analizei. Patogus įrankis paprastam aparatinės įrangos derinimui ir kalibravimui, taip pat paprastų virtualių prietaisų valdymo pultų kūrimui. Studentams ir jauniesiems mokslininkams šis projektas gali būti labai naudingas.

Programavimo mokymai

Tačiau, kaip ir visame „Arduino“ projekte, pagrindinis „Nanonyam“ pranašumas yra funkcijų, sąsajos ir įkrovos įkroviklio supaprastinimas. Todėl šis projektas turėtų sudominti pradedančius programuotojus ir tuos, kurie yra patenkinti arduino lygiu. Beje, aš pats iki šiol detaliau arduino nestudijavau, nes visada naudojau WinAVR arba AVR Studio, bet pradėjau nuo assembler. Todėl žemiau pateikta pavyzdinė programa bus šiek tiek klaidinga, bet gana veikianti.

Sveiki, Habr!

Atėjo laikas susipažinti su kai kuriomis Nanonyam funkcijomis ir parašyti paprastą programą. Rašysime Arduino, bet ne įprastu būdu, o taip, kaip galiu dabar (jau sakiau, kad dar nelabai supratau šios aplinkos). Pirmiausia sukurkite naują eskizą ir pasirinkite „Mega2560“ plokštę.

Kaip sukurti „Windows“ programas „Arduino“.

Išsaugokite eskizą į failą ir nukopijuokite toliau Nanonyam biblioteka. Būtų teisinga įtraukti bibliotekų antraštes, bet aš nežinau, kaip parašyti atskirų failų rinkinį Arduino, todėl dabar mes tiesiog įtrauksime bibliotekas tiesiogiai (ir visas iš karto):

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

Dar teisingiau būtų pagaminti specialų modulį „Nanonyam for Arduino“, kurį būtų galima įdiegti tiesiai iš Arduino. Kai tik sugalvosiu, tai ir padarysiu, bet kol kas tik parodau darbo su virtualia mašina esmę. Rašome šį kodą:

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

Eskizas su šia programa galima parsisiųsti čia. Išsamus funkcijų aprašymas ieškoti svetainėje. Tikiuosi, kad šio kodo komentarų pakaks, kad suprastumėte jo esmę. Čia funkcija sys_Nanonyam() atlieka virtualios mašinos „slaptažodžio“ vaidmenį, kuris pašalina virtualių funkcijų apribojimus. Be šios funkcijos programa užsidarys po 3 sekundžių veikimo.

Paspaudžiame mygtuką „Patikrinti“ ir klaidų neturėtų būti.

Kaip sukurti „Windows“ programas „Arduino“.

Dabar reikia gauti dvejetainį failą (firmware). Pasirinkite meniu "Eskizas>> Eksportuoti dvejetainį failą (CTRL+ALT+S)"

Kaip sukurti „Windows“ programas „Arduino“.

Tai nukopijuos du HEX failus į eskizo aplanką. Paimame tik failą be priešdėlio „with_bootloader.mega“.

Yra keletas būdų, kaip nurodyti HEX failą Nanonyam virtualioje mašinoje, visi jie aprašyti šiame puslapyje. Siūlau kurti šalia failo Nanonyam.exe failą kelias, kuriame galite užregistruoti visą kelią į mūsų HEX failą. Po to galite bėgti Nanonyam.exe. Gauname langą su mūsų užrašu.

Kaip sukurti „Windows“ programas „Arduino“.

Panašiai galite kurti programas ir kitose aplinkose, pvz., AVR Studio arba WinAVR.

Čia ir baigiame pažintį su Nanonyam. Pagrindinė mintis turėtų būti aiški. Daugiau pavyzdžių rasite svetainėje.. Jei atsiras pakankamai norinčių pasinaudoti šiuo projektu, tada darysiu pavyzdžių ir toliau „pildysiu“ virtualias funkcijų bibliotekas. Priimamos konkrečios projekto plėtros idėjos ir pranešimai apie gedimus, klaidas ir klaidas. Patartina juos nukreipti į kontaktus, nurodyta interneto svetainėje. O diskusija laukiama komentaruose.

Ačiū visiems už dėmesį ir gerą programavimą!

Šaltinis: www.habr.com

Добавить комментарий