Kiel krei programojn por Vindozo en Arduino

Kiel krei programojn por Vindozo en Arduino

Iun tagon mi havis la frenezan ideon alporti 500 laseraj montriloj en unu loko. Mi pasigis multan tempon kaj faris ĝin. Ĝi montriĝis sensacia kaj senutila, sed mi ŝatis ĝin. Antaŭ ses monatoj mi havis alian frenezan ideon. Ĉi-foje, tute ne espectacular, sed multe pli utila. Mi ankaŭ pasigis multan tempon pri ĝi. Kaj en ĉi tiu artikolo, mi prezentas beta-version de mia dua freneza ideo.

Mi nomis la projekton Nanonyam (Nanonyam) kaj eĉ elpensis emblemon por ĝi (mi desegnis dum 5 minutoj).

Kiel krei programojn por Vindozo en Arduino

Por tiuj, kiuj pensas pri Arduino, ni povas diri, ke Nanonyam estas virtuala Arduino-ŝildo por kontroli Vindozon.

Alivorte, Nanonyam estas virtuala maŝino, kiu uzas la firmware por la AVR-mikroregilo (ATMEGA2560 rekomendas) kiel la bajtokodon. Ene de ĉi tiu virtuala maŝino estas AVR-kerna simulilo, sed anstataŭ ekstercentraj aparatoj, kiuj situas ĉe SRAM-adresoj de 0x0060 ĝis 0x01FF, ekzistas speciala interfaco al virtualaj funkcioj (inkluzive de Windows API-funkcioj). Kaj ĉi tie estas tre grave kompreni tuj: la kodo por Nanonyam ne havu aliron al la specifita memorintervalo, por ne hazarde voki, ekzemple, la funkcion forigi dosierojn aŭ formati diskon. La resto de la SRAM-memoro gamo de 0x0200 ĝis 0xFFFF (ĉi tio estas pli ol en vera mikroregilo) estas disponebla por la uzanto por ajna celo. Mi tuj rimarkas, ke ekzistas speciala protekto kontraŭ hazarda lanĉo de la firmvaro de vera mikroregilo (aŭ firmware de alia arkitekturo): antaŭ aktivigi "danĝerajn" funkciojn, oni devas nomi specialan delikatan virtualan funkcion. Estas iuj aliaj sekurecaj funkcioj ankaŭ.

Por krei programojn por Nanonyam, vi devas uzi specialajn bibliotekojn, kiuj efektivigas ĉiujn nuntempe disponeblajn virtualajn funkciojn. Elŝutu la virtualan maŝinon Nanonyam kaj bibliotekojn por ĝi povas esti ĉi tie. Sed virtuala funkcio priskriba paĝo. Kaj jes, mia retejo estas tre primitiva kaj ne adaptita por porteblaj aparatoj.

Nanonyam estas senpaga por hejma kaj komerca uzo. La Nanonyam-programo estas disponigita sur "kiel estas" bazo. Fontkodo ne estas provizita.

La programo estas nuntempe en la testa fazo. Efektivigis ĉirkaŭ 200 virtualajn funkciojn, kiuj permesas krei simplajn programojn por Vindozo.
Evidente, krei ion komplikan en tia virtuala maŝino ne funkcios, ĉar la memoro por la kodo estas nur 256 kB. Datenoj povas esti stokitaj en apartaj dosieroj, la bufro por la grafika parto estas efektivigita ekstere. Ĉiuj funkcioj estas simpligitaj kaj adaptitaj por 8-bita arkitekturo.

Kion vi povas fari en Nanonyam? Mi elpensis kelkajn problemojn.

Disvolviĝo de programblokoj

Mi iam bezonis desegni kompleksan menuon por 128x64 punkto grafika ekrano. Mi vere ne volis konstante ŝargi la firmvaro en veran mikroregilon por vidi kiel aspektas la pikseloj. Kaj tiel naskiĝis la ideo de Nanonyam. La suba figuro montras bildon de reala OLED-ekrano de unu el la eroj en la sama menuo. Nun mi povas labori per ĝi sen vera aparato.

Kiel krei programojn por Vindozo en Arduino

Nanonyam (en ĝia fina ideo) estas bona ilo por ellabori programblokojn por mikroregiloj, ĉar ekzistas funkcioj por labori kun grafikaĵoj (vi povas simuli ekranojn kaj indikilojn), kun dosieroj (vi povas fari protokolojn, legi testajn datumojn), kun klavaro (vi povas legi ĝis 10 butonojn samtempe), kun COM-havenoj (ĉi tie estas aparta ero).

Kreante Rapidajn Programojn

Ekzemple, vi devas rapide prilabori 100500 tekstajn dosierojn. Ĉiu devas esti malfermita, iomete modifita laŭ iu simpla algoritmo, konservita kaj fermita. Se vi estas majstro de Python, tiam mi gratulas vin, vi havas ĉion. Sed se vi estas hardita arduino (kaj estas multaj el ili), tiam Nanonyam helpos vin solvi ĉi tiun problemon. Jen mia dua celo en Nanonyam: aldoni multajn utilajn funkciojn kiel teksttraktadon, preni ekrankopiojn aŭ simuli klavpremojn en la sistemo (kiuj, cetere, jam ekzistas), kaj ankaŭ multajn aliajn funkciojn por solvi rutinajn taskojn. .

Testado de aparataro per COM-haveno

Nanonyam povas funkcii kiel terminalo, kiu funkcias laŭ via algoritmo. Vi povas desegni malgrandan menuon por kontroli la aparaton kaj montri la datumojn ricevitajn de la haveno. Vi povas konservi kaj legi datumojn de dosieroj por analizo. Praktika ilo por simpla senararigado kaj alĝustigo de aparataro, same kiel por krei simplajn virtualajn instrumentajn kontrolpanelojn. Por studentoj kaj junaj sciencistoj, ĉi tiu projekto povas esti tre utila.

Programado de trejnado

Tamen, kiel kun la tuta Arduino-projekto, la ĉefa utileco de Nanonyam kuŝas en la simpligo de funkcioj, interfaco kaj ekŝargilo. Tial, ĉi tiu projekto devus interesi komencajn programistojn kaj tiujn, kiuj estas kontentaj pri la nivelo de arduino. Cetere, mi mem ankoraŭ ne detale studis arduino, ĉar mi ĉiam uzis WinAVR aŭ AVR Studion, sed komencis per asemblero. Tial la ekzempla programo malsupre estos iom malĝusta, sed sufiĉe funkcianta.

Saluton Habr!

Estas tempo konatiĝi kun iuj funkcioj de Nanonyam kaj verki simplan programon. Ni skribos en Arduino, sed ne laŭ la kutima maniero, sed laŭ la maniero, kiel mi nun povas (mi jam diris, ke mi ankoraŭ ne tre bone eltrovis ĉi tiun medion). Unue, kreu novan skizon kaj elektu la tabulon Mega2560.

Kiel krei programojn por Vindozo en Arduino

Konservu la skizon al dosiero kaj kopiu poste Biblioteko Nanonyam. Estus ĝuste inkluzivi la kapliniojn de la bibliotekoj, sed mi ne scias kiel skribi kompilon de individuaj dosieroj en Arduino, do nuntempe ni nur inkluzivos la bibliotekojn rekte (kaj ĉiuj samtempe):

#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ĉ pli ĝuste estus fari specialan modulon "Nanonyam por Arduino", kiu povas esti instalita rekte de Arduino. Tuj kiam mi eltrovos ĝin, mi faros ĝin, sed nuntempe mi nur montras la esencon labori kun virtuala maŝino. Ni skribas la sekvan kodon:

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

Skizo kun ĉi tiu programo povas esti elŝutita ĉi tie. Detala priskribo de funkcioj serĉu en la retejo. Mi esperas, ke la komentoj en ĉi tiu kodo sufiĉas por akiri la esencon de ĝi. Ĉi tie funkcio sys_Nanonyam() ludas la rolon de "pasvorto" por la virtuala maŝino, kiu forigas restriktojn pri virtualaj funkcioj. Sen ĉi tiu funkcio, la programo fermiĝos post 3 sekundoj da funkciado.

Ni premas la butonon "Kontrolu" kaj ne devus esti eraroj.

Kiel krei programojn por Vindozo en Arduino

Nun vi devas akiri binaran dosieron (firmware). Elektu la menuon "Skizo>> Eksporti binaran dosieron (CTRL+ALT+S)".

Kiel krei programojn por Vindozo en Arduino

Ĉi tio kopios du HEX-dosierojn al la skiza dosierujo. Ni prenas nur la dosieron sen la prefikso "with_bootloader.mega".

Estas pluraj manieroj specifi HEX-dosieron al la virtuala maŝino Nanonyam, ĉiuj el ili estas priskribitaj sur ĉi tiu paĝo. Mi proponas krei apud la dosiero Nanonyam.exe файл vojo, en kiu registri la plenan vojon al nia HEX-dosiero. Post kio vi povas kuri Nanonyam.exe. Ni ricevas fenestron kun nia surskribo.

Kiel krei programojn por Vindozo en Arduino

Simile, vi povas krei programojn en aliaj medioj, kiel AVR Studio aŭ WinAVR.

Jen kie ni finas nian konatiĝon kun Nanonyam. La ĉefa ideo estu klara. Pliaj ekzemploj estas en la retejo.. Se estas sufiĉe da homoj pretaj uzi ĉi tiun projekton, tiam mi faros pliajn ekzemplojn kaj daŭre "plenigos" la virtualajn funkciobibliotekojn. Konkretaj ideoj por la disvolviĝo de la projekto kaj raportoj pri misfunkcioj, cimoj kaj cimoj estas akceptitaj. Estas konsilinde direkti ilin al kontaktoj, indikita en la retejo. Kaj diskuto estas bonvena en la komentoj.

Dankon al ĉiuj pro via atento kaj bona programado!

fonto: www.habr.com

Aldoni komenton