Há muito tempo que sonhava com um aparelho que tivesse uma tela touchscreen, botões de hardware embutidos e em que o linux funcionasse sem problemas. E é claro que terá um número suficiente de interfaces. Ao mesmo tempo, o projeto da Vogue parecia promissor , mas hoje eu o encontrei - um dispositivo ideal para carregar no bolso, com um processador poderoso e Linux a bordo. Portanto, esta é a calculadora HP Prime G2. Existe um processador i.mx6ull chique com o qual tenho bastante experiência, então portar o Linux não me pareceu uma tarefa muito difícil. Porém, como sempre, o diabo está nas pequenas coisas.
Quero contar a vocês sobre meu caminho espinhoso de instalar o Linux em uma calculadora, o que deu certo e o que não deu, você deve julgar!
Projeto Linux para HP Prime G2
Apesar de ter mexido muito neste projeto, e no geral até feito minha própria contribuição para o seu desenvolvimento, ainda o ramo principal do projeto, que deu início a tudo, deve ser considerado Linux para HP Prime G2 da zephray . Mas, como de costume, acontece nesses projetos, se você tentar repetir tudo de acordo com as instruções, a nifiga não funcionará, e você coletará milhares de ancinhos, que o autor, por um motivo ou outro, esqueceu de mencionar . Portanto, neste artigo, tentarei chamar sua atenção para essas inconsistências, dizer-lhe como contorná-las e também postar o kernel obviamente funcional e os assemblies rootfs.
Deve ser entendido que eu não quero lançar nenhuma sombra sobre o zephray.... Este é um homem titã que merece verdadeira admiração. Ele fez um trabalho verdadeiramente titânico ao portar essas coisas para uma calculadora. Na verdade, como geralmente é o caso, ele adaptou as configurações da placa de depuração para o dispositivo atual. E também, o driver de vídeo foi escrito lá, o carregador de u-boot foi configurado corretamente, o arquivo dts ( arquivo de árvore de dispositivo ) foi compilado corretamente , um monte de código foi adicionado ao próprio kernel. Não se esqueça que tudo isso foi feito sem um esquema e documentação, portanto, a quantidade de trabalho realizado é simplesmente de tirar o fôlego, e tudo isso com puro entusiasmo. Infelizmente, o volume e o formato do artigo não me permitem examinar o código em detalhes, embora haja realmente algo para ver e onde tirar o chapéu de admiração!
Mas há muito código, tanto no kernel, no bootloader e na árvore de dispositivos. Vou terminar o capítulo com uma citação de Basha :
callidus77:
Pomnitsa em nossa rede, instaladores conectaram o assinante. Eles vieram, enfiaram o setevukha, mas ele não tinha Frya e não tinha lenha. Coçamos nossas cabeças e saímos. A pessoa finalmente se conecta em três semanas.
Gryat: "Há quanto tempo você procura lenha."
Ele: “Eu não estava olhando. Eu mesmo os escrevi. "
Olhando para o futuro, podemos dizer que instalar o Linux em uma calculadora passou de uma caminhada agradável de meia hora para uma verdadeira busca por algumas semanas.
Porquinho da índia
Para começar, precisamos da calculadora HP Prime G2 (2AP18AA) . Como há uma chance não ácida de que vários dispositivos diferentes possam estar escondidos sob o mesmo nome, aqui estão as fotos e uma descrição de sua aparência e como determinar se este é exatamente o dispositivo de que você precisa.
Para ter certeza de que esta é exatamente a nossa calculadora, você precisa abrir a ajuda (botão Ajuda) e aí abrir a seção sobre a calculadora (Segunda linha a partir do topo do menu). Você deve ter algo assim.
Sobre a calculadora.
Direi desde já que no nosso país só uma empresa vende estas calculadoras (pelo menos não encontrei outras), pelo que não deve haver problemas com a compra, exceto talvez pelo preço. Mas vale a pena!
Preparando para instalar o Linux em uma calculadora
Para começar, precisamos fazer algumas atividades. para instalar o Linux em Nand ou executar este sistema operacional em RAM, você precisa remover a tampa traseira da calculadora, o que, por definição, invalidará imediatamente sua garantia (lembre-se disso antes de começar a trabalhar). Todas as manipulações foram realizadas no linux mint 18.2 (tudo deve funcionar da mesma forma no Ubuntu 18.04).
Precisaria:
- Calculadora HP Prime G2 (2AP18AA);
- Cabo USB (USB A - Micro B) para conectar o Prime a um PC;
- Chave de fenda;
- pinça (condutiva ou com jumper), ou botão nos fios;
- PC em Linux ou Windows 7 ou superior;
- kit de distribuição HP-Prime-Linux (mais adiante darei um link um pouco diferente, para isso não funciona muito bem).
- O utilitário uuu (Universal Update Utility) incluído no pacote mfgtools 3.0 .https: //github.com/NXPmicro/mfgtools.
Nós instalamos o software necessário
Para começar, prepararemos um suporte para o software e verificaremos se ele funciona. Primeiro, vamos construir o utilitário uuu.
git clone https://github.com/NXPmicro/mfgtools.git
cd mfgtools
sudo apt-get install libusb-1.0-0-dev libzip-dev libbz2-dev pkg-config cmake libssl-dev g++
cmake . && make
E então recebi um erro cmake ... Como resultado, tive que atualizar o utilitário cmake. Para fazer isso, executei os seguintes comandos:
wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc |
sudo apt-key add -
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo apt-get update
sudo apt-get install cmake
Depois de uma compilação bem-sucedida, decidi instalar o pacote., Mas já que estamos sendo atingidos ao fazer a instalação, faremos isso cientificamente e instalaremos usando o utilitário checkinstall.
sudo checkinstall
Como resultado, temos o pacote mfgtools instalado , que, se necessário, pode ser removido com o comando
dpkg -r mfgtools
Verificamos se tudo está funcionando e seguimos em frente.
uuu -h
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.4.69-0-g63b1d3c
uuu [-d -m -v -V] <bootloader|cmdlists|cmd>
bootloader download bootloader to board by usb
cmdlist run all commands in cmdlist file
If it is path, search uuu.auto in dir
If it is zip, search uuu.auto in zip
cmd Run one command, use -H see detail
....
Preparação de hardware
Deve haver um discurso de que você faz tudo por sua própria conta e risco, que, dizem eles, o autor não é responsável por suas calculadoras queimadas, etc. etc. Mas acredito que somos todos adultos que entendem claramente os riscos do que estão fazendo e entendem as consequências.
Primeiro, você precisa desmontar a calculadora. As primeiras coisas primeiro, eu desparafusei todos os parafusos e tirei a bateria.
Removemos a bateria.
A propósito, preste atenção na bateria legal desse aparelho. A propósito, em experiências futuras, não vou mais precisar disso, infelizmente.
Além disso, ao longo do perímetro, eu o abro com um cartão e um abridor especial, tentando não quebrar as travas.
Abrimos a caixa de plástico.
Depois de todas as ações, as entranhas da calculadora apareceram para mim e agora, estou quase pronto para os experimentos mais bárbaros.
Seio.
Tenho quase tudo pronto para rodar o Linux nesta calculadora. Mas há nuance (s). Para a partida inicial, dois pads devem estar em curto-circuito. Como escreve o autor deste projeto:
, USB .
: . .
Reset ( ). USB- “SE Blank 6ULL”. ( Linux Feescale USB- lsusb)
![]()
Observação: você está encurtando o contato do "Modo de inicialização" ao aterramento. Por padrão, este pino é conectado a 3,3 V por meio de um resistor pull-up de 10k.
Além disso, você terá duas opções. Ao mesmo tempo, você pode realizar uma série de ações uma a uma, sem reiniciar a calculadora. Por exemplo, em uma das opções, primeiro faça uma cópia de backup da memória NAND e, em seguida, atualize o SO Linux nela sem precisar reiniciar.
Decidi que não estava pronto, com a mão trêmula, para causar um curto-circuito em blocos quase imperceptíveis para carregamento. Só precisamos dessa operação uma vez (então, é claro, você pode arriscar), então decidi me proteger e soldar o botão.
Botão de download.
Chamo sua atenção para o fato de que o botão é necessário apenas se você não quiser apagar o conteúdo da calculadora e estiver pronto para iniciar o Linux na RAM uma vez e se acalmar. Em geral, com as mãos retas e confiança no futuro, você pode fazer com uma pinça.
É isso, estamos praticamente prontos para lançar o Linux com um pé
Instalando Linux, andando em um ancinho
Antes de passarmos para a instalação real do Linux na calculadora, para todas as dificuldades que surgiram, gostaria de chamar a sua atenção para um detalhe. Antes de repetir as instruções de outras pessoas (incluindo as fornecidas neste artigo), certifique-se de que todos os arquivos que devem estar nos arquivos de instalação estão presentes, de que você está executando o comando exato de que precisa. Se você estiver executando o script de outra pessoa, verifique o conteúdo desse script. Se você não entender o que está escrito lá, então descubra o que está acontecendo lá, e então há uma chance não ácida de que, se tudo não funcionar, pelo menos você pode salvar seu equipamento de todos os tipos de problemas.
Mas, como você pode imaginar, desde que escrevi tal parágrafo, não segui esse caminho. Como se costuma dizer, o russo lê as instruções com as palavras: droga, já quebrou. Então, agi quase da mesma maneira e meu caminho foi espinhoso. Para fazer um backup do firmware, executar e / ou instalar o linux, você precisa baixar o arquivo flash_utility.tar.gz aqui... Antes de prosseguirmos, olhando adiante, direi que este arquivo não contém rootfs.tar.bz2, que é necessário para piscar no nand (embora haja uma chamada para ele no script flash_linux_to_nand.uu), initramfs, que permite você inicia o linux sem instalar, não funciona e a instalação do linux no nand falha. Como resultado, você obtém um tijolo, na verdade, não. Eu não sabia de tudo isso e, a partir daquele momento, instalar o Linux acabou sendo uma verdadeira busca para mim.
Para prosseguirmos, citarei as instruções de uso deste utilitário.
2.2 backup NAND
: NAND ECC OOB-, . ECC. , flash- ( , ..) - . , , , , . , , , .
SDP. flash_utility :
Windows:
uuu backup_nand.uu
Linux:
sudo ./uuu backup_nand.uu
, NAND backup.
2.3 NAND
NAND backup.
SDP. flash_utility, :
Windows:
uuu restore_nand.uu
Linux:
sudo ./uuu restore_nand.uu
2.4 Linux RAM
Linux NAND. Linux SDP USB.
: , - .
: RAM ~15. .
SDP, , flash_utility, :
Windows:
uuu run_linux_in_ram.uu
Linux:
sudo ./uuu run_linux_in_ram.uu
Linux. «root».
2.5 Linux NAND
: , NAND. , , 2.3.
: .
Linux NAND SDP, , flash_utility, :
Windows:
uuu flash_linux_to_nand.uu
Linux:
sudo ./uuu flash_linux_to_nand.uu
O processo demorará alguns minutos. Após a conclusão, reinicie (Reinicialize) a calculadora, após o que ela deve inicializar no Linux. O download levará cerca de 15 segundos. Para autorização use o login "root".
Eu trouxe deliberadamente esta tradução aqui para que ela não se perca no futuro.
A lógica determina que você precisa fazer um backup nand-flash e, em seguida, realizar os experimentos. Para fazer isso, segurei o botão, inseri o cabo USB na calculadora e executei:
sudo uuu restore_nand.uu
Atenção: existe um erro no comando acima, neste estágio ele não pode ser executado !!! Nada o incomoda sobre este comando? No começo, nada me confundiu também ... Mas eu, com esse comando não fiz backup da calculadora, mas apaguei meu nand-flash, entupindo-o com lixo desnecessário, e me livrando do trecho ECC. Uma calculadora nunca será uma calculadora agora ...
A noite estava lânguida, queria experimentar, embotava e confundia os comandos. Ok, pensei, estava, não estava, vou tentar fazer um flash de linux em flash, de qualquer maneira, o pen drive já está apagado e não há nada a perder. Da mesma forma, desconectei o USB, segurei o botão e fiz:
sudo uuu flash_linux_to_nand.uu
E, como resultado, recebo este erro:
Então eu não sabia ainda que se esse erro não existisse, eu ainda não seria capaz de piscar minha calculadora, já que o arquivo do rootfs estava faltando na lista de arquivos, e eu teria descartado com um erro a algumas linhas abaixo.
Infelizmente, não consegui evitar mais esse erro, esse comando executa o firmware u-boot no nand-flash. Por alguma razão, sua execução falha com um erro na criação de um arquivo temporário (eu aprendi isso mais tarde com a conexão UART).
O bom resultado desse comando é que você não precisa mais pressionar um botão. E não precisamos mais dele, agora podemos retirá-lo.
Então ... me livrei do pen drive, não consigo colocar o linux, bom, talvez pelo menos na RAM seja possível iniciá-lo?
Eu corro:
sudo uuu run_linux_in_ram.uu
Eu conecto o USB ao dispositivo de destino e o comando passa com sucesso. E, vejam só, o Linux está carregando! Mas ... Mas nunca chegamos ao login.
Nós travamos neste estágio ...
Bom resultado: bootloader, kernel, display, sistema de flashing como um todo funciona. Resultado ruim: o linux não funciona.
Como resultado, precisamos: conectar o UART de hardware para ver o que está acontecendo e reconstruir o kernel (principalmente para drivers) e reconstruir o rootfs para fazê-lo funcionar.
Conclusão da primeira parte
O artigo simplesmente cresceu para um tamanho obsceno, então foi tomada a difícil decisão de dividi-lo em dois.
Como você entende, eu não poderia colocar o Linux dessa forma. E então você tem que conectar a artilharia pesada: aquecer o ferro de solda, entrar no enchimento de ferragens e vasculhar o código. Você pode ler sobre tudo isso na segunda parte deste épico.