Índice:

Orange PI HowTo: Compilar a ferramenta Sunxi para Windows no Windows: 14 etapas (com imagens)
Orange PI HowTo: Compilar a ferramenta Sunxi para Windows no Windows: 14 etapas (com imagens)

Vídeo: Orange PI HowTo: Compilar a ferramenta Sunxi para Windows no Windows: 14 etapas (com imagens)

Vídeo: Orange PI HowTo: Compilar a ferramenta Sunxi para Windows no Windows: 14 etapas (com imagens)
Vídeo: Golang vs Python #shorts tiktok hackmymozg 2024, Novembro
Anonim
Orange PI HowTo: Compilar a ferramenta Sunxi para Windows no Windows
Orange PI HowTo: Compilar a ferramenta Sunxi para Windows no Windows

PREQUISITOS:

Você vai precisar

  1. Um computador (desktop) com Windows.
  2. Uma conexão com a Internet.
  3. Uma placa PI laranja.

O último é opcional, mas tenho certeza de que Você já o possui. Caso contrário, você não lerá este instrutível.

Quando você compra o computador de placa única Orange PI, ele permanece apenas um pedaço de metal morto até ser configurado corretamente. E seu arquivo de configuração principal: "script.bin" é a primeira chave para trazê-lo à vida. Este arquivo está localizado na partição de inicialização do cartão SD inicializável. E, felizmente para nós, na maioria das distribuições Linux do site oficial (https://www.orangepi.org/downloadresources/) esta partição é FAT32 e pode ser facilmente vista por qualquer computador Windows. Isso realmente simplifica as coisas, já que ainda não há uma maneira confiável de escrever nas partições ext2 do Linux a partir do Windows.

Infelizmente para nós, o arquivo de configuração script.bin tem formato binário completamente hostil para edição humana. É necessário algum tipo de ferramenta de software para descriptografá-lo e criptografá-lo de volta após as modificações necessárias terem sido feitas. E esse conjunto de ferramentas existe. É o famoso SUNXI-TOOLS. A mosca na sopa é que ele se destina a rodar no Linux e temos que manter uma máquina Linux dedicada apenas para usar as ferramentas sunxi, ou encontrar uma maneira de compilá-las para o Windows.

Eu poderia simplesmente compilá-lo e compartilhar o executável, mas nunca se sabe se eles gostariam de fazer um novo lançamento e você precisará de uma nova compilação o mais rápido possível. Então decidi fazer um guia de como compilar a ferramenta essencial a partir das fontes. Vamos começar.

Etapa 1: Baixe ferramentas Sunxi

Baixe ferramentas Sunxi
Baixe ferramentas Sunxi
Baixe ferramentas Sunxi
Baixe ferramentas Sunxi

Obtenha a versão mais recente (ou necessária) do código fonte sunxi-tools. Vá para a URL: https://github.com/linux-sunxi/sunxi-tools/releases e escolha fazer o download como arquivo zip.

Etapa 2: descompacte o código fonte

Descompacte o código fonte
Descompacte o código fonte

Assim que o download for concluído, descompacte o código-fonte para a pasta de sua escolha. (além disso, assumirei que esta pasta é c: / sunxitools \, então substitua este caminho pelo seu próprio caminho).

Etapa 3: Baixe o código:: blocos

Baixar código:: blocos
Baixar código:: blocos

Se você tiver uma cópia instalada de algum compilador c ++ operacional para Windows. e se você souber como usá-lo, poderá prosseguir diretamente para a etapa 3. Outros devem obter um compilador C ++ adequado e um shell (IDE) para usá-lo confortavelmente. A minha escolha é code:: blocks para Windows junto com o conjunto de ferramentas MinGW pré-instalado. Você pode obtê-lo aqui:

Baixe e instale-o.

Etapa 4: teste seu IDE

Teste seu IDE
Teste seu IDE

Para testar se as coisas estão bem, inicie os codeblocks, clique em "criar um novo projeto", escolha "aplicativo de console", escolha c ou c ++, digite o título do projeto de checkout, mantenha os padrões intactos na próxima janela e clique em "terminar"

Etapa 5: teste completo

Teste Completo
Teste Completo

Em seguida, clique em um triângulo verde no painel superior do IDE ou use o ponto de menu Build-> Run. Se tudo correr bem, você deverá ver uma mensagem do aplicativo "Hello world" gerado automaticamente na janela preta do "DOS".

Caso contrário, significa que o IDE e o compilador não estão funcionando corretamente e você terá que investigar como configurá-lo corretamente. Provavelmente, você terá que baixar outra versão das ferramentas de programação ou verificar suas permissões em Seu software de firewall / antivírus.

Etapa 6: Criar Novo Projeto

Criar Novo Projeto
Criar Novo Projeto
Criar Novo Projeto
Criar Novo Projeto
Criar Novo Projeto
Criar Novo Projeto
Criar Novo Projeto
Criar Novo Projeto

Agora você deve ter um kit de ferramentas do programador C / C ++ operacional e os códigos-fonte das ferramentas sunxi descompactados na pasta c: / sunxitools / em Seu computador. É hora de montar um projeto. Crie um novo projeto em seu IDE. Escolha o projeto C simples (não c ++) do tipo "aplicativo de console".

Certifique-se de que você está criando o projeto na pasta c: / sunxitools / e não em algum outro lugar. (Os codeblocks EG tendem a fazer uma subpasta com o mesmo nome do projeto. Então, se você nomeou Seu projeto, diga "teste" e tente colocá-lo em c: / sunxitools \, você pode acabar com o projeto acabado para c: / sunxitools / test / se você não estiver atento o suficiente.) As ferramentas Sunxi contêm vários utilitários, mas para o nosso propósito precisaremos apenas de um: o chamado utilitário "fexc".

Etapa 7: Adicionar arquivos ao projeto

Adicionar arquivos ao projeto
Adicionar arquivos ao projeto

Exatamente o utilitário "fexc" é responsável pela conversão do script.bin em formato de texto e pela conversão de volta para binário. É essencial que o executável deste utilitário tenha o nome "fexc.exe", então é bom se você nomeou seu projeto como "fexc". No entanto, você pode usar qualquer outro nome do projeto, uma vez que você sempre pode renomear o executável após a compilação, ou você pode escolher "Projeto-> Propriedades" no menu suspenso superior e na janela que aparece clique na guia "Construir destinos", e edite o campo "Nome do arquivo de saída" para substituir o nome do executável.

Ao seu projeto gerado automaticamente, você deve adicionar apenas cinco arquivos de origem:

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

e sete arquivos de cabeçalho:

  • list.h (mova do formulário c: / sunxitools / include / folder para c: / sunxitools / folder)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Certifique-se de excluir o main.c gerado automaticamente do projeto, porque fexc.c já contém a função "int main". (Lembre-se de que qualquer programa deve ter apenas uma função principal?).

Todos os arquivos de código-fonte necessários já estão na subpasta, onde você descompactou os códigos-fonte. Os arquivos de cabeçalho merecem um par de palavras, onde obtê-los. "list.h" - geralmente está na subpasta "include" do conjunto de códigos-fonte descompactado. "version.h" - apenas crie você mesmo. Coloque aí uma string como:

#define VERSÃO "Win32"

Em seguida, salve e feche o arquivo. (Você pode decorá-lo com #define's e # ifdef's se quiser.)

Se você tentar compilar o projeto agora, ele reclamará de muitos erros e de um arquivo ausente. Os erros são principalmente devido a um pouco de liberdade de estilo excessiva, os programadores sunxi-tools costumavam aplicar, e o arquivo ausente é a dependência não incluída no pacote do código-fonte. Vamos lidar com isso passo a passo.

Etapa 8: Faça o Gcc seguir o padrão de linguagem ISO C de 1999

Faça o Gcc seguir o padrão de linguagem ISO C de 1999
Faça o Gcc seguir o padrão de linguagem ISO C de 1999

Para que o compilador não reclame do estilo de programação muito livre, defina o padrão "с99" da compilação. Em codeblocks, vá para o menu "Projeto -> Opções de construção" e em "Configurações do compilador -> Sinalizadores do compilador" marque a caixa de seleção "Fazer com que o gcc siga o padrão de linguagem ISO C de 1999". Ou você pode simplesmente adicionar "-std = c99" em sua string de opções do compilador. Agora, se você tentar compilar o projeto, essas toneladas de erros devem começar e você estará um a um com a dependência ausente.

Etapa 9: encontre a dependência ausente

Encontre a dependência ausente
Encontre a dependência ausente

A dependência que falta é o arquivo "mman.h" - o cabeçalho de algum tipo de gerenciador de memória Linux. O Windows C nativamente não tem esse arquivo, mas felizmente há uma versão para Windows dele. Acesse https://github.com/witwall/mman-win32 para Windows. Baixe o instantâneo do repositório git.

Etapa 10: Descompacte o Mman

Descompacte o Mman
Descompacte o Mman

Descompacte os arquivos mman.ce mman.h, coloque-os na pasta c: / sunxitools \.

Etapa 11: e adicioná-los ao projeto

E adicione-os ao projeto
E adicione-os ao projeto

Etapa 12: Caminho correto

Caminho correto
Caminho correto

E na linha raplece do arquivo "fex.c":

#incluir

ao

#include "mman.h"

Nesta etapa, seu compilador não deve reclamar de nada e você obterá a longa espera fexc.exe como saída. Não seja feliz muito cedo. O utilitário ainda não está totalmente funcional. Você pode garantir isso descriptografando algum arquivo script.bin válido no formato de texto - arquivo script.fex com a consequente criptografia do arquivo script.fex de volta no script.bin. Você pode notar que o tamanho do script.bin resultante difere um pouco do tamanho do script.bin original. E se você tentar descriptografar o resultado mais uma vez, ele falhará. Nem o Orange PI funcionará com este script.bin. Para obter a utilidade funcional, temos que lançar uma bomba de código, que alguém colocou no código-fonte sunxi-tools. Será nosso próximo passo.

Etapa 13: Exorcismo

Exorcismo
Exorcismo

Para descarregar a bomba de código, abra o arquivo de código fexc.c e encontre lá uma string de texto do próximo conteúdo:

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

Basta substituí-lo pela próxima string:

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

Se não os dígitos malignos "666" na primeira string, eu acho que o codificador apenas se esqueceu de usar a bandeira O_BINARY. Mas o Número da Besta esclarece suas intenções de forma transparente. Imagine, como é engenhoso: devido à sutil diferença em como os arquivos são processados no Windows e no Linux, a bomba não tem efeito quando o utilitário é compilado e usado no Linux. Mas estraga tudo quando o utilitário é usado no Windows.

Depois que a bomba for desarmada, você pode finalmente compilar e usar com segurança o utilitário fexc em seu computador desktop Windows.

Etapa 14: NOTAS

NOTAS
NOTAS

1) Para usar o utilitário fexc confortavelmente, você deve obter dois arquivos em lote:

bin2fex.bat - e - fex2bin.bat.

Você pode obtê-los em alguma compilação com falha de fexc.exe para Windows ou Você pode digitá-los você mesmo:

  • bin2fex.bat deve conter "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat deve conter "fexc -O bin -I fex script.fex script.bin"

2) Se for difícil encontrar o gerenciador mman para Windows, pode-se evitar o seu uso. No entanto, é preciso muito mais edição do arquivo fexc.c e requer pelo menos algum conhecimento de c. Para sua conveniência, compartilho o código-fonte editado do fexc do sunxi-tools v1.4 livre da dependência para mman.h junto com o arquivo de projeto codeblocks e com o script.bin de amostra de algum pi laranja. Você pode baixar fexc_nomman.zip

3) É possível que nas versões subsequentes das ferramentas sunxi eles adicionem mais algumas dependências. Sinta-se à vontade para encontrá-los na Internet e adicioná-los ao Seu projeto de compilação.

5) Finalmente, aqui está a versão pré-compilada de fexc.exe para Win32:

fexc_nomman.zip

Se você for preguiçoso o suficiente, sinta-se à vontade para usar o ver. No entanto, esteja ciente de que não será atualizado se / quando as versões mais recentes do SunxiTools / Windows estiverem disponíveis. Portanto, é melhor aprender como compilá-los do que depender de alguma construção binária fixa, eu presumo.

4) O "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", etc … são marcas comerciais correspondentes de seus respectivos proprietários.

5) Se o compilador reclamar de não encontrar funções mman, como:

referência indefinida a '_imp_mmap'

esteja ciente de que definir os amantes da comunidade de desenvolvimento mman se esqueceram de que o código pode ser compilado não apenas como uma biblioteca dll. Também pode ser uma biblioteca estática ou um código autônomo como temos aqui. Para corrigir o problema, edite o arquivo "mman.h" da seguinte maneira:

a) encontre as strings:

#if definido (MMAN_LIBRARY)

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

b) adicione a corda

#define MMANSHARED_EXPORT

logo abaixo das strings encontradas na etapa anterior

Recomendado: