Hur man skapar program för Windows i Arduino

Hur man skapar program för Windows i Arduino

En gång fick jag en galen idé om att sammanfoga 500 laserpekare på ett ställe. Jag spenderade mycket tid på att göra det. Det blev spektakulärt och meningslöst, men jag gillade det. För ett tag sedan fick jag en annan galen idé. Denna gång var den inte alls spektakulär, men mycket mer användbar. Jag spenderade också mycket tid på den. I den här artikeln presenterar jag beta-versionen av min andra galna idé.

Jag döpte projektet till Nanonyam (Nanonjam) och till och med designade en logotyp för det (jag ritade i hela 5 minuter).

Hur man skapar program för Windows i Arduino

För dem som tänker i termer av Arduino kan man säga att Nanonyam är en virtuell Arduino-shield för att kontrollera Windows.

Med andra ord är Nanonyam en virtuell maskin där firmware för mikrokontroller AVR (rekommenderad ATMEGA2560) används som bytekod. Inuti denna virtuella maskin finns en simulator av AVR-kärnan, men istället för perifera enheter som ligger på adresserna SRAM från 0x0060 till 0x01FF finns det ett speciellt gränssnitt för virtuella funktioner (inklusive Windows API-funktioner). Det är mycket viktigt att omedelbart förstå: koden för Nanonyam får inte ha några hänvisningar till det angivna minnesintervallet för att av misstag inte kalla på t.ex. funktionen för att ta bort filer eller formatera disken. Det övriga minnesintervallet SRAM från 0x0200 till 0xFFFF (detta är mer än i en verklig mikrokontroller) är tillgängligt för användaren för alla syften. Jag vill också påpeka att det finns ett speciellt skydd mot oavsiktlig aktivering av firmware från en verklig mikrokontroller (eller firmware från en annan arkitektur): innan man aktiverar "farliga" funktioner måste man kalla på en speciell smart virtuell funktion. Det finns också några andra skyddselement.

För att skapa program för Nanonyam behöver man använda speciella bibliotek där alla tillgängliga virtuella funktioner för närvarande är implementerade. Ladda ner den virtuella maskinen Nanonyam och biblioteken till den kan göras här.. Och här är sidan som beskriver de virtuella funktionerna. Och ja, min webbplats är mycket primitiv och inte anpassad för mobila enheter.

Programmet Nanonyam är gratis för hemmabruk och kommersiell användning. Programmet Nanonyam tillhandahålls i "befintligt skick". Källkoden tillhandahålls inte.

För närvarande är programmet under testning. Cirka 200 virtuella funktioner har implementerats, vilket gör det möjligt att skapa enkla program för Windows.
Det är uppenbart att det inte går att skapa något komplext i en sådan virtuell maskin, eftersom minnet för koden bara är 256 kB. Data kan lagras i separata filer, och bufferten för den grafiska delen är extern. Alla funktioner är förenklade och anpassade för 8-bitars arkitektur.

Vad kan man göra i Nanonyam? Jag har kommit på flera uppgifter.

Arbeta med programblock

En gång behövde jag utveckla en komplex meny för en grafisk display med 128×64 pixlar. Jag ville verkligen inte ständigt ladda om firmware till den verkliga mikrokontrollern för att se hur pixlarna ser ut. Idén till Nanonyam föddes där. På bilden nedan syns en bild från en verklig OLED-display av en av punkterna i den meny. Nu kan jag arbeta med den utan en verklig enhet.

Hur man skapar program för Windows i Arduino

Nanonyam (i sin slutliga vision) är ett bra verktyg för att arbeta med programblock för mikrokontrollers, eftersom det finns funktioner för grafikhantering (man kan imitera displayer och indikatorer), filhantering (man kan skapa loggar, läsa testdata), tangentbordsinteraktion (man kan läsa upp till 10 knappar samtidigt) och COM-portar (här finns ett separat avsnitt).

Skapa snabba program

Till exempel, om du snabbt behöver bearbeta 100500 textfiler. Varje fil måste öppnas, ändras något enligt en enkel algoritm, sparas och stängas. Om du är en mästare på Python, grattis, du har allt du behöver. Men om du är en hängiven Arduino-användare (och det finns många), kommer Nanonyam att hjälpa dig att lösa detta problem. Detta är min andra målsättning med Nanonyam: att lägga till en mängd användbara funktioner, t.ex. textbehandling, skapande av skärmdumpar eller simulering av tangenttryckningar i systemet (allt detta finns redan), samt en mängd andra funktioner för att lösa rutinuppgifter.

Testa hårdvara via COM-port

Nanonyam kan fungera som en terminal som arbetar enligt din algoritm. Du kan rita upp en liten meny för att styra enheten och visa data som mottas från porten. Du kan spara och läsa data från filer för analys. Det är ett praktiskt verktyg för enkel avlusning och kalibrering av hårdvara, samt för att skapa enkla virtuella kontrollpaneler för enheten. För studenter och unga forskare kan detta projekt vara mycket nyttigt.

Lär dig programmering

Som med hela Arduino-projektet ligger den främsta nyttan med Nanonyam i funktionernas, gränssnittets och bootloaderns enkelhet. Därför bör detta projekt vara intressant för nybörjarprogrammerare och de som är nöjda med niveau Arduino. För övrigt har jag själv inte riktigt studerat Arduino i detalj, eftersom jag alltid har använt WinAVR eller AVR Studio, börjar med assembler. Därför kommer exemplet nedan att vara något felaktigt, men fullt fungerande.

Hej, Habr!

Det är dags att bekanta sig med några av funktionerna i Nanonyam och skriva ett enkelt program. Vi kommer att koda i Arduino, men inte som vanligt, utan på det sätt jag just nu kan (jag har redan sagt att jag inte riktigt har lärt mig den här miljön än). Först skapar vi en ny sketch och väljer kortet Mega2560.

Hur man skapar program för Windows i Arduino

Spara sketchen som en fil och kopiera bredvid biblioteket Nanonyam. Det skulle vara korrekt att inkludera biblioteksrubriker, men jag vet inte hur man skriver kompileringen av separata filer i Arduino, så vi inkluderar biblioteken direkt (och alla på en gång):

#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 skulle dessutom vara ännu bättre att skapa en speciell modul "Nanonyam för Arduino" som kan installeras direkt från Arduino. Så snart jag får kläm på det, kommer jag att göra det, men för tillfället visar jag bara hur man arbetar med den virtuella maskinen. Vi skriver följande 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);//Задержка и разгрузка процессора
}

Sketch med detta program kan laddas ner här. En detaljerad beskrivning av funktionerna finns på webbplatsen. Jag hoppas att kommentarerna i den här koden är tillräckliga för att förstå innebörden. Här spelar funktionen sys_Nanonyam() rollen som "lösenord" för den virtuella maskinen, som ta bort begränsningarna för de virtuella funktionerna. Utan denna funktion stängs programmet av efter 3 sekunders drift.

Klicka på knappen "Verifiera" och det ska inte finnas några fel.

Hur man skapar program för Windows i Arduino

Nu måste vi få en binärfil (firmware). Välj menyn "Sketch>>Exportera binärfil (CTRL+ALT+S)«.

Hur man skapar program för Windows i Arduino

Då kommer två HEX-filer att kopieras till mappen med sketchen. Vi tar bara filen utan prefixet «with_bootloader.mega».

Det finns flera sätt att ange HEX-filen till virtuella maskinen Nanonyam, alla är beskrivna på denna sida. Jag föreslår att skapa bredvid filen Nanonyam.exe filen Nanonyam.path, där den fullständiga sökvägen till vår HEX-fil ska anges. Efter detta kan man starta Nanonyam.exe. Vi får ett fönster med vårt meddelande.

Hur man skapar program för Windows i Arduino

På liknande sätt kan program skapas i andra miljöer, till exempel i AVR Studio eller WinAVR.

Vi avslutar vår bekantskap med Nanonyam här. Huvudidén bör vara klar. Fler exempel finns på hemsidan. Om det finns tillräckligt med intresse för att använda detta projekt, så kommer jag att göra fler exempel och fortsätta att "fylla" biblioteken med virtuella funktioner. Specifika idéer för projektets utveckling samt rapporter om fel, buggar och missöden tas emot. Det är önskvärt att skicka dem via kontakterna, angivna på hemsidan. Diskutera gärna i kommentarfältet.

Tack för ert intresse och lycka till med programmeringen!

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster