Sommario:

Orange PI HowTo: Compilare lo strumento Sunxi per Windows in Windows: 14 passaggi (con immagini)
Orange PI HowTo: Compilare lo strumento Sunxi per Windows in Windows: 14 passaggi (con immagini)

Video: Orange PI HowTo: Compilare lo strumento Sunxi per Windows in Windows: 14 passaggi (con immagini)

Video: Orange PI HowTo: Compilare lo strumento Sunxi per Windows in Windows: 14 passaggi (con immagini)
Video: Orange Pi at Starbucks (ICS) 2024, Dicembre
Anonim
Orange PI HowTo: Compilare lo strumento Sunxi per Windows sotto Windows
Orange PI HowTo: Compilare lo strumento Sunxi per Windows sotto Windows

PREQUISITI:

Avrai bisogno

  1. Un computer (desktop) con Windows.
  2. Una connessione Internet.
  3. Una scheda PI arancione.

L'ultimo è facoltativo, ma sono sicuro che lo possiedi già. Altrimenti non leggerai questo istruibile.

Quando acquisti il computer a scheda singola Orange PI, rimane solo un pezzo di metallo morto finché non viene configurato correttamente. E il suo file di configurazione principale: "script.bin" è la prima chiave per renderlo vivo. Questo file si trova nella partizione di avvio della scheda SD avviabile. E fortunatamente per noi, nella maggior parte delle distribuzioni Linux dal sito ufficiale (https://www.orangepi.org/downloadresources/) questa partizione è FAT32 e può essere facilmente vista da qualsiasi computer Windows. Semplifica davvero le cose, dal momento che non esiste ancora un modo affidabile per scrivere nelle partizioni Linux ext2 da Windows.

Sfortunatamente per noi, il file di configurazione script.bin ha un formato binario completamente ostile per l'editing umano. È necessario un qualche tipo di strumento software per decrittografarlo e crittografarlo nuovamente dopo che sono state apportate le modifiche necessarie. E un tale set di strumenti esiste. È famigerato SUNXI-TOOLS. L'unico neo è che è pensato per funzionare sotto Linux e dobbiamo mantenere una macchina Linux dedicata solo per usare gli strumenti sunxi, o trovare un modo per compilarli per Windows.

Potrei semplicemente compilarlo e condividere l'eseguibile, ma non si sa mai se vorrebbe fare una nuova versione e Avrai bisogno di una nuova compilazione al più presto. Così ho deciso di creare una guida su come compilare lo strumento essenziale dai sorgenti. Iniziamo.

Passaggio 1: scarica gli strumenti Sunxi

Scarica gli strumenti Sunxi
Scarica gli strumenti Sunxi
Scarica gli strumenti Sunxi
Scarica gli strumenti Sunxi

Ottieni l'ultima (o necessaria) versione del codice sorgente di sunxi-tools. Vai all'URL: https://github.com/linux-sunxi/sunxi-tools/releases e scegli di scaricare come archivio zip.

Passaggio 2: decomprimi il codice sorgente

Decomprimi il codice sorgente
Decomprimi il codice sorgente

Una volta terminato il download, decomprimi il codice sorgente nella cartella di tua scelta. (inoltre assumerò che questa cartella sia c:\sunxitools\, quindi sostituisci questo percorso con il tuo percorso).

Passaggio 3: Scarica il codice::blocks

Scarica il codice::blocchi
Scarica il codice::blocchi

Se hai una copia installata di un compilatore c++ operativo per Windows. e se sai come usarlo, puoi procedere direttamente al passaggio 3. Altri dovrebbero ottenere un compilatore c++ appropriato e una shell (IDE) per usarlo comodamente. La mia scelta è code::blocks per Windows insieme alla toolchain MinGW preinstallata. Puoi ottenerlo da qui:

Scaricalo e installalo.

Passaggio 4: prova il tuo IDE

Metti alla prova il tuo IDE
Metti alla prova il tuo IDE

Per verificare se le cose vanno bene, avvia i blocchi di codice, fai clic su "crea un nuovo progetto", scegli "applicazione console", scegli c o c++, digita il titolo del progetto di checkout, mantieni intatte le impostazioni predefinite nella finestra successiva e fai clic su "finire ".

Passaggio 5: test completo

Prova completa
Prova completa

Quindi fare clic su un triangolo verde nel pannello superiore dell'IDE o utilizzare il punto di menu Build->Esegui. Se le cose sono andate bene Dovresti vedere un messaggio dalla tua applicazione "Hello world" generata automaticamente nella finestra nera "DOS".

In caso contrario, significa che l'IDE e il compilatore non funzionano correttamente e dovrai indagare su come impostarlo correttamente. Probabilmente dovrai scaricare un'altra versione degli strumenti di programmazione o verificarne i permessi nel tuo software firewall/antivirus.

Passaggio 6: crea un nuovo progetto

Crea nuovo progetto
Crea nuovo progetto
Crea nuovo progetto
Crea nuovo progetto
Crea nuovo progetto
Crea nuovo progetto
Crea nuovo progetto
Crea nuovo progetto

Ora dovresti avere un toolkit per programmatori C/C++ operativo e i codici sorgente di sunxi-tools scompattati nella cartella c:\sunxitools\ sul tuo computer. È tempo di mettere insieme un progetto. Crea un nuovo progetto nel tuo IDE. Scegli il semplice progetto C (non c++) del tipo "applicazione console".

Assicurati di creare il progetto nella cartella c:\sunxitools\ e non in un altro posto. (Ad esempio i blocchi di codice tendono a creare una sottocartella con lo stesso nome del progetto. Quindi, se hai chiamato il tuo progetto, dì "test" e prova a inserirlo in c:\sunxitools\, potresti finire con il progetto andato a c:\sunxitools\test\ se non sei abbastanza attento.) Sunxi-tools contiene diverse utilità, ma per il nostro scopo ne avremo bisogno solo una: la cosiddetta utilità "fexc".

Passaggio 7: aggiungi file al progetto

Aggiungi file al progetto
Aggiungi file al progetto

Esattamente l'utility "fexc" è responsabile della conversione di script.bin in formato testo e della conversione in binario. È essenziale che l'eseguibile di questa utility abbia il nome "fexc.exe", quindi va bene se hai chiamato il tuo progetto come "fexc". Tuttavia è possibile utilizzare qualsiasi altro nome del progetto, poiché è sempre possibile rinominare l'eseguibile dopo la compilazione, oppure è possibile scegliere "Progetto->Proprietà" dal menu a discesa in alto e nella finestra visualizzata fare clic sulla scheda "Costruisci obiettivi", e modifica il campo "Nome file di output" per sovrascrivere il nome dell'eseguibile.

Al tuo progetto autogenerato dovresti aggiungere solo cinque file sorgente:

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

e sette file di intestazione:

  • list.h (spostalo dalla cartella c:\sunxitools\include\ nella cartella c:\sunxitools)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • versione.h

Assicurati di escludere il main.c autogenerato dal progetto, perché fexc.c contiene già la funzione "int main". (Ricordate che qualsiasi programma dovrebbe avere una sola funzione principale?).

Tutti i file del codice sorgente necessari sono già nella sottocartella, dove hai decompresso i codici sorgente in. I file di intestazione meritano un paio di parole, dove trovarli. "list.h" - di solito si trova nella sottocartella "include" del set di codici sorgente decompressi. "version.h" - crealo tu stesso. Metti lì una stringa come:

#define VERSIONE "Win32"

Quindi salva e chiudi il file. (Puoi decorarlo con #define e #ifdef se vuoi.)

Se ora provi a compilare il progetto, si lamenterà di molti errori e di un file mancante. Gli errori sono per lo più dovuti a un po' di eccessiva libertà di stile, i programmatori sunxi-tools erano soliti applicare, e il file mancante è la dipendenza non inclusa nel pacchetto del codice sorgente. Affrontiamo questo passo dopo passo.

Passaggio 8: fare in modo che Gcc segua lo standard del linguaggio ISO C del 1999

Fai in modo che Gcc segua lo standard del linguaggio ISO C del 1999
Fai in modo che Gcc segua lo standard del linguaggio ISO C del 1999

Affinché il compilatore non si lamenti dello stile di programmazione troppo libero, imposta lo standard "с99" della compilazione. Nei blocchi di codice vai al menu "Progetto -> Opzioni di compilazione" e in "Impostazioni del compilatore -> Flag del compilatore" seleziona la casella di controllo "Fai in modo che gcc segua lo standard del linguaggio ISO C del 1999". Oppure puoi semplicemente aggiungere "-std=c99" nella stringa delle opzioni del compilatore. Ora, se provi a compilare il progetto, quelle tonnellate di errori dovrebbero sparire e sei uno a uno con la dipendenza mancante.

Passaggio 9: trova la dipendenza mancante

Trova la dipendenza mancante
Trova la dipendenza mancante

La dipendenza mancante è il file "mman.h" - l'intestazione di un qualche tipo di gestore di memoria Linux. Windows C non ha nativamente tale file, ma fortunatamente ne esiste una porta Windows. Vai a https://github.com/witwall/mman-win32 per Windows. Scarica l'istantanea del repository git.

Passaggio 10: disimballare l'Mman

Disimballare l'Mman
Disimballare l'Mman

Decomprimi i file mman.c e mman.h, mettili nella cartella c:\sunxitools\.

Passaggio 11: e aggiungili al progetto

E aggiungili al progetto
E aggiungili al progetto

Passaggio 12: percorso corretto

Percorso corretto
Percorso corretto

E nel file "fex.c" linea raplece:

#includere

al

#include "mman.h"

A questo punto il tuo compilatore non dovrebbe lamentarsi di nulla e otterrai la lunga attesa fexc.exe come output. Non essere felice troppo presto. L'utilità non è ancora completamente funzionante. Puoi assicurarti ciò decrittografando alcuni file script.bin validi nel formato di testo - file script.fex con conseguente crittografia del file script.fex nuovamente in script.bin. Puoi notare che la dimensione dello script.bin risultante differisce leggermente dalla dimensione dello script.bin originale. E se provi a decifrare il risultato ancora una volta, fallirà. Né l'Orange PI funzionerà con questo script.bin. Per ottenere l'utilità funzionale dobbiamo scaricare una bomba di codice, che qualcuno ha inserito nel codice sorgente di sunxi-tools. Sarà il nostro prossimo passo.

Fase 13: Esorcismo

Esorcismo
Esorcismo

Per scaricare la bomba di codice, apri il file di codice fexc.c e trova lì una stringa di testo del contenuto successivo:

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

Basta sostituirlo con la stringa successiva:

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

Se non le cifre malvagie "666" nella prima stringa, penserei che il programmatore si sia appena dimenticato di usare il flag O_BINARY. Ma il Numero della Bestia chiarisce le sue intenzioni in modo trasparente. Vai a capire, quanto è ingegnoso: a causa della sottile differenza nel modo in cui i file vengono elaborati in Windows e Linux, la bomba non ha alcun effetto quando l'utilità viene compilata e utilizzata sotto Linux. Ma rovina tutto quando l'utilità viene utilizzata in Windows.

Dopo che la bomba è stata disarmata, puoi finalmente compilare e utilizzare in sicurezza l'utilità fexc sul tuo computer desktop Windows.

Passaggio 14: NOTE

APPUNTI
APPUNTI

1) Per utilizzare comodamente l'utilità fexc, dovresti ottenere due file batch:

bin2fex.bat - e - fex2bin.bat.

Puoi ottenerli da qualche build faily fexc.exe per Windows là fuori, oppure puoi digitarli tu stesso:

  • bin2fex.bat dovrebbe contenere "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat dovrebbe contenere "fexc -O bin -I fex script.fex script.bin"

2) Se è difficile trovare il manager di mman per Windows, si può evitare del tutto il suo utilizzo. Tuttavia, richiede molte più modifiche al file fexc.c e richiede almeno una certa conoscenza di c. Per tua comodità condivido il codice sorgente modificato di fexc da sunxi-tools v1.4 libero dalla dipendenza da mman.h insieme al file di progetto codeblocks e con script.bin di esempio da alcuni pi arancione. Puoi scaricare fexc_nomman.zip

3) È possibile che nelle versioni successive di sunxi-tools si aggiungano delle dipendenze in più. Sentiti libero di trovarli su Internet e di aggiungerli al tuo progetto di compilation.

5) Infine ecco la versione precompilata di fexc.exe per Win32:

fexc_nomman.zip

Se sei abbastanza pigro, sentiti libero di usare ver. Tuttavia, attenzione che non verrà aggiornato se/quando saranno disponibili le versioni più recenti di SunxiTools/Windows. Quindi è meglio imparare a compilarli piuttosto che dipendere da qualche build binaria fissa, presumo.

4) "Orange PI", "Code::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", ecc… sono i corrispondenti marchi dei rispettivi proprietari.

5) Se il compilatore si lamenta di non trovare funzioni mman, come:

riferimento non definito a '_imp_mmap'

tieni presente che gli amanti della definizione della comunità di sviluppo mman hanno dimenticato che il codice può essere compilato non solo come libreria dll. Può anche essere una libreria statica o un codice autonomo come abbiamo qui. Per risolvere il problema, modifica il file "mman.h" come segue:

a) trova le stringhe:

#se definito(MMAN_LIBRARY)

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

b) aggiungi la stringa

#define MMANSHARED_EXPORT

appena sotto le stringhe trovate al passaggio precedente

Consigliato: