Inhaltsverzeichnis:

Orange PI HowTo: Sunxi Tool für Windows unter Windows kompilieren - Gunook
Orange PI HowTo: Sunxi Tool für Windows unter Windows kompilieren - Gunook

Video: Orange PI HowTo: Sunxi Tool für Windows unter Windows kompilieren - Gunook

Video: Orange PI HowTo: Sunxi Tool für Windows unter Windows kompilieren - Gunook
Video: Orange Pi Zero Full Set Up Guide - the affordable Raspberry Pi! 2024, Juli
Anonim
Orange PI HowTo: Sunxi Tool für Windows unter Windows kompilieren
Orange PI HowTo: Sunxi Tool für Windows unter Windows kompilieren

VORAUSSETZUNGEN:

Du wirst brauchen

  1. Ein (Desktop-)Computer, auf dem Windows ausgeführt wird.
  2. Eine Internetverbindung.
  3. Ein Orange PI-Board.

Letzteres ist optional, aber ich bin sicher, dass Sie es bereits haben. Andernfalls werden Sie dieses instructable nicht lesen.

Wenn Sie den Orange PI Einplatinencomputer kaufen, bleibt er nur ein Stück totes Metall, bis er richtig konfiguriert ist. Und seine Hauptkonfigurationsdatei: "script.bin" ist der erste Schlüssel, um es zum Leben zu erwecken. Diese Datei befindet sich in der Bootpartition Ihrer bootfähigen SD-Karte. Und zum Glück für uns ist diese Partition in den meisten Linux-Distributionen von der offiziellen Site (https://www.orangepi.org/downloadresources/) FAT32 und kann von jedem Windows-Computer leicht angezeigt werden. Es vereinfacht die Dinge wirklich, da es immer noch keine zuverlässige Möglichkeit gibt, unter Windows in die Linux-ext2-Partitionen zu schreiben.

Unglücklicherweise hat die Konfigurationsdatei script.bin ein Binärformat, das für die Bearbeitung durch Menschen völlig ungeeignet ist. Man braucht eine Art Software-Tool, um es zu entschlüsseln und nach den notwendigen Änderungen wieder zu verschlüsseln. Und ein solches Toolset existiert. Es ist das berüchtigte SUNXI-TOOLS. Der Haken an der Sache ist, dass es unter Linux laufen soll und wir entweder einen dedizierten Linux-Rechner halten müssen, um nur die Sunxi-Tools zu verwenden, oder einen Weg finden, sie für Windows zu kompilieren.

Ich könnte es einfach kompilieren und die ausführbare Datei teilen, aber man weiß nie, ob sie eine neue Version machen möchten und Sie werden so schnell wie möglich eine neue Zusammenstellung benötigen. Also beschloss ich, eine Anleitung zu erstellen, wie man das wesentliche Werkzeug aus den Quellen zusammenstellt. Lass uns anfangen.

Schritt 1: Sunxi-Tools herunterladen

Sunxi-Tools herunterladen
Sunxi-Tools herunterladen
Sunxi-Tools herunterladen
Sunxi-Tools herunterladen

Holen Sie sich die neueste (oder erforderliche) Version des sunxi-tools-Quellcodes. Gehen Sie zur URL: https://github.com/linux-sunxi/sunxi-tools/releases und wählen Sie den Download als ZIP-Archiv.

Schritt 2: Entpacken Sie den Quellcode

Entpacken Sie den Quellcode
Entpacken Sie den Quellcode

Sobald der Download abgeschlossen ist, entpacken Sie den Quellcode in den Ordner Ihrer Wahl. (Weiterhin gehe ich davon aus, dass dieser Ordner c:\sunxitools\ ist, also ersetzen Sie diesen Pfad durch Ihren eigenen Pfad).

Schritt 3: Code herunterladen::blocks

Download-Code::Blöcke
Download-Code::Blöcke

Wenn Sie über eine installierte Kopie eines funktionsfähigen C++-Compilers für Windows verfügen. und wenn Sie wissen, wie man es benutzt, können Sie direkt mit Schritt 3 fortfahren. Andere sollten sich einen geeigneten c++-Compiler und eine Shell (IDE) besorgen, um es bequem verwenden zu können. Meine Wahl ist code::blocks für Windows zusammen mit der vorinstallierten MinGW-Toolchain. Sie können es von hier erhalten:

Laden Sie es herunter und installieren Sie es.

Schritt 4: Testen Sie Ihre IDE

Testen Sie Ihre IDE
Testen Sie Ihre IDE

Um zu testen, ob alles in Ordnung ist, starten Sie Codeblöcke, klicken Sie auf "Neues Projekt erstellen", wählen Sie "Konsolenanwendung", wählen Sie entweder c oder c++, geben Sie den Titel des Checkout-Projekts ein, lassen Sie die Standardeinstellungen im nächsten Fenster unberührt und klicken Sie auf "Fertigstellen". ".

Schritt 5: Test abschließen

Kompletter Test
Kompletter Test

Klicken Sie dann auf ein grünes Dreieck im oberen Bereich der IDE oder verwenden Sie den Menüpunkt Build->Run. Wenn alles richtig gelaufen ist, sollten Sie eine Nachricht von Ihrer automatisch generierten "Hallo Welt"-Anwendung im schwarzen "DOS"-Fenster sehen.

Wenn nicht, bedeutet dies, dass die IDE und der Compiler nicht richtig funktionieren und Sie müssen untersuchen, wie Sie dies richtig einstellen. Wahrscheinlich müssen Sie eine andere Version der Programmiertools herunterladen oder deren Berechtigungen in Ihrer Firewall/Antivirus-Software überprüfen.

Schritt 6: Neues Projekt erstellen

Neues Projekt erstellen
Neues Projekt erstellen
Neues Projekt erstellen
Neues Projekt erstellen
Neues Projekt erstellen
Neues Projekt erstellen
Neues Projekt erstellen
Neues Projekt erstellen

Jetzt sollten Sie ein funktionsfähiges C/C++-Programmier-Toolkit und die entpackten sunxi-tools-Quellcodes im Ordner c:\sunxitools\ auf Ihrem Computer haben. Es ist Zeit, ein Projekt zusammenzustellen. Erstellen Sie ein neues Projekt in Ihrer IDE. Wählen Sie das einfache C-Projekt (nicht C++) vom Typ "Konsolenanwendung".

Stellen Sie sicher, dass Sie das Projekt im Ordner c:\sunxitools\ erstellen und nicht an einem anderen Ort. (ZB Codeblöcke neigen dazu, einen Unterordner mit dem gleichen Namen wie das Projekt zu erstellen. Wenn Sie also Ihr Projekt benannt haben, sagen Sie "test" und versuchen Sie, es in c:\sunxitools\ zu platzieren zu c:\sunxitools\test\, wenn Sie nicht aufmerksam genug sind.) Sunxi-Tools enthalten mehrere Dienstprogramme, aber für unseren Zweck benötigen wir nur eines: das sogenannte "fexc"-Dienstprogramm.

Schritt 7: Dateien zum Projekt hinzufügen

Dateien zum Projekt hinzufügen
Dateien zum Projekt hinzufügen

Genau das Dienstprogramm "fexc" ist für die Konvertierung der script.bin in das Textformat und für die Rückkonvertierung in das Binärformat verantwortlich. Es ist wichtig, dass die ausführbare Datei dieses Dienstprogramms den Namen "fexc.exe" hat, daher ist es gut, wenn Sie Ihr Projekt als "fexc" benannt haben. Sie können jedoch jeden anderen Namen des Projekts verwenden, da Sie die ausführbare Datei nach der Kompilierung jederzeit umbenennen können, oder entweder Sie wählen "Projekt->Eigenschaften" aus dem oberen Pulldown-Menü und klicken im erscheinenden Fenster auf die Registerkarte "Ziele erstellen", und bearbeiten Sie dort das Feld "Ausgabedateiname", um den Namen der ausführbaren Datei zu überschreiben.

Zu Ihrem automatisch generierten Projekt sollten Sie nur fünf Quelldateien hinzufügen:

  • fexc.c
  • script.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

und sieben Header-Dateien:

  • list.h (vom c:\sunxitools\include\ Ordner in den c:\sunxitools\ Ordner verschieben)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Achten Sie darauf, die automatisch generierte main.c aus dem Projekt auszuschließen, da fexc.c bereits die Funktion "int main" enthält. (Denken Sie daran, dass jedes Programm nur eine Hauptfunktion haben sollte?).

Alle notwendigen Quellcodedateien befinden sich bereits im Unterordner, in den Sie die Quellcodes entpackt haben. Die Header-Dateien verdienen ein paar Worte, wo man sie bekommt. "list.h" - befindet sich normalerweise im Unterordner "include" des entpackten Quellcodesatzes. "version.h" - einfach selbst erstellen. Fügen Sie dort eine Zeichenfolge ein wie:

#define-VERSION "Win32"

Speichern und schließen Sie dann die Datei. (Sie können es mit #define und #ifdef dekorieren, wenn Sie möchten.)

Wenn Sie jetzt versuchen, das Projekt zu kompilieren, werden viele Fehler und eine fehlende Datei angezeigt. Die Fehler sind meistens auf ein bisschen zu viel Stilfreiheit zurückzuführen, die verwendeten Sunxi-Tools-Programmierer und die fehlende Datei ist die Abhängigkeit, die nicht im Quellcodepaket enthalten ist. Lassen Sie uns Schritt für Schritt damit umgehen.

Schritt 8: Lassen Sie Gcc dem ISO C-Sprachstandard von 1999 folgen

Lassen Sie Gcc dem ISO C-Sprachstandard von 1999 folgen
Lassen Sie Gcc dem ISO C-Sprachstandard von 1999 folgen

Damit sich der Compiler nicht über den zu freien Programmierstil beschwert, setzen Sie den "с99" Standart der Compilierung. Gehen Sie in Codeblöcken zum Menü "Projekt -> Build-Optionen" und aktivieren Sie in den "Compiler-Einstellungen -> Compiler-Flags" das Kontrollkästchen "Gcc dem 1999 ISO C-Sprachstandard folgen". Oder Sie können einfach "-std=c99" zu Ihrem Compiler-Optionsstring hinzufügen. Wenn Sie jetzt versuchen, das Projekt zu kompilieren, sollten diese Tonnen von Fehlern verschwinden und Sie sind eins zu eins mit der fehlenden Abhängigkeit.

Schritt 9: Finden Sie die fehlende Abhängigkeit

Finden Sie die fehlende Abhängigkeit
Finden Sie die fehlende Abhängigkeit

Die fehlende Abhängigkeit ist die Datei "mman.h" - der Header einer Art Linux-Speichermanager. Windows C hat nativ keine solche Datei, aber glücklicherweise gibt es eine Windows-Portierung davon. Gehen Sie zu https://github.com/witwall/mman-win32 für Windows. Laden Sie den Snapshot des Git-Repositorys herunter.

Schritt 10: Auspacken des Mman

Auspacken des Mman
Auspacken des Mman

Entpacken Sie die Dateien mman.c und mman.h und legen Sie sie in den Ordner c:\sunxitools\ ab.

Schritt 11: Und sie zum Projekt hinzufügen

Und sie zum Projekt hinzufügen
Und sie zum Projekt hinzufügen

Schritt 12: Korrekter Pfad

Korrekter Pfad
Korrekter Pfad

Und in der Datei "fex.c" raplece-Zeile:

#enthalten

zum

#include "mman.h"

An diesem Schritt sollte Ihr Compiler nichts beanstanden und Sie erhalten die lange Wartezeit fexc.exe als Ausgabe. Sei nicht zu früh glücklich. Das Dienstprogramm ist noch nicht voll funktionsfähig. Sie können dies sicherstellen, indem Sie eine gültige script.bin-Datei in die Textform entschlüsseln - script.fex-Datei mit anschließender Verschlüsselung der script.fex-Datei zurück in die script.bin. Sie werden feststellen, dass die Größe der resultierenden script.bin geringfügig von der Größe der ursprünglichen script.bin abweicht. Und wenn Sie versuchen, das Ergebnis erneut zu entschlüsseln, schlägt es fehl. Weder der Orange PI funktioniert mit dieser script.bin. Um das funktionale Dienstprogramm zu erhalten, müssen wir eine Codebombe entladen, die jemand in den Sunxi-Tools-Quellcode eingefügt hat. Es wird unser nächster Schritt sein.

Schritt 13: Exorzismus

Exorzismus
Exorzismus

Um die Codebombe zu entladen, öffnen Sie die Codedatei fexc.c und finden Sie dort einen Textstring des nächsten Inhalts:

else if ((out = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {

Ersetzen Sie es einfach durch die nächste Zeichenfolge:

else if ((out = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 512))<0){

Wenn nicht die bösen Ziffern "666" in der ersten Zeichenfolge sind, würde ich denken, dass der Coder gerade vergessen hat, das O_BINARY-Flag zu verwenden. Aber die Nummer des Tieres macht seine Absichten transparent. Stellen Sie sich vor, wie genial es ist: Aufgrund der feinen Unterschiede in der Verarbeitung der Dateien unter Windows und Linux hat die Bombe keine Wirkung, wenn das Dienstprogramm unter Linux kompiliert und verwendet wird. Aber es ruiniert alles, wenn das Dienstprogramm unter Windows verwendet wird.

Nachdem die Bombe entschärft wurde, können Sie endlich das Dienstprogramm fexc auf Ihrem Windows-Desktop-Computer kompilieren und sicher verwenden.

Schritt 14: HINWEISE

ANMERKUNGEN
ANMERKUNGEN

1) Um das Dienstprogramm fexc bequem zu verwenden, sollten Sie zwei Batch-Dateien erhalten:

bin2fex.bat - und - fex2bin.bat.

Sie können sie von einem fehlgeschlagenen fexc.exe-Build für Windows erhalten, oder Sie können sie selbst eingeben:

  • bin2fex.bat sollte "fexc -I bin -O fex script.bin script.fex" enthalten
  • fex2bin.bat sollte "fexc -O bin -I fex script.fex script.bin" enthalten

2) Wenn es schwierig ist, den mman-Manager für Windows zu finden, kann man seine Verwendung ganz vermeiden. Es erfordert jedoch viel mehr Bearbeitung der Datei fexc.c und erfordert zumindest einige Kenntnisse von c. Für Ihre Bequemlichkeit teile ich den bearbeiteten Quellcode des fexc aus den sunxi-tools v1.4 frei von der Abhängigkeit zu mman.h zusammen mit der Codeblocks-Projektdatei und mit dem Beispiel script.bin von einem orangefarbenen Pi. Sie können fexc_nomman.zip herunterladen

3) Es ist möglich, dass in nachfolgenden Versionen von sunxi-tools weitere Abhängigkeiten hinzugefügt werden. Fühlen Sie sich frei, sie über das Internet zu finden und zu Ihrem Kompilationsprojekt hinzuzufügen.

5) Endlich hier die vorkompilierte Version von fexc.exe für Win32:

fexc_nomman.zip

Wenn Sie faul genug sind, können Sie ver. Beachten Sie jedoch, dass es nicht aktualisiert wird, wenn/wenn die neueren Versionen von SunxiTools/Windows verfügbar sind. Es ist also besser zu lernen, wie man sie kompiliert, als von einem festen Binär-Build abhängig zu sein, nehme ich an.

4) Die "Orange PI", "Code::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", etc… sind die entsprechenden Warenzeichen ihrer jeweiligen Eigentümer.

5) Wenn sich Ihr Compiler darüber beschwert, keine mman-Funktionen zu finden, wie:

undefinierter Verweis auf '_imp_mmap'

Seien Sie sich bewusst, dass Define-Liebhaber der mman-Entwicklungsgemeinschaft vergessen haben, dass der Code nicht nur als DLL-Bibliothek kompiliert werden kann. Es kann auch eine statische Bibliothek oder ein eigenständiger Code sein, wie wir ihn hier haben. Um das Problem zu beheben, bearbeiten Sie die Datei "mman.h" wie folgt:

a) Finde die Zeichenfolgen:

#wenn definiert(MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec(dllexport) #else #define MMANSHARED_EXPORT _declspec(dllimport) #endif

b) füge die Zeichenfolge hinzu

#define MMANSHARED_EXPORT

direkt unter den im vorherigen Schritt gefundenen Strings

Empfohlen: