Meu cartão de visita está rodando Linux

Tradução de um artigo de Blog engenheiro George Hilliard

Meu cartão de visita está rodando Linux
Clicável

Sou engenheiro de sistemas embarcados. No meu tempo livre, muitas vezes procuro algo que possa ser usado no design de sistemas futuros, ou algo do meu interesse.

Uma dessas áreas são os computadores baratos que podem rodar Linux, e quanto mais barato, melhor. Então cavei uma toca profunda de processadores obscuros.

Pensei: “Esses processadores são tão baratos que podem praticamente ser doados de graça”. E depois de algum tempo, tive a ideia de fazer um cartão simples para Linux no formato de um cartão de visita.

Depois que pensei sobre isso, decidi que seria uma coisa muito legal de se fazer. eu já viu eletrônico cartões de negócios para ele, e eles tinham vários recursos interessantes, como emulação de cartões flash, lâmpadas piscantes ou até mesmo transmissão de dados sem fio. No entanto, não vi cartões de visita com suporte para Linux.

Então eu me tornei um.

Esta é a versão final do produto. Um computador ARM mínimo completo executando minha versão personalizada do Linux construída com Buildroot.

Meu cartão de visita está rodando Linux

Tem uma porta USB no canto. Se você conectá-lo a um computador, ele inicializa em cerca de 6 segundos e fica visível como um cartão flash e uma porta serial virtual através da qual você pode fazer login no shell do cartão. Na unidade flash há um arquivo README, uma cópia do meu currículo e várias fotos minhas. O shell conta com diversos jogos, clássicos do Unix como Fortune e Rogue, uma versão pequena do jogo 2048 e um interpretador MicroPython.

Tudo isso é feito usando um pequeno chip flash de 8 MB. O bootloader cabe em 256 KB, o kernel ocupa 1,6 MB e todo o sistema de arquivos raiz ocupa 2,4 MB. Portanto, sobra muito espaço para o pen drive virtual. Há também um diretório inicial que pode ser gravado caso alguém faça algo que queira salvar. Tudo isso também é salvo em um chip flash.

O dispositivo inteiro custa menos de US$ 3. É barato o suficiente para doar. Se você recebeu esse dispositivo de mim, significa que provavelmente estou tentando impressioná-lo.

Projetar e construir

Eu projetei e montei tudo sozinho. É o meu trabalho e eu adoro isso, e grande parte do desafio tem sido encontrar peças baratas o suficiente para o hobby.

A escolha do processador foi a decisão mais importante que afetou o custo e a viabilidade do projeto. Após extensa pesquisa, escolhi o F1C100s, um processador relativamente pouco conhecido da Allwinner e com custo otimizado (ou seja, muito barato). RAM e CPU estão localizadas no mesmo pacote. Comprei processadores no Taobao. Todos os outros componentes foram adquiridos da LCSC.

Encomendei as placas da JLC. Eles fizeram 8 cópias para mim por US$ 10. Sua qualidade impressiona, principalmente pelo preço; não tão elegante quanto o do OSHPark, mas ainda assim parece bom.

Fiz o primeiro lote em preto fosco. Eles pareciam lindos, mas sujavam-se facilmente.

Meu cartão de visita está rodando Linux

Houve alguns problemas com o primeiro lote. Primeiro, o conector USB não era longo o suficiente para caber com segurança em qualquer porta USB. Em segundo lugar, as trilhas do flash foram feitas incorretamente, mas contornei isso dobrando os contatos.

Meu cartão de visita está rodando Linux

Depois de verificar se tudo estava funcionando, encomendei um novo lote de placas; Você pode ver a foto de um deles no início do artigo.

Devido ao pequeno tamanho de todos esses pequenos componentes, decidi recorrer à soldagem por refluxo usando fogão barato. Tenho acesso a um cortador a laser, então usei-o para cortar um estêncil de solda do filme laminador. O estêncil ficou muito bom. Os furos de 0,2 mm de diâmetro para os contatos do processador exigiam cuidados especiais para garantir uma fabricação de alta qualidade – era fundamental focar corretamente o laser e selecionar sua potência.

Meu cartão de visita está rodando Linux
Outras placas funcionam bem para segurar a placa durante a aplicação da pasta.

Apliquei pasta de solda e posicionei os componentes manualmente. Certifiquei-me de que o chumbo não fosse usado em nenhum lugar do processo - todas as placas, componentes e pasta atendem ao padrão RoHS - para que a minha consciência não me atormente quando os distribuo às pessoas.

Meu cartão de visita está rodando Linux
Cometi um pequeno erro com este lote, mas a pasta de solda perdoa erros e deu tudo certo

Cada componente levou cerca de 10 segundos para ser posicionado, então tentei manter o número de componentes no mínimo. Mais detalhes sobre o design do mapa podem ser lidos em outro meu artigo detalhado.

Lista de materiais e custos

Eu mantive um orçamento rigoroso. E o cartão de visita saiu como planejado - não me importo de dá-lo! Claro que não vou distribuir para todo mundo, pois leva tempo para fazer cada cópia, e meu tempo não é levado em consideração no custo do cartão de visita (é meio grátis).

Componente
Preço

F1C100
$1.42

PCB
$0.80

Flash de 8 MB
$0.17

Todos os outros componentes
$0.49

No total
$2.88

Naturalmente, também existem custos difíceis de calcular, como o de entrega (já que está distribuído entre componentes destinados a vários projetos). No entanto, para uma placa que suporta Linux, é definitivamente muito barata. Esse detalhamento também dá uma boa ideia de quanto custa às empresas fabricar aparelhos no segmento de preço mais baixo: pode ter certeza que custa ainda menos às empresas do que me custa!

Capacidades

O que dizer? A placa inicializa um Linux totalmente despojado em 6 segundos. Devido ao formato e ao custo, a placa não possui E/S, suporte de rede ou qualquer quantidade significativa de armazenamento para executar programas pesados. Mesmo assim, consegui inserir um monte de coisas interessantes na imagem do firmware.

USB

Havia muitas coisas legais que poderiam ser feitas com o USB, mas escolhi a opção mais simples para que as pessoas tivessem mais chances de fazê-lo funcionar se decidissem experimentar meu cartão de visita. Linux permite que a placa se comporte como um “dispositivo” com suporte Estrutura de gadgets. Peguei alguns drivers de projetos anteriores que incluíam este processador, para ter acesso a todas as funcionalidades da estrutura do gadget USB. Decidi emular uma unidade flash pré-gerada e conceder acesso ao shell por meio de uma porta serial virtual.

concha

Após fazer login como root, você pode executar os seguintes programas no console serial:

  • ladino: um clássico jogo de aventura de rastreamento de masmorras Unix;
  • 2048: um jogo simples de 2048 no modo console;
  • fortuna: produção de vários ditos pretensiosos. Decidi não incluir aqui todo o banco de dados de citações para deixar espaço para outros recursos;
  • micropíton: Um interpretador Python muito pequeno.

Emulação de pen drive

Durante a compilação, as ferramentas de construção geram uma pequena imagem FAT32 e a adicionam como uma das partições UBI. O Linux Gadget Subsystem apresenta seu PC como um dispositivo de armazenamento.

Se você estiver interessado em ver o que aparece no pen drive, a maneira mais fácil de fazer isso é lendo fontes. Há também várias fotografias e meu currículo.

Recursos

Fontes

Minha árvore Buildroot está postada no GitHub - trinta e três quarenta / businesscard-linux. Existe um código para gerar uma imagem flash NOR, que é instalada usando o modo de download USB do processador. Ele também contém todas as definições de pacotes para jogos e outros programas que coloquei no Buildroot depois que tudo funcionou. Se você estiver interessado em usar o F1C100s em seu projeto, este seria um ótimo ponto de partida (sinta-se à vontade Faça-me perguntas).
eu usei projeto lindamente executado Linux v4.9 para F1C100s da Icenowy, ligeiramente modificado. Minha placa roda quase o padrão v5.2. Está no GitHub - trinta e três quarenta/linux.
Acho que tenho o melhor port de U-Boot para F1C100 do mundo hoje, e também é parcialmente baseado no trabalho de Icenowy (surpreendentemente, fazer o U-Boot funcionar corretamente foi uma tarefa bastante frustrante). Você também pode obtê-lo no GitHub - trinta e três quarenta / u-boot.

Documentação para F1C100s

Encontrei documentação bastante esparsa para F1C100s e estou postando aqui:

Estou enviando para os curiosos. diagrama do meu projeto.

Meu cartão de visita está rodando Linux

Conclusão

Aprendi muito durante o desenvolvimento deste projeto - foi meu primeiro projeto utilizando um forno de solda por refluxo. Também aprendi como encontrar recursos para componentes com documentação deficiente.

Usei minha experiência existente com Linux embarcado e experiência em desenvolvimento de placas. O projeto não está isento de falhas, mas mostra bem todas as minhas habilidades.

Para os interessados ​​nos detalhes de como trabalhar com Linux embarcado, sugiro a leitura da minha série de artigos sobre o assunto: Dominando o Linux Embarcado. Lá falo detalhadamente sobre como criar software e hardware do zero para sistemas Linux minúsculos e baratos, semelhante ao meu cartão de visita.

Fonte: habr.com

Adicionar um comentário