Kako ustvariti programe za Windows v Arduinu

Kako ustvariti programe za Windows v Arduinu

Nekega dne se mi je porodila nora ideja, da bi prinesel 500 laserskih kazalcev na enem mestu. Porabil sem veliko časa in to naredil. Izkazalo se je spektakularno in neuporabno, vendar mi je bilo všeč. Pred šestimi meseci sem imel še eno noro idejo. Tokrat nič kaj spektakularno, a veliko bolj uporabno. Za to sem tudi porabil veliko časa. In v tem članku predstavljam beta različico moje druge nore ideje.

Projekt sem poimenoval Nanonyam (Nanonyam) in zanj celo izmislil logotip (risal sem 5 minut).

Kako ustvariti programe za Windows v Arduinu

Za tiste, ki razmišljajo v smislu Arduina, lahko rečemo, da je Nanonyam virtualni Arduino ščit za nadzor Windows.

Z drugimi besedami, Nanonyam je virtualni stroj, ki kot bajtno kodo uporablja vdelano programsko opremo za mikrokrmilnik AVR (priporočeno je ATMEGA2560). Znotraj tega virtualnega stroja je simulator jedra AVR, vendar je namesto perifernih naprav, ki se nahajajo na naslovih SRAM od 0x0060 do 0x01FF, poseben vmesnik za virtualne funkcije (vključno s funkcijami Windows API). In tukaj je zelo pomembno, da takoj razumemo: koda za Nanonyam ne sme imeti dostopa do določenega obsega pomnilnika, da ne bi slučajno poklicali na primer funkcije brisanja datotek ali formatiranja diska. Preostali del pomnilnika SRAM od 0x0200 do 0xFFFF (to je več kot pri pravem mikrokontrolerju) je uporabniku na voljo za kakršnekoli namene. Takoj ugotavljam, da obstaja posebna zaščita pred nenamernim zagonom vdelane programske opreme pravega mikrokrmilnika (ali vdelane programske opreme iz druge arhitekture): preden aktivirate "nevarne" funkcije, morate poklicati posebno zapleteno virtualno funkcijo. Obstaja tudi nekaj drugih varnostnih funkcij.

Če želite ustvariti programe za Nanonyam, morate uporabiti posebne knjižnice, ki izvajajo vse trenutno razpoložljive virtualne funkcije. Prenesite virtualni stroj Nanonyam in knjižnice zanj Nato lahko. Vendar stran z opisom virtualne funkcije. In ja, moja stran je zelo primitivna in ni prilagojena mobilnim napravam.

Nanonyam je brezplačen za domačo in komercialno uporabo. Program Nanonyam je na voljo na podlagi "kot je". Izvorna koda ni na voljo.

Program je trenutno v fazi testiranja. Izvedenih približno 200 virtualnih funkcij, ki vam omogočajo ustvarjanje preprostih programov za Windows.
Očitno ustvarjanje nečesa zapletenega v takšnem virtualnem stroju ne bo delovalo, saj je pomnilnik za kodo le 256 kB. Podatki so lahko shranjeni v ločenih datotekah, medpomnilnik za grafični del je implementiran zunaj. Vse funkcije so poenostavljene in prilagojene za 8-bitno arhitekturo.

Kaj lahko počnete v Nanonyamu? Naletel sem na nekaj težav.

Razvoj programskih blokov

Nekoč sem moral oblikovati kompleksen meni za grafični zaslon 128x64 pik. Resnično nisem želel neprestano nalagati vdelane programske opreme v pravi mikrokrmilnik, da bi videl, kako izgledajo slikovne pike. In tako se je rodila ideja o Nanonyamu. Spodnja slika prikazuje sliko iz pravega zaslona OLED enega od elementov v istem meniju. Zdaj lahko to delam brez prave naprave.

Kako ustvariti programe za Windows v Arduinu

Nanonyam (v končni ideji) je dobro orodje za izdelavo programskih blokov za mikrokrmilnike, saj obstajajo funkcije za delo z grafiko (lahko simulirate zaslone in indikatorje), z datotekami (lahko delate dnevnike, berete testne podatke), z tipkovnico (hkrati lahko berete do 10 gumbov), s COM vrati (tukaj je ločen element).

Ustvarjanje hitrih programov

Na primer, hitro morate obdelati 100500 besedilnih datotek. Vsakega je treba odpreti, nekoliko spremeniti po nekem preprostem algoritmu, shraniti in zapreti. Če ste mojster Pythona, potem vam čestitam, imate vse. Če pa ste prekaljeni arduino (in teh je veliko), vam bo Nanonyam pomagal pri reševanju te težave. To je moj drugi cilj v Nanonyamu: dodati številne uporabne funkcije, kot so obdelava besedila, snemanje posnetkov zaslona ali simulacija pritiskov na tipke v sistemu (mimogrede, vse to že obstaja), pa tudi številne druge funkcije za reševanje rutinskih nalog .

Testiranje strojne opreme prek vrat COM

Nanonyam lahko deluje kot terminal, ki deluje v skladu z vašim algoritmom. Narišete lahko majhen meni za nadzor naprave in prikaz podatkov, prejetih iz vrat. Podatke iz datotek lahko shranite in preberete za analizo. Priročno orodje za enostavno odpravljanje napak in kalibracijo strojne opreme ter za ustvarjanje preprostih virtualnih nadzornih plošč instrumentov. Za študente in mlade znanstvenike je ta projekt lahko zelo koristen.

Usposabljanje programiranja

Vendar, tako kot pri celotnem projektu Arduino, je glavna uporabnost Nanonyama v poenostavitvi funkcij, vmesnika in zagonskega nalagalnika. Zato bi moral biti ta projekt zanimiv za programerje začetnike in tiste, ki so zadovoljni s stopnjo arduina. Mimogrede, sam še vedno nisem podrobno preučil arduina, ker sem vedno uporabljal WinAVR ali AVR Studio, začel pa sem z asemblerjem. Zato bo spodnji primer programa nekoliko napačen, a precej delujoč.

Pozdravljeni Habr!

Čas je, da se seznanite z nekaterimi funkcijami Nanonyama in napišete preprost program. Pisali bomo v Arduinu, vendar ne na običajen način, ampak tako, kot ga znam zdaj (sem že rekel, da tega okolja še nisem dobro razumel). Najprej ustvarite novo skico in izberite ploščo Mega2560.

Kako ustvariti programe za Windows v Arduinu

Shranite skico v datoteko in nato kopirajte Knjižnica Nanonyam. Pravilno bi bilo vključiti glave knjižnic, vendar ne vem, kako napisati kompilacijo posameznih datotek v Arduinu, zato bomo za zdaj vključili samo knjižnice neposredno (in vse naenkrat):

#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 bolj pravilno bi bilo narediti poseben modul "Nanonyam za Arduino", ki ga je mogoče namestiti neposredno iz Arduina. Takoj ko bom ugotovil, bom to naredil, vendar zaenkrat samo pokažem bistvo dela z virtualnim strojem. Napišemo naslednjo kodo:

//Сразу после запуска рисуем текст в окне
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 tem programom lahko prenesete tukaj. Podroben opis funkcij iskanje na spletnem mestu. Upam, da so komentarji v tej kodi dovolj, da razumete bistvo. Tukaj funkcija sys_Nanonyam() igra vlogo "gesla" za virtualni stroj, ki odpravlja omejitve virtualnih funkcij. Brez te funkcije se program zapre po 3 sekundah delovanja.

Pritisnemo gumb "Preveri" in napak ne bi smelo biti.

Kako ustvariti programe za Windows v Arduinu

Zdaj morate pridobiti binarno datoteko (firmware). Izberite meni "Sketch>>Izvozi binarno datoteko (CTRL+ALT+S)".

Kako ustvariti programe za Windows v Arduinu

S tem boste kopirali dve datoteki HEX v mapo s skicami. Vzamemo samo datoteko brez predpone "with_bootloader.mega".

Obstaja več načinov za določitev datoteke HEX virtualnemu stroju Nanonyam, vsi so opisani na tej strani. Predlagam, da ustvarite poleg datoteke Nanonyam.exe datoteko pot, v katerem registriramo celotno pot do naše HEX datoteke. Po katerem lahko tečete Nanonyam.exe. Dobimo okence z našim napisom.

Kako ustvariti programe za Windows v Arduinu

Podobno lahko ustvarjate programe v drugih okoljih, kot sta AVR Studio ali WinAVR.

Tu zaključimo naše spoznavanje z Nanonyamom. Glavna ideja mora biti jasna. Več primerov je na spletni strani.. Če bo dovolj ljudi, ki bodo pripravljeni uporabiti ta projekt, bom naredil več primerov in nadaljeval z "polnjenjem" virtualnih knjižnic funkcij. Sprejemajo se konkretne ideje za razvoj projekta in poročila o okvarah, napakah in hroščih. Priporočljivo jih je usmeriti na kontakte, navedeno na spletnem mestu. In razprava je dobrodošla v komentarjih.

Hvala vsem za pozornost in dobro programiranje!

Vir: www.habr.com

Dodaj komentar