Inhoudsopgave:
- Stap 1: Download Sunxi-tools
- Stap 2: Pak de broncode uit
- Stap 3: Download Code::blocks
- Stap 4: Test uw IDE
- Stap 5: Voltooi de test
- Stap 6: Nieuw project maken
- Stap 7: Bestanden toevoegen aan project
- Stap 8: Laat Gcc de ISO C-taalnorm uit 1999 volgen
- Stap 9: Vind de ontbrekende afhankelijkheid
- Stap 10: Pak de Mman. uit
- Stap 11: En voeg ze toe aan het project
- Stap 12: Correct pad
- Stap 13: exorcisme
- Stap 14: OPMERKINGEN
Video: Orange PI HowTo: Sunxi Tool voor Windows compileren onder Windows: 14 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
VEREISTEN:
Je zal nodig hebben
- Een (desktop)computer met Windows.
- Een internetverbinding.
- Een oranje PI-bord.
De laatste is optioneel, maar ik ben er zeker van dat je die al hebt. Anders lees je dit instructable niet.
Wanneer u de Orange PI-computer met één bord koopt, blijft het slechts een stuk dood metaal totdat het correct is geconfigureerd. En het belangrijkste configuratiebestand: "script.bin" is de eerste sleutel om het tot leven te brengen. Dit bestand bevindt zich in de opstartpartitie van uw opstartbare SD-kaart. En gelukkig voor ons is deze partitie in de meeste Linux-distributies van de officiële site (https://www.orangepi.org/downloadresources/) FAT32 en kan deze gemakkelijk door elke Windows-computer worden bekeken. Het vereenvoudigt de zaken echt, omdat er nog steeds geen betrouwbare manier is om van onder Windows naar de Linux ext2-partities te schrijven.
Helaas voor ons heeft het script.bin-configuratiebestand een binair formaat dat volledig onvriendelijk is voor menselijke bewerking. Je hebt een soort softwaretool nodig om het te ontsleutelen en terug te versleutelen nadat de nodige wijzigingen zijn aangebracht. En zo'n toolset bestaat. Het is de beruchte SUNXI-TOOLS. De vlieg in de zalf is dat het bedoeld is om onder Linux te draaien en dat we ofwel een speciale Linux-machine moeten hebben om alleen de sunxi-tools te gebruiken, of een manier moeten vinden om ze voor Windows te compileren.
Ik zou het gewoon kunnen compileren en het uitvoerbare bestand delen, maar je weet nooit of ze een nieuwe release willen maken en je hebt zo snel mogelijk een nieuwe compilatie nodig. Dus besloot ik een handleiding te maken hoe de essentiële tool uit de bronnen te compileren. Laten we beginnen.
Stap 1: Download Sunxi-tools
Download de laatste (of noodzakelijke) versie van de sunxi-tools sourcecode. Ga naar de URL: https://github.com/linux-sunxi/sunxi-tools/releases en kies ervoor om te downloaden als zip-archief.
Stap 2: Pak de broncode uit
Zodra de download is voltooid, pakt u de broncode uit in de map van uw keuze. (verder ga ik ervan uit dat deze map c:\sunxitools\ is, dus vervang dit pad door het eigen pad).
Stap 3: Download Code::blocks
Als u een geïnstalleerde kopie van een operationele c++-compiler voor Windows hebt. en als u weet hoe u het moet gebruiken, kunt u direct doorgaan naar stap 3. Anderen zouden een goede c++-compiler en een shell (IDE) moeten hebben om het comfortabel te kunnen gebruiken. De keuze van mij is code::blocks voor Windows samen met de vooraf geïnstalleerde MinGW-toolchain. Je kunt het hier vandaan halen:https://sourceforge.net/…/codeblocks-16.01mingw-setup.exe/download
Download en installeer het.
Stap 4: Test uw IDE
Om te testen of alles goed gaat, start u codeblokken, klikt u op "een nieuw project maken", kiest u "consoletoepassing", kiest u c of c++, typt u de titel van het afrekenproject, laat u de standaardinstellingen ongewijzigd in het volgende venster en klikt u op "voltooien ".
Stap 5: Voltooi de test
Klik vervolgens op een groene driehoek op het bovenpaneel van de IDE of gebruik het menupunt Build->Run. Als het goed is gegaan, zou u een bericht moeten zien van uw automatisch gegenereerde "Hallo wereld"-toepassing in het zwarte "DOS"-venster.
Als dit niet het geval is, betekent dit dat de IDE en de compiler niet goed werken en dat u moet onderzoeken hoe u dit recht kunt zetten. Waarschijnlijk zult u een andere versie van de programmeertools moeten downloaden of hun toestemmingen in uw firewall/antivirussoftware moeten controleren.
Stap 6: Nieuw project maken
Nu zou u een operationele C/C++ programmeur toolkit en de uitgepakte sunxi-tools broncodes in de c:\sunxitools\ map op uw computer moeten hebben. Het is tijd om een project samen te stellen. Maak een nieuw project in uw IDE. Kies het gewone C (niet c++) project van het type "console-applicatie".
Zorg ervoor dat u een project aanmaakt in de map c:\sunxitools\ en niet op een andere plaats. (EG-codeblokken hebben de neiging om een submap te maken met dezelfde naam als het project. Dus als je je project een naam hebt gegeven, zeg dan "test", en probeer het in c:\sunxitools\ te plaatsen, kan het zijn dat het project weg is naar c:\sunxitools\test\ als je niet oplettend genoeg bent.) Sunxi-tools bevatten verschillende hulpprogramma's, maar voor ons doel hebben we er maar één nodig: het zogenaamde "fexc" hulpprogramma.
Stap 7: Bestanden toevoegen aan project
Exact "fexc" utility is verantwoordelijk voor de conversie van script.bin naar tekstformaat en voor de back-conversie naar binair. Het is essentieel dat het uitvoerbare bestand van dit hulpprogramma de naam "fexc.exe" heeft, dus het is goed als u uw project als "fexc" hebt genoemd. U kunt echter elke andere naam van het project gebruiken, aangezien u het uitvoerbare bestand altijd kunt hernoemen na de compilatie, of u kunt "Project->Eigenschappen" kiezen in het bovenste vervolgkeuzemenu en in het verschijnende venster op het tabblad "Doelen bouwen" klikken, en bewerk daar het veld "Uitvoerbestandsnaam" om de naam van het uitvoerbare bestand te overschrijven.
Aan uw automatisch gegenereerde project moet u slechts vijf bronbestanden toevoegen:
- fexc.c
- script.c
- script_bin.c
- script_fex.c
- script_uboot.c
en zeven header-bestanden:
- list.h (verplaats het van de map c:\sunxitools\include\ naar de map c:\sunxitools)
- fexc.h
- script.h
- script_bin.h
- script_fex.h
- script_uboot.h
- versie.h
Zorg ervoor dat u de automatisch gegenereerde main.c uitsluit van het project, omdat fexc.c al de functie "int main" bevat. (Weet je nog dat elk programma maar één hoofdfunctie zou moeten hebben?).
Alle benodigde broncodebestanden bevinden zich al in de submap, waar u de broncodes hebt uitgepakt. De header-bestanden verdienen een paar woorden, waar ze te krijgen. "list.h" - bevindt zich meestal in de submap "include" van de set uitgepakte broncodes. "version.h" - maak het gewoon zelf aan. Zet daar een string zoals:
#define VERSIE "Win32"
Sla het bestand vervolgens op en sluit het. (Je mag het decoreren met #define's en #ifdef's als je wilt.)
Als u nu het project probeert te compileren, zal het klagen over veel fouten en één ontbrekend bestand. De fouten zijn meestal te wijten aan een beetje buitensporige stijlvrijheid, de sunxi-tools-programmeurs die ze gebruikten, en het ontbrekende bestand is de afhankelijkheid die niet is opgenomen in het pakket van de broncode. Laten we dit stap voor stap behandelen.
Stap 8: Laat Gcc de ISO C-taalnorm uit 1999 volgen
Om ervoor te zorgen dat de compiler niet klaagt over de te vrije programmeerstijl, is de "с99" -standaard van de compilatie ingesteld. Ga in codeblokken naar het menu "Project -> Build-opties" en vink in het "Compilerinstellingen -> Compilervlaggen" het selectievakje "Laat gcc de 1999 ISO C-taalstandaard volgen" aan. Of je kunt gewoon "-std=c99" toevoegen aan de tekenreeks van je compileropties. Als je nu probeert het project te compileren, zouden die tonnen fouten moeten verdwijnen en ben je één op één met de ontbrekende afhankelijkheid.
Stap 9: Vind de ontbrekende afhankelijkheid
De ontbrekende afhankelijkheid is het bestand "mman.h" - de header van een soort linux-geheugenbeheerder. Windows C heeft van nature niet zo'n bestand, maar gelukkig is er een Windows-poort van. Ga naar https://github.com/witwall/mman-win32 voor Windows. Download de momentopname van de git-repository.
Stap 10: Pak de Mman. uit
Pak de bestanden mman.c en mman.h uit en plaats ze in de map c:\sunxitools\.
Stap 11: En voeg ze toe aan het project
Stap 12: Correct pad
En in bestand "fex.c" raplece regel:
#erbij betrekken
naar de
#include "mman.h"
Bij deze stap zou uw compiler niets moeten klagen en krijgt u het lange wachten fexc.exe als uitvoer. Wees niet te vroeg blij. Het hulpprogramma is nog steeds niet volledig functioneel. U kunt hiervoor zorgen door een geldig script.bin-bestand te decoderen in de tekstvorm - script.fex-bestand en vervolgens het script.fex-bestand terug te coderen in de script.bin. U zult merken dat de grootte van het resulterende script.bin enigszins afwijkt van de grootte van het oorspronkelijke script.bin. En als u het resultaat nogmaals probeert te decoderen, zal het mislukken. Noch de Orange PI zal werken met deze script.bin. Om het functionele hulpprogramma te krijgen, moeten we een codebom ontladen, die iemand in de broncode van sunxi-tools heeft geplaatst. Het wordt onze volgende stap.
Stap 13: exorcisme
Om de codebom te ontladen, opent u het fexc.c-codebestand en vindt u daar een tekstreeks met de volgende inhoud:
else if ((out = open(bestandsnaam, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {
Vervang het gewoon door de volgende tekenreeks:
else if ((out = open(bestandsnaam, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 512))<0){
Als het niet de kwaadaardige cijfers "666" in de eerste reeks zijn, zou ik denken dat de codeur gewoon is vergeten de vlag O_BINARY te gebruiken. Maar het nummer van het beest verduidelijkt zijn bedoelingen wel transparant. Ga na, hoe ingenieus het is: door het subtiele verschil in hoe de bestanden worden verwerkt in Windows en Linux heeft de bom geen effect wanneer het hulpprogramma wordt gecompileerd en gebruikt onder Linux. Maar het verpest alles wanneer het hulpprogramma onder Windows wordt gebruikt.
Nadat de bom is ontwapend, kunt u eindelijk het fexc-hulpprogramma compileren en veilig gebruiken op uw Windows-desktopcomputer.
Stap 14: OPMERKINGEN
1) Om het fexc-hulpprogramma comfortabel te gebruiken, moet u twee batchbestanden krijgen:
bin2fex.bat - en - fex2bin.bat.
Je kunt ze krijgen van een of andere mislukte fexc.exe-build voor Windows die er is, of je kunt ze zelf typen:
- bin2fex.bat moet "fexc -I bin -O fex script.bin script.fex" bevatten
- fex2bin.bat moet "fexc -O bin -I fex script.fex script.bin" bevatten
2) Als het moeilijk is om de mman-manager voor Windows te vinden, kan men het gebruik ervan helemaal vermijden. Het vereist echter veel meer bewerking van het fexc.c-bestand en vereist op zijn minst enige kennis van c. Voor uw gemak deel ik de bewerkte broncode van de fexc van de sunxi-tools v1.4 vrij van de afhankelijkheid naar mman.h samen met het codeblocks-projectbestand en met voorbeeldscript.bin van een oranje pi. Je kunt fexc_nomman.zip downloaden
3) Het is mogelijk dat ze in opeenvolgende versies van sunxi-tools wat meer afhankelijkheden toevoegen. Voel je vrij om ze op internet te vinden en toe te voegen aan je compilatieproject.
5) Eindelijk is hier de voorgecompileerde versie van fexc.exe voor Win32:
fexc_nomman.zip
Als je lui genoeg bent, voel je dan vrij om ver. Houd er echter rekening mee dat het niet wordt bijgewerkt als/wanneer de nieuwere versies van SunxiTools/Windows beschikbaar zijn. Dus het is beter om te leren hoe je ze moet compileren dan afhankelijk te zijn van een of andere vaste binaire build, neem ik aan.
4) De "Oranje PI", "Code::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", enz… zijn de overeenkomstige handelsmerken van hun respectievelijke eigenaren.
5) Als je compiler klaagt over het niet vinden van mman-functies, zoals:
ongedefinieerde verwijzing naar '_imp_mmap'
Houd er rekening mee dat liefhebbers van definiëren van de mman-ontwikkelingsgemeenschap zijn vergeten dat de code niet alleen als dll-bibliotheek kan worden gecompileerd. Het kan ook een statische bibliotheek zijn of een op zichzelf staande code zoals we hier hebben. Om het probleem op te lossen, bewerkt u het "mman.h"-bestand als volgt:
a) zoek de tekenreeksen:
#if gedefinieerd(MMAN_LIBRARY)
#define MMANSHARED_EXPORT _declspec(dllexport) #else #define MMANSHARED_EXPORT _declspec(dllimport) #endif
b) voeg de string toe
#define MMANSHARED_EXPORT
net onder de tekenreeksen gevonden bij de vorige stap
Aanbevolen:
Powerbank onder de $ 10! - Doe-het-zelf - 3D geprint: 6 stappen (met afbeeldingen)
Powerbank onder de $ 10! | Doe-het-zelf | 3D-geprint: de huidige smartphone-industrie produceert een veel te krachtige telefoon dan we in de jaren 90 hadden verwacht, maar er is maar één ding dat ze missen, namelijk de batterij, ze zijn het slechtst. En de enige oplossing die we nu hebben is een powerbank. In deze video laat ik je zien hoe
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Kahoot! Web 2.0-tool: instructies voor het maken van quizzen voor docenten: 10 stappen
Kahoot! Web 2.0-tool - Quiz-instructies voor docenten: De volgende Instructable is bedoeld om docenten te laten zien hoe ze de Quiz-functie voor de Web 2.0-tool, Kahoot! Kahoot! kan worden gebruikt als een digitale gametool voor het beoordelen en beoordelen van de inhoudelijke kennis van studenten in verschillende vakken en op meer
Orange PI HowTo: instellen voor gebruik met een 5" HDMI TFT LCD-scherm - Ajarnpa
Orange PI HowTo: instellen om te gebruiken met een 5" HDMI TFT LCD-scherm: Als u voorzichtig genoeg was om een HDMI TFT LCD-scherm samen met uw Orange PI te bestellen, bent u waarschijnlijk ontmoedigd door de moeilijkheden bij het proberen om het te laten werken Terwijl anderen zelfs geen obstakels konden opmerken.De sleutel is dat er op le
Orange PI HowTo: instellen voor gebruik met auto-achteruitkijkscherm en HDMI-naar-RCA-adapter: 15 stappen
Orange PI HowTo: instellen voor gebruik met auto-achteruitkijkscherm en HDMI-naar-RCA-adapter: VOORWOORD. Het lijkt alsof elke andere een grote en zelfs grotere tv of monitor gebruikt met een gekke oranje PI-kaart. En het lijkt een beetje overkill als het bedoeld is voor embedded systemen. Hier hebben we iets kleins en iets goedkoops nodig. Zoals een