So erstellen Sie Windows-Programme in Arduino



Einmal hatte ich die verrückte Idee, 500 Laserpointer an einen Ort zu bringen. Ich habe viel Zeit verbracht und es getan. Es stellte sich als spektakulär und nutzlos heraus, aber es hat mir gefallen. Vor sechs Monaten kam mir eine andere verrückte Idee. Diesmal überhaupt nicht spektakulär, aber viel nützlicher. Ich habe auch viel Zeit damit verbracht. Und in diesem Artikel präsentiere ich eine Beta-Version meiner zweiten verrückten Idee.

Ich habe das Projekt Nanonyam (Nanonyam) angerufen und mir sogar ein Logo dafür ausgedacht (ich habe 5 Minuten lang gemalt).



Für diejenigen, die in Arduino denken, können wir sagen, dass Nanonyam ein virtuelles Arduino-Schutzschild für die Verwaltung von Windows ist.

Mit anderen Worten, Nanonyam ist eine virtuelle Maschine, die Firmware für den AVR-Mikrocontroller als Bytecode verwendet (ATMEGA2560 empfohlen). In dieser virtuellen Maschine befindet sich der AVR-Kernelsimulator. Anstelle von Peripheriegeräten, die sich an SRAM-Adressen von 0x0060 bis 0x01FF befinden, gibt es jedoch eine spezielle Schnittstelle zu virtuellen Funktionen (einschließlich der Windows-API-Funktionen). Und hier ist es sehr wichtig, sofort zu verstehen: Der Code für Nanonyam sollte keinen Zugriff auf den angegebenen Speicherbereich haben, um beispielsweise nicht versehentlich die Funktion zum Löschen von Dateien oder zum Formatieren der Festplatte aufzurufen. Der Rest des SRAM-Speicherbereichs von 0x0200 bis 0xFFFF (dies ist mehr als bei einem echten Mikrocontroller) steht dem Benutzer für jeden Zweck zur Verfügung. Ich stelle sofort fest, dass es einen besonderen Schutz gegen versehentliches Starten der Firmware eines realen Mikrocontrollers (oder einer Firmware aus einer anderen Architektur) gibt: Bevor Sie die "gefährlichen" Funktionen aktivieren, müssen Sie eine spezielle knifflige virtuelle Funktion aufrufen. Es gibt einige andere Sicherheitsfunktionen.

Um Programme für Nanonyam zu erstellen, müssen Sie spezielle Bibliotheken verwenden, die alle derzeit verfügbaren virtuellen Funktionen implementieren. Sie können die virtuelle Nanonyam-Maschine und ihre Bibliotheken hier herunterladen. Und hier ist die Seite zur Beschreibung virtueller Funktionen . Und ja, meine Website ist sehr primitiv und nicht für mobile Geräte geeignet.

Nanonyam ist kostenlos für den privaten und gewerblichen Gebrauch. Nanonyam ist "wie es ist". Quellcode nicht angegeben.

Derzeit befindet sich das Programm in der Testphase. Es wurden ungefähr 200 virtuelle Funktionen implementiert, mit denen Sie einfache Programme für Windows erstellen können.
Offensichtlich funktioniert das Erstellen von etwas Kompliziertem in einer solchen virtuellen Maschine nicht, da der Speicher für den Code nur 256 kB beträgt. Daten können in separaten Dateien gespeichert werden, ein Puffer für den Grafikteil wird extern implementiert. Alle Funktionen sind vereinfacht und an die 8-Bit-Architektur angepasst.

Was kann man in Nanonyam tun? Ich habe mir mehrere Aufgaben ausgedacht.

Entwicklung von Programmblöcken


Einmal musste ich ein komplexes Menü für ein 128x64-Punkt-Grafikdisplay entwickeln. Ich wollte die Firmware wirklich nicht ständig in einen echten Mikrocontroller herunterladen, um zu sehen, wie die Pixel aussehen. So wurde die Idee von Nanonyam geboren. In der folgenden Abbildung ist das Bild von der realen OLED-Anzeige eines der Elemente in diesem Menü dargestellt. Jetzt kann ich es ohne ein echtes Gerät ausarbeiten.



Nanonyam (in seiner endgültigen Idee) ist ein gutes Werkzeug zum Ausarbeiten von Softwareblöcken für Mikrocontroller, da es Funktionen zum Arbeiten mit Grafiken (Sie können Anzeigen und Anzeigen simulieren), mit Dateien (Sie können Protokolle erstellen, Testdaten lesen) und einer Tastatur (Sie können bis zu lesen) gibt 10 Tasten gleichzeitig), mit COM-Anschlüssen (hier ist ein separates Element).

Erstellen Sie schnelle Programme


Beispielsweise müssen Sie schnell 100.500 Textdateien verarbeiten. Jeder muss geöffnet, nach einem einfachen Algorithmus leicht verändert, gespeichert und geschlossen werden. Wenn Sie ein Python-Meister sind, dann gratuliere ich Ihnen, Sie haben alles. Aber wenn Sie ein eingefleischter Arduino-Arbeiter sind (und es gibt viele von ihnen), hilft Ihnen Nanonyam bei der Lösung dieses Problems. Dies ist genau mein zweites Ziel in Nanonyam: viele nützliche Funktionen wie Textverarbeitung, das Erstellen von Screenshots oder das Simulieren von Tastenanschlägen im System (dies ist übrigens bereits vorhanden) sowie viele andere Funktionen zum Lösen von Routineaufgaben hinzuzufügen.

Drüsen über COM-Port testen


Nanonyam kann als Terminal fungieren, das gemäß Ihrem Algorithmus arbeitet. Sie können ein kleines Menü zeichnen, um das Gerät zu steuern und die vom Port empfangenen Daten anzuzeigen. Sie können Daten aus Dateien zur Analyse speichern und lesen. Ein praktisches Tool zum einfachen Debuggen und Kalibrieren von Drüsen sowie zum Erstellen einfacher Bedienfelder für virtuelle Instrumente. Für Studenten und junge Wissenschaftler kann dieses Projekt sehr nützlich sein.

Programmiertraining


Wie beim gesamten Arduino-Projekt besteht der Hauptnutzen von Nanonyam jedoch in der Vereinfachung seiner Funktionen, seiner Schnittstelle und seines Bootloaders. Daher sollte dieses Projekt für Anfänger und diejenigen, die mit dem Arduino-Niveau zufrieden sind, von Interesse sein. Übrigens habe ich selbst Arduino noch nicht im Detail studiert, da ich immer WinAVR oder AVR Studio verwendet habe, aber ich habe mit Assembler angefangen. Daher ist das folgende Beispielprogramm etwas falsch, funktioniert aber recht gut.

Hallo Habr!


Es ist Zeit, einige der Funktionen von Nanonyam kennenzulernen und ein einfaches Programm zu schreiben. Wir werden in Arduino schreiben, aber nicht so, wie es üblich ist, sondern so, wie ich es jetzt kann (ich habe bereits gesagt, dass ich mit dieser Umgebung nicht sehr gut umgegangen bin). Erstellen Sie zunächst eine neue Skizze und wählen Sie die Mega2560-Karte aus.



Speichern Sie die Skizze in einer Datei und kopieren Sie die Nanonyam-Bibliothek in der Nähe . Es wäre richtig, die Bibliotheksheader einzuschließen, aber ich weiß nicht, wie man die Zusammenstellung einzelner Dateien in Arduino schreibt. Schalten Sie daher die Bibliotheken vorerst direkt (und auf einmal) ein:

#include <stdio.h> #include "Nanonyam\nN_System_lib.c" #include "Nanonyam\nN_Keyboard_lib.c" #include "Nanonyam\nN_File_lib.c" #include "Nanonyam\nN_Math_lib.c" #include "Nanonyam\nN_Text_lib.c" #include "Nanonyam\nN_Graphics_lib.c" #include "Nanonyam\nN_RS232_lib.c" 

Noch richtiger wäre es, ein spezielles Modul „Nanonyam for Arduino“ zu erstellen, das direkt von Arduino aus installiert werden kann. Sobald ich damit fertig bin, werde ich es tun, aber im Moment werde ich nur die Essenz der Arbeit mit einer virtuellen Maschine zeigen. Wir schreiben den folgenden Code:

 //       void setup() { sys_Nanonyam();//    g_SetScreenSize(400,200);//   400200  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);//    } 

Eine Skizze mit diesem Programm kann hier heruntergeladen werden . Suchen Sie nach einer detaillierten Beschreibung der Funktionen auf der Website . Ich hoffe, die Kommentare in diesem Code reichen aus, um den Punkt zu verstehen. Hier spielt die Funktion sys_Nanonyam () die Rolle eines „Kennworts“ für die virtuelle Maschine, wodurch Einschränkungen für virtuelle Funktionen aufgehoben werden . Ohne diese Funktion wird das Programm nach 3 Sekunden geschlossen.

Klicken Sie auf die Schaltfläche "Überprüfen" und es sollten keine Fehler auftreten.



Jetzt müssen Sie die Binärdatei (Firmware) erhalten. Wählen Sie das Menü " Skizze >> Binärdatei exportieren (STRG + ALT + S) ".



In diesem Fall werden zwei HEX-Dateien in den Ordner mit der Skizze kopiert. Wir nehmen nur die Datei ohne das Präfix "with_bootloader.mega".

Es gibt verschiedene Möglichkeiten, eine HEX-Datei für eine virtuelle Nanonyam-Maschine anzugeben, die alle auf dieser Seite beschrieben werden . Ich schlage vor, die Datei Nanonyam.path neben der Datei Nanonyam.exe zu erstellen, in die der vollständige Pfad zu unserer HEX-Datei geschrieben werden soll. Dann können Sie Nanonyam.exe ausführen . Wir bekommen ein Fenster mit unserer Inschrift.



Ebenso können Sie Programme in anderen Umgebungen erstellen, z. B. in AVR Studio oder WinAVR.

Hier beenden wir die Bekanntschaft mit Nanonyam. Die Grundidee sollte klar sein. Weitere Beispiele finden Sie auf der Website . Wenn es genügend Leute gibt, die dieses Projekt verwenden möchten, werde ich weitere Beispiele anführen und weiterhin die Bibliotheken virtueller Funktionen „ausfüllen“. Konkrete Ideen für die Entwicklung des Projekts und Berichte über Fehlfunktionen, Fehler und Irrtümer werden akzeptiert. Es ist ratsam, sie an die auf der Website aufgeführten Kontakte zu senden. Eine Diskussion ist in den Kommentaren willkommen.

Vielen Dank für Ihre Aufmerksamkeit und gute Programmierung!

Source: https://habr.com/ru/post/de472958/


All Articles