Tabla de contenido:

Orange PI HowTo: compilar la herramienta Sunxi para Windows en Windows: 14 pasos (con imágenes)
Orange PI HowTo: compilar la herramienta Sunxi para Windows en Windows: 14 pasos (con imágenes)

Video: Orange PI HowTo: compilar la herramienta Sunxi para Windows en Windows: 14 pasos (con imágenes)

Video: Orange PI HowTo: compilar la herramienta Sunxi para Windows en Windows: 14 pasos (con imágenes)
Video: Orange Pi, 7 Configuraciones importantes en Armbian; Personaliza, configura y automatiza 2024, Noviembre
Anonim
Orange PI HowTo: compilar la herramienta Sunxi para Windows en Windows
Orange PI HowTo: compilar la herramienta Sunxi para Windows en Windows

PREQUISITOS:

Necesitará

  1. Una computadora (de escritorio) con Windows.
  2. Una conexión a Internet.
  3. Una placa de PI naranja.

El último es opcional, pero estoy seguro, que ya lo tienes. De lo contrario, no leerá este instructivo.

Cuando compra la computadora de placa única Orange PI, permanece como una pieza de metal muerto hasta que se configura correctamente. Y su archivo de configuración principal: "script.bin" es la primera clave para darle vida. Este archivo se encuentra en la partición de arranque de su tarjeta SD de arranque. Y afortunadamente para nosotros, en la mayoría de las distribuciones de Linux del sitio oficial (https://www.orangepi.org/downloadresources/) esta partición es FAT32 y puede ser vista fácilmente por cualquier computadora con Windows. Realmente simplifica las cosas, ya que todavía no hay una forma confiable de escribir en las particiones ext2 de Linux desde Windows.

Por desgracia para nosotros, el archivo de configuración script.bin tiene un formato binario completamente desagradable para la edición humana. Se necesita algún tipo de herramienta de software para descifrarlo y volver a cifrarlo después de que se hayan realizado las modificaciones necesarias. Y tal conjunto de herramientas existe. Es infame SUNXI-TOOLS. La mosca en el ungüento es que está diseñado para ejecutarse bajo Linux y tenemos que mantener una máquina Linux dedicada solo para usar las herramientas sunxi, o para encontrar una manera de compilarlas para Windows.

Podría simplemente compilarlo y compartir el ejecutable, pero nunca se sabe si les gustaría hacer una nueva versión y necesitarás una nueva compilación lo antes posible. Entonces decidí hacer una guía sobre cómo compilar la herramienta esencial a partir de las fuentes. Empecemos.

Paso 1: descargue Sunxi-tools

Descarga Sunxi-tools
Descarga Sunxi-tools
Descarga Sunxi-tools
Descarga Sunxi-tools

Obtenga la versión más reciente (o necesaria) del código fuente de sunxi-tools. Vaya a la URL: https://github.com/linux-sunxi/sunxi-tools/releases y elija descargar como archivo zip.

Paso 2: descomprime el código fuente

Descomprime el código fuente
Descomprime el código fuente

Una vez finalizada la descarga, descomprima el código fuente en la carpeta que elija. (además, asumiré que esta carpeta es c: / sunxitools \, así que reemplace esta ruta por la suya propia).

Paso 3: Descargar código:: bloques

Código de descarga:: blocks
Código de descarga:: blocks

Si tiene una copia instalada de algún compilador operativo de C ++ para Windows. y si sabe cómo usarlo, puede continuar directamente con el paso 3. Otros deberían obtener un compilador c ++ adecuado y un shell (IDE) para usarlo cómodamente. La elección mía es code:: blocks para Windows junto con la cadena de herramientas MinGW preinstalada. Puede obtenerlo desde aquí:

Descárgalo e instálalo.

Paso 4: Pruebe su IDE

Pruebe su IDE
Pruebe su IDE

Para probar si todo va bien, inicie bloques de código, haga clic en "crear un nuevo proyecto", elija "aplicación de consola", elija c o c ++, escriba el título del proyecto de pago, mantenga los valores predeterminados intactos en la siguiente ventana y haga clic en "finalizar ".

Paso 5: prueba completa

Prueba completa
Prueba completa

Luego haga clic en un triángulo verde en el panel superior del IDE o use el punto de menú Construir-> Ejecutar. Si todo salió bien, debería ver un mensaje de su aplicación "Hola mundo" generada automáticamente en la ventana negra de "DOS".

Si no es así, significa que el IDE y el compilador no funcionan correctamente y tendrá que investigar cómo configurarlo correctamente. Probablemente tendrá que descargar otra versión de las herramientas de programación o verificar sus permisos en su software de firewall / antivirus.

Paso 6: crear un nuevo proyecto

Crear nuevo proyecto
Crear nuevo proyecto
Crear nuevo proyecto
Crear nuevo proyecto
Crear nuevo proyecto
Crear nuevo proyecto
Crear nuevo proyecto
Crear nuevo proyecto

Ahora debería tener un juego de herramientas de programador C / C ++ operativo y los códigos fuente de sunxi-tools descomprimidos en la carpeta c: / sunxitools / de su computadora. Es hora de armar un proyecto. Cree un nuevo proyecto en su IDE. Elija el proyecto C (no c ++) simple del tipo "aplicación de consola".

Asegúrese de que está creando el proyecto en la carpeta c: / sunxitools / y no en otro lugar. (Los bloques de código de EG tienden a crear una subcarpeta con el mismo nombre que el proyecto. Por lo tanto, si nombró su proyecto, diga "prueba" e intente colocarlo en c: / sunxitools \, es posible que el proyecto se haya ido ac: / sunxitools / test / si no está lo suficientemente atento.) Sunxi-tools contiene varias utilidades, pero para nuestro propósito solo necesitaremos una: la llamada utilidad "fexc".

Paso 7: agregar archivos al proyecto

Agregar archivos al proyecto
Agregar archivos al proyecto

Exactamente la utilidad "fexc" es responsable de la conversión del script.bin en formato de texto y de la conversión a binario. Es esencial que el ejecutable de esta utilidad tenga el nombre "fexc.exe", por lo que es bueno si ha nombrado su proyecto como "fexc". Sin embargo, puede usar cualquier otro nombre del proyecto, ya que siempre puede cambiar el nombre del ejecutable después de la compilación, o puede elegir "Proyecto-> Propiedades" en el menú desplegable superior y en la ventana que aparece, haga clic en la pestaña "Crear objetivos", y edite el campo "Nombre de archivo de salida" allí para anular el nombre del ejecutable.

A su proyecto generado automáticamente Debe agregar solo cinco archivos fuente:

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

y siete archivos de encabezado:

  • list.h (muévalo de c: / sunxitools / include / folder a c: / sunxitools / folder)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Asegúrese de excluir el main.c autogenerado del proyecto, porque fexc.c ya tiene la función "int main". (¿Recuerda que cualquier programa debería tener solo una función principal?).

Todos los archivos de código fuente necesarios ya están en la subcarpeta, donde ha descomprimido los códigos fuente. Los archivos de encabezado merecen un par de palabras, dónde conseguirlos. "list.h": normalmente se encuentra en la subcarpeta "incluir" del conjunto de códigos fuente descomprimido. "version.h": créelo usted mismo. Pon allí una cuerda como:

#define VERSION "Win32"

Luego guarde y cierre el archivo. (Puede decorarlo con # define's y # ifdef's si lo desea).

Si ahora intenta compilar el proyecto, se quejará de muchos errores y de un archivo faltante. Los errores se deben principalmente a un poco de excesiva libertad de estilo, que solían aplicar los programadores de sunxi-tools, y el archivo que falta es la dependencia no incluida en el paquete del código fuente. Tratemos esto paso a paso.

Paso 8: Haga que Gcc siga el estándar de lenguaje ISO C de 1999

Haga que Gcc siga el estándar de lenguaje ISO C de 1999
Haga que Gcc siga el estándar de lenguaje ISO C de 1999

Para que el compilador no se queje del estilo de programación demasiado libre, establezca el estándar "с99" de la compilación. En bloques de código, vaya al menú "Proyecto -> Opciones de compilación" y en "Configuración del compilador -> Indicadores del compilador" marque la casilla de verificación "Hacer que gcc siga el estándar de lenguaje C de ISO 1999". O simplemente puede agregar "-std = c99" en la cadena de opciones de su compilador. Ahora, si intenta compilar el proyecto, esas toneladas de errores deberían desaparecer y usted es uno a uno con la dependencia que falta.

Paso 9: encuentre la dependencia que falta

Encuentra la dependencia que falta
Encuentra la dependencia que falta

La dependencia que falta es el archivo "mman.h", el encabezado de algún tipo de administrador de memoria de Linux. Windows C de forma nativa no tiene tal archivo, pero afortunadamente hay un puerto de Windows. Vaya a https://github.com/witwall/mman-win32 para Windows. Descarga la instantánea del repositorio de git.

Paso 10: Desembale el Mman

Desembalar el Mman
Desembalar el Mman

Desempaquete los archivos mman.cy mman.h, colóquelos en la carpeta c: / sunxitools \.

Paso 11: y agréguelos al proyecto

Y agregarlos al proyecto
Y agregarlos al proyecto

Paso 12: Ruta correcta

Camino correcto
Camino correcto

Y en el archivo "fex.c" raplece line:

#incluir

al

#include "mman.h"

En este paso, su compilador no debería quejarse de nada y obtendrá la larga espera fexc.exe como resultado. No seas feliz demasiado pronto. La utilidad aún no es completamente funcional. Puede asegurarse de esto descifrando algún archivo script.bin válido en el formato de texto - archivo script.fex y, en consecuencia, cifrando el archivo script.fex de nuevo en script.bin. Puede notar que el tamaño del script.bin resultante difiere ligeramente del tamaño del script.bin original. Y si intenta descifrar el resultado una vez más, fallará. Ninguno de los Orange PI funcionará con este script.bin. Para obtener la utilidad funcional, tenemos que descargar una bomba de código, que alguien ha puesto en el código fuente de sunxi-tools. Será nuestro próximo paso.

Paso 13: exorcismo

Exorcismo
Exorcismo

Para descargar la bomba de código, abra el archivo de código fexc.c y busque allí una cadena de texto del siguiente contenido:

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

Simplemente reemplácelo con la siguiente cadena:

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

Si no son los dígitos malignos "666" en la primera cadena, pensaría que el codificador simplemente se olvidó de usar la bandera O_BINARY. Pero el Número de la Bestia aclara sus intenciones de forma transparente. Imagínese, qué ingenioso es: debido a la sutil diferencia en cómo se procesan los archivos en Windows y Linux, la bomba no tiene ningún efecto cuando la utilidad se compila y se usa en Linux. Pero arruina todo cuando la utilidad se usa en Windows.

Después de que la bomba haya sido desarmada, finalmente puede compilar y usar de manera segura la utilidad fexc en su computadora de escritorio con Windows.

Paso 14: NOTAS

NOTAS
NOTAS

1) Para usar la utilidad fexc cómodamente, debe obtener dos archivos por lotes:

bin2fex.bat - y - fex2bin.bat.

Puede obtenerlos de alguna compilación de faily fexc.exe para Windows, o puede escribirlos usted mismo:

  • bin2fex.bat debe contener "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat debe contener "fexc -O bin -I fex script.fex script.bin"

2) Si es difícil encontrar el administrador de mman para Windows, se puede evitar su uso. Sin embargo, se necesita mucha más edición del archivo fexc.c y requiere al menos algún conocimiento de c. Para su conveniencia, comparto el código fuente editado del fexc de sunxi-tools v1.4 libre de la dependencia a mman.h junto con el archivo de proyecto de bloques de código y con el script de muestra.bin de algún pi naranja. Puede descargar fexc_nomman.zip

3) Es posible que en versiones posteriores de sunxi-tools agreguen algunas dependencias más. Siéntase libre de encontrarlos en Internet y agregarlos a su proyecto de compilación.

5) Finalmente, aquí está la versión precompilada de fexc.exe para Win32:

fexc_nomman.zip

Si eres lo suficientemente perezoso, no dudes en usar ver. Sin embargo, tenga en cuenta que no se actualizará cuando estén disponibles las versiones más recientes de SunxiTools / Windows. Así que es mejor aprender a compilarlos que depender de una compilación binaria fija, supongo.

4) El "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", etc … son las correspondientes marcas comerciales de sus respectivos propietarios.

5) Si el compilador se queja de no encontrar funciones mman, como:

referencia indefinida a '_imp_mmap'

Tenga en cuenta que los amantes de la definición de la comunidad de desarrollo mman han olvidado que el código se puede compilar no solo como biblioteca dll. También puede ser una biblioteca estática o un código independiente como el que tenemos aquí. Para solucionar el problema, edite el archivo "mman.h" de la siguiente manera:

a) encuentra las cadenas:

#si está definido (MMAN_LIBRARY)

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

b) agrega la cadena

#define MMANSHARED_EXPORT

justo debajo de las cadenas encontradas en el paso anterior

Recomendado: