Taula de continguts:

Orange PI HowTo: Compilar l'eina Sunxi per a Windows amb Windows: 14 passos (amb imatges)
Orange PI HowTo: Compilar l'eina Sunxi per a Windows amb Windows: 14 passos (amb imatges)

Vídeo: Orange PI HowTo: Compilar l'eina Sunxi per a Windows amb Windows: 14 passos (amb imatges)

Vídeo: Orange PI HowTo: Compilar l'eina Sunxi per a Windows amb Windows: 14 passos (amb imatges)
Vídeo: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Desembre
Anonim
Orange PI HowTo: Compila l'eina Sunxi per a Windows amb Windows
Orange PI HowTo: Compila l'eina Sunxi per a Windows amb Windows

PREQUISITS:

Necessitarà

  1. Un ordinador (d'escriptori) amb Windows.
  2. Una connexió a Internet.
  3. Una pissarra de color taronja.

L'últim és opcional, però estic segur que ja el teniu. En cas contrari, no llegireu aquesta instrucció.

Quan compreu l’ordinador de placa única Orange PI, queda només un tros de metall mort fins que es configuri correctament. I el seu fitxer de configuració principal: "script.bin" és la primera clau per donar-li vida. Aquest fitxer es troba a la partició d’arrencada de la vostra targeta SD d’arrencada. I per sort per a nosaltres, a la majoria de distribucions de Linux des del lloc oficial (https://www.orangepi.org/downloadresources/) aquesta partició és FAT32 i es pot veure fàcilment en qualsevol equip Windows. Realment simplifica les coses, ja que encara no hi ha cap manera fiable d’escriure a les particions Linux ext2 des de sota del Windows.

Per desgràcia per a nosaltres, el fitxer de configuració script.bin té un format binari totalment poc amigable per a l'edició humana. Es necessita algun tipus d'eina de programari per desxifrar-la i tornar-la a criptar després de fer les modificacions necessàries. I aquest conjunt d’eines existeix. És infame SUNXI-TOOLS. La tesi de l’ungüent és que està pensat per funcionar sota Linux i hem de conservar una màquina Linux dedicada només per utilitzar les eines sunxi o bé trobar una manera de compilar-les per a Windows.

Simplement podria compilar-lo i compartir l’executable, però mai se sap si els agradaria fer una versió nova i necessitareu una nova compilació el més aviat possible. Així que vaig decidir fer una guia per compilar l’eina essencial a partir de les fonts. Comencem.

Pas 1: baixeu Sunxi-tools

Descarregueu Sunxi-tools
Descarregueu Sunxi-tools
Descarregueu Sunxi-tools
Descarregueu Sunxi-tools

Obteniu la versió més recent (o necessària) del codi font sunxi-tools. Aneu a l'URL: https://github.com/linux-sunxi/sunxi-tools/releases i trieu la descàrrega com a arxiu zip.

Pas 2: descomprimiu el codi font

Descomprimiu el codi font
Descomprimiu el codi font

Un cop finalitzada la descàrrega, descomprimiu el codi font a la carpeta que trieu. (A més, assumiré que aquesta carpeta és c: / sunxitools \, així que substituïu aquest camí pel vostre camí).

Pas 3: descarregueu el codi:: blocs

Descarregar Code:: blocks
Descarregar Code:: blocks

Si teniu instal·lada una còpia d'algun compilador de c ++ operatiu per a Windows. i si sabeu utilitzar-lo, podeu passar directament al pas 3. Altres haurien d'obtenir un compilador de c ++ adequat i un intèrpret d'ordres (IDE) per utilitzar-lo còmodament. L’elecció meva és code:: blocks per a Windows juntament amb la cadena d’eines MinGW preinstal·lada. Podeu obtenir-lo des d’aquí:

Baixeu-lo i instal·leu-lo.

Pas 4: proveu el vostre IDE

Proveu el vostre IDE
Proveu el vostre IDE

Per comprovar si les coses van bé, inicieu els blocs de codi, feu clic a "crea un projecte nou", trieu "aplicació de consola", trieu c o c ++, escriviu el títol del projecte de pagament, mantingueu els valors predeterminats intactes a la finestra següent i feu clic a "finalitza" ".

Pas 5: completar la prova

Prova completa
Prova completa

A continuació, feu clic a un triangle verd al tauler superior de l'IDE o utilitzeu el punt del menú Construeix> Executa. Si les coses van anar bé, hauríeu de veure un missatge de la vostra aplicació "Hello world" autogenerada a la finestra negra "DOS".

Si no, vol dir que l'IDE i el compilador no funcionen correctament i que haureu d'investigar com ajustar-lo bé. Probablement haureu de descarregar una altra versió de les eines de programació o comprovar-ne els permisos al vostre tallafoc / antivirus.

Pas 6: Creeu un projecte nou

Crea un projecte nou
Crea un projecte nou
Crea un projecte nou
Crea un projecte nou
Crea un projecte nou
Crea un projecte nou
Crea un projecte nou
Crea un projecte nou

Ara hauríeu de tenir un conjunt d'eines de programador C / C ++ operatiu i els codis font de sunxi-tools desempaquetats a la carpeta c: / sunxitools / de l'ordinador. És hora de muntar un projecte. Creeu un projecte nou al vostre IDE. Trieu el projecte normal C (no c ++) del tipus "aplicació de consola".

Assegureu-vos que esteu creant el projecte a la carpeta c: / sunxitools / i no en cap altre lloc. (Els blocs de codi EG tendeixen a crear una subcarpeta amb el mateix nom que el projecte. Per tant, si heu anomenat el vostre projecte, digueu "prova" i intenteu col·locar-lo a c: / sunxitools \, podeu acabar amb el projecte desaparegut). a c: / sunxitools / test / si no esteu prou atent.) Sunxi-tools conté diverses utilitats, però per al nostre propòsit només en necessitarem una: l'anomenada utilitat "fexc".

Pas 7: afegiu fitxers al projecte

Afegiu fitxers al projecte
Afegiu fitxers al projecte

La utilitat exactament "fexc" és responsable de la conversió de l'script.bin en format de text i de la conversió posterior en binari. És essencial que l'executable d'aquesta utilitat tingui el nom "fexc.exe", de manera que és bo si heu anomenat el vostre projecte com "fexc". Tanmateix, podeu utilitzar qualsevol altre nom del projecte, ja que sempre podeu canviar el nom de l'executable després de la compilació, o bé Podeu triar "Projecte-> Propietats" al menú desplegable superior i, a la finestra que apareix, feu clic a la pestanya "Construeix objectius", i editeu-hi el camp "Nom de fitxer de sortida" per substituir el nom de l'executable.

Al vostre projecte autogenerat, només heu d'afegir cinc fitxers font:

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

i set fitxers de capçalera:

  • list.h (moveu-lo al formulari c: / sunxitools / include / folder a la carpeta c: / sunxitools)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • versió.h

Assegureu-vos d'excloure el main.c autogenerat del projecte, perquè fexc.c ja té la funció "int main". (Recordeu que qualsevol programa només hauria de tenir una funció principal?).

Tots els fitxers de codi font necessaris ja es troben a la subcarpeta, on heu descomprimit els codis font. Els fitxers de capçalera mereixen un parell de paraules, on obtenir-los. "list.h": normalment es troba a la subcarpeta "include" del conjunt de codis font desempaquetats. "version.h": només cal que el creeu vosaltres mateixos. Posa-hi una cadena com:

#define VERSIÓ "Win32"

A continuació, deseu i tanqueu el fitxer. (Podeu decorar-lo amb # define's i # ifdef's si voleu.)

Si ara intenteu compilar el projecte, es queixarà de molts errors i falta un fitxer. Els errors es deuen principalment a una mica d’excessiva llibertat d’estil, als programadors de sunxi-tools que solien aplicar i el fitxer que falta és la dependència que no s’inclou al paquet del codi font. Anem a tractar-ho pas a pas.

Pas 8: Feu que Gcc segueixi la norma de llenguatge ISO C del 1999

Feu que Gcc segueixi la norma ISO 1999 del llenguatge C
Feu que Gcc segueixi la norma ISO 1999 del llenguatge C

Perquè el compilador no es queixi de l'estil de programació massa lliure, configureu l'estàndard "с99" de la compilació. Als blocs de codis, aneu al menú "Projecte -> Opcions de compilació" i al menú "Configuració del compilador -> Banderes del compilador" marqueu la casella de selecció "Feu que gcc segueixi l'estàndard de llenguatge ISO C del 1999". O només podeu afegir "-std = c99" a la vostra cadena d'opcions del compilador. Ara, si intenteu compilar el projecte, haurien de començar aquestes tones d'errors i sou un a un amb la dependència que falta.

Pas 9: cerqueu la dependència que falta

Cerqueu la dependència que falta
Cerqueu la dependència que falta

La dependència que falta és el fitxer "mman.h": la capçalera d'algun tipus de gestor de memòria Linux. El Windows C no té nativament aquest fitxer, però afortunadament hi ha un port de Windows. Aneu a https://github.com/witwall/mman-win32 per a Windows. Baixeu la instantània del repositori git.

Pas 10: desempaqueteu el Mman

Desembalar el Mman
Desembalar el Mman

Desempaqueteu els fitxers mman.c i mman.h, col·loqueu-los a la carpeta c: / sunxitools \.

Pas 11: i afegiu-los al projecte

I afegiu-los al projecte
I afegiu-los al projecte

Pas 12: camí correcte

Camí correcte
Camí correcte

I al fitxer "fex.c" línia raplece:

#incloure

fins al

#include "mman.h"

En aquest pas, el vostre compilador no s'ha de queixar de res i obtindreu la llarga espera fexc.exe com a sortida. No siguis feliç massa aviat. La utilitat encara no és completament funcional. Podeu assegurar-ho descifrant algun fitxer script.bin vàlid al formulari de text - fitxer script.fex amb el consegüent xifratge del fitxer script.fex al script.bin. Podeu tenir en compte que la mida del script.bin resultant difereix lleugerament de la mida del script.bin original. I si intenteu desxifrar el resultat resultant una vegada més, fallarà. Tampoc l'Orange PI funcionarà amb aquest script.bin. Per obtenir la utilitat funcional hem de descarregar una bomba de codi que algú ha posat al codi font de sunxi-tools. Serà el nostre següent pas.

Pas 13: Exorcisme

Exorcisme
Exorcisme

Per descarregar el codi bomba, obriu el fitxer de codi fexc.c i trobeu-hi una cadena de text del següent contingut:

else if ((fora = obert (nom de fitxer, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Només cal substituir-lo per la següent cadena:

else if ((fora = obert (nom de fitxer, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Si no, els dígits malignes "666" de la primera cadena, crec que el codificador acaba d'oblidar-se d'utilitzar el senyalador O_BINARY. Però el número de la bèstia clarifica les seves intencions de manera transparent. Vaja, que enginyós és: a causa de la subtil diferència en com es processen els fitxers a Windows i Linux, la bomba no té cap efecte quan la utilitat es compila i s’utilitza sota Linux. Però ho arruïna tot quan s’utilitza la utilitat a Windows.

Després de desarmar la bomba, finalment podeu compilar i utilitzar amb seguretat la utilitat fexc a l'ordinador d'escriptori Windows.

Pas 14: NOTES

NOTES
NOTES

1) Per utilitzar la utilitat fexc còmodament, hauríeu d'obtenir dos fitxers per lots:

bin2fex.bat - i - fex2bin.bat.

Podeu obtenir-los amb algunes versions fexc.exe fallides per a Windows o bé podeu escriure-les:

  • bin2fex.bat ha de contenir "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat ha de contenir "fexc -O bin -I fex script.fex script.bin"

2) Si és difícil trobar l'administrador de mman per a Windows, en podeu evitar l'ús. Tanmateix, es necessita molta més edició del fitxer fexc.c i requereix almenys alguns coneixements de c. Per la vostra conveniència, comparteixo el codi font editat del fexc des de sunxi-tools v1.4 lliure de la dependència a mman.h juntament amb el fitxer de projecte codeblocks i amb un script script.bin d’exemple d’alguns pi taronja. Podeu descarregar fexc_nomman.zip

3) És possible que en les consegüents versions de sunxi-tools afegeixin algunes dependències més. No dubteu a trobar-los a Internet i afegir-los al vostre projecte de compilació.

5) Finalment, aquí teniu la versió precompilada de fexc.exe per a Win32:

fexc_nomman.zip

Si teniu prou mandra, no dubteu a utilitzar ver. Tingueu en compte, però, que no s’actualitzarà si / quan estiguin disponibles les versions més recents de SunxiTools / Windows. Per tant, és millor aprendre a compilar-los que dependre d’alguna compilació binària fixa, suposo.

4) El "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", etc … són marques comercials corresponents dels seus respectius propietaris.

5) Si el compilador es queixa de no trobar funcions mman, com ara:

referència no definida a "_imp_mmap"

tingueu en compte que definiu els amants de la comunitat de desenvolupament mman que han oblidat que el codi es pot compilar no només com a biblioteca dll. També pot ser una biblioteca estàtica o un codi independent com el que tenim aquí. Per solucionar el problema, editeu el fitxer "mman.h" de la següent manera:

a) cerqueu les cordes:

#if definit (MMAN_LIBRARY)

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

b) afegiu la cadena

#define MMANSHARED_EXPORT

just a sota de les cadenes trobades al pas anterior

Recomanat: