Sådan opretter du programmer til Windows i Arduino

Sådan opretter du programmer til Windows i Arduino

En dag fik jeg den skøre idé at komme med 500 laserpointere på ét sted. Jeg brugte meget tid og gjorde det. Det viste sig spektakulært og ubrugeligt, men jeg kunne godt lide det. For seks måneder siden fik jeg endnu en skør idé. Denne gang slet ikke spektakulær, men meget mere nyttig. Jeg brugte også meget tid på det. Og i denne artikel præsenterer jeg en betaversion af min anden skøre idé.

Jeg kaldte projektet Nanonyam (Nanonyam) og kom endda med et logo til det (jeg tegnede i 5 minutter).

Sådan opretter du programmer til Windows i Arduino

For dem, der tænker i Arduino, kan vi sige, at Nanonyam er et virtuelt Arduino-skjold til styring af Windows.

Med andre ord er Nanonyam en virtuel maskine, der bruger firmwaren til AVR-mikrocontrolleren (ATMEGA2560 anbefales) som bytekode. Inde i denne virtuelle maskine er der en AVR-kernesimulator, men i stedet for periferiudstyr, som er placeret på SRAM-adresser fra 0x0060 til 0x01FF, er der en speciel grænseflade til virtuelle funktioner (inklusive Windows API-funktioner). Og her er det meget vigtigt at forstå med det samme: koden til Nanonyam bør ikke have nogen adgang til det angivne hukommelsesområde, for ikke ved et uheld at kalde funktionen til at slette filer eller formatere en disk. Resten af ​​SRAM-hukommelsesområdet fra 0x0200 til 0xFFFF (dette er mere end i en rigtig mikrocontroller) er tilgængelig for brugeren til ethvert formål. Jeg bemærker med det samme, at der er en særlig beskyttelse mod utilsigtet lancering af firmwaren fra en rigtig mikrocontroller (eller firmware fra en anden arkitektur): før du aktiverer "farlige" funktioner, skal du kalde en særlig vanskelig virtuel funktion. Der er også nogle andre sikkerhedsfunktioner.

For at oprette programmer til Nanonyam skal du bruge specielle biblioteker, der implementerer alle aktuelt tilgængelige virtuelle funktioner. Download den virtuelle Nanonyam-maskine og biblioteker til den Du kan derefter. Men virtuel funktionsbeskrivelsesside. Og ja, min side er meget primitiv og ikke tilpasset mobile enheder.

Nanonyam er gratis til hjemmebrug og kommercielt brug. Nanonyam-programmet leveres på "som det er"-basis. Kildekode er ikke angivet.

Programmet er i øjeblikket i testfasen. Implementeret omkring 200 virtuelle funktioner, der giver dig mulighed for at lave simple programmer til Windows.
Det er klart, at skabe noget kompliceret i sådan en virtuel maskine vil ikke fungere, da hukommelsen til koden kun er 256 kB. Data kan gemmes i separate filer, bufferen til den grafiske del implementeres eksternt. Alle funktioner er forenklet og tilpasset til 8-bit arkitektur.

Hvad kan du lave i Nanonyam? Jeg kom op med et par problemer.

Udvikling af programblokke

Jeg havde engang brug for at designe en kompleks menu til et grafisk display på 128x64 prikker. Jeg ville virkelig ikke konstant indlæse firmwaren i en rigtig mikrocontroller for at se, hvordan pixels ser ud. Og så blev ideen om Nanonyam født. Nedenstående figur viser et billede fra et rigtigt OLED-display af et af punkterne i samme menu. Nu kan jeg arbejde igennem det uden en rigtig enhed.

Sådan opretter du programmer til Windows i Arduino

Nanonyam (i sin endelige idé) er et godt værktøj til at udarbejde programblokke til mikrocontrollere, da der er funktioner til at arbejde med grafik (du kan simulere displays og indikatorer), med filer (du kan lave logs, læse testdata), med et tastatur (du kan læse op til 10 knapper på samme tid), med COM-porte (her er et separat punkt).

Oprettelse af hurtige programmer

For eksempel skal du hurtigt behandle 100500 tekstfiler. Hver enkelt skal åbnes, ændres lidt i henhold til en simpel algoritme, gemmes og lukkes. Hvis du er en Python-mester, så lykønsker jeg dig, du har alt. Men hvis du er en hærdet arduino (og der er mange af dem), så vil Nanonyam hjælpe dig med at løse dette problem. Dette er mit andet mål i Nanonyam: at tilføje mange nyttige funktioner såsom tekstbehandling, tage skærmbilleder eller simulere tastetryk i systemet (som alle i øvrigt allerede er der), samt mange andre funktioner til at løse rutineopgaver .

Test af hardware via COM-port

Nanonyam kan fungere som en terminal, der fungerer i henhold til din algoritme. Du kan tegne en lille menu for at styre enheden og vise data modtaget fra porten. Du kan gemme og læse data fra filer til analyse. Et praktisk værktøj til simpel debugging og kalibrering af hardware, samt til at skabe simple virtuelle instrumentkontrolpaneler. For studerende og unge forskere kan dette projekt være meget nyttigt.

Programmeringstræning

Men som med hele Arduino-projektet ligger hovedanvendeligheden af ​​Nanonyam i forenklingen af ​​funktioner, interface og bootloader. Derfor bør dette projekt være af interesse for begyndere programmører og dem, der er tilfredse med niveauet af arduino. Selv har jeg i øvrigt stadig ikke studeret arduino i detaljer, fordi jeg altid brugte WinAVR eller AVR Studio, men startede med assembler. Derfor vil eksempelprogrammet nedenfor være lidt forkert, men ganske fungerende.

Hej Habr!

Det er tid til at blive fortrolig med nogle Nanonyam-funktioner og skrive et simpelt program. Vi vil skrive i Arduino, men ikke på den sædvanlige måde, men på den måde, jeg kan nu (jeg har allerede sagt, at jeg ikke har fundet ud af dette miljø særlig godt endnu). Først skal du oprette en ny skitse og vælge Mega2560-brættet.

Sådan opretter du programmer til Windows i Arduino

Gem skitsen til en fil og kopier næste Nanonyam bibliotek. Det ville være korrekt at inkludere overskrifterne på bibliotekerne, men jeg ved ikke, hvordan man skriver kompilering af individuelle filer i Arduino, så indtil videre inkluderer vi bare bibliotekerne direkte (og det hele på én gang):

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

Det ville være endnu mere korrekt at lave et specielt modul "Nanonyam for Arduino", som kan installeres direkte fra Arduino. Så snart jeg finder ud af det, vil jeg gøre det, men indtil videre viser jeg bare essensen af ​​at arbejde med en virtuel maskine. Vi skriver følgende kode:

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

Skitser med dette program kan downloades her. Detaljeret beskrivelse af funktioner søg på siden. Jeg håber, at kommentarerne i denne kode er nok til at få essensen af ​​det. Her funktion sys_Nanonyam() spiller rollen som et "adgangskode" til den virtuelle maskine, som fjerner begrænsninger på virtuelle funktioner. Uden denne funktion vil programmet lukke efter 3 sekunders drift.

Vi trykker på "Check" knappen, og der skulle ikke være nogen fejl.

Sådan opretter du programmer til Windows i Arduino

Nu skal du have en binær fil (firmware). Vælg menuen "Skitse >> Eksporter binær fil (CTRL+ALT+S)".

Sådan opretter du programmer til Windows i Arduino

Dette vil kopiere to HEX-filer til skitsemappen. Vi tager kun filen uden præfikset "with_bootloader.mega".

Der er flere måder at specificere en HEX-fil på den virtuelle Nanonyam-maskine, alle er beskrevet på denne side. Jeg foreslår at oprette ved siden af ​​filen Nanonyam.exe файл sti, hvor du kan registrere den fulde sti til vores HEX-fil. Hvorefter du kan løbe Nanonyam.exe. Vi får et vindue med vores inskription.

Sådan opretter du programmer til Windows i Arduino

På samme måde kan du oprette programmer i andre miljøer, såsom AVR Studio eller WinAVR.

Det er her, vi afslutter vores bekendtskab med Nanonyam. Hovedideen skal være klar. Flere eksempler findes på hjemmesiden.. Hvis der er nok folk villige til at bruge dette projekt, så vil jeg lave flere eksempler og fortsætte med at "fylde" de virtuelle funktionsbiblioteker. Konkrete ideer til udvikling af projektet og rapporter om funktionsfejl, fejl og fejl accepteres. Det er tilrådeligt at henvise dem til kontakter, angivet på siden. Og diskussion er velkommen i kommentarerne.

Tak til jer alle for jeres opmærksomhed og gode programmering!

Kilde: www.habr.com

Tilføj en kommentar