Tradução do artigo de do engenheiro George Hilliard
Clicável
Sou engenheiro de sistemas embarcados. No meu tempo livre, costumo procurar o que posso usar no design de sistemas futuros ou algo dos meus interesses.
Uma dessas áreas são os computadores baratos que conseguem rodar Linux, e quanto mais baratos, melhor. Por isso, mergulhei em uma profunda toca de coelho de processadores pouco conhecidos.
Pensei: "Esses processadores são tão baratos que poderiam praticamente ser dados de graça". E, depois de um tempo, tive a ideia de criar um cartão nu para Linux no formato de um cartão de visita.
Assim que pensei nisso, decidi que seria muito legal fazer. Eu já até , e eles tinham várias funcionalidades interessantes, como emulação de cartões flash, piscando luzes ou até transmissão de dados sem fio. No entanto, nunca encontrei cartões de visita que suportassem Linux.
Então, fiz um para mim.
Esta é a versão final do produto. Um computador mínimo completo em ARM, que roda minha versão especial do Linux, criada com o Buildroot.

No canto, há uma porta USB. Se conectá-la a um computador, ela inicializa em cerca de 6 segundos e é reconhecida como um cartão flash e uma porta serial virtual, pela qual você pode acessar o shell do cartão. No flash, está um arquivo README, uma cópia do meu currículo e algumas fotos minhas. No shell, há alguns jogos, clássicos do Unix como fortune e rogue, uma versão menor do jogo 2048 e um interpretador MicroPython.
Tudo isso foi feito usando um chip flash muito pequeno de 8 MB. O bootloader cabe em 256 KB, o núcleo ocupa 1,6 MB e todo o sistema de arquivos root – 2,4 MB. Portanto, ainda há bastante espaço para o flash virtual. Também há um diretório home acessível para gravação – se alguém fizer algo que queira salvar. Tudo isso também é salvo no chip flash.
Todo o dispositivo custa menos de $3. É barato o suficiente para ser distribuído. Se você recebeu de mim um dispositivo assim, isso significa que provavelmente estou tentando impressioná-lo.
Projeto e montagem
Projetei e montei tudo eu mesmo. Este é o meu trabalho, gosto dele, e a maior parte das dificuldades estava em encontrar peças suficientes a um preço razoável para esse hobby.
A escolha do processador foi a decisão mais importante que influenciou o custo e a viabilidade do projeto. Após muita pesquisa, escolhi o F1C100s, um processador relativamente pouco conhecido da Allwinner, otimizado para custo (ou seja, incrivelmente barato). Tanto a RAM quanto o CPU estão em um único chip. Comprei os processadores no Taobao. Todos os outros componentes foram adquiridos na LCSC.
As placas eu pedi na JLC. Por $8, fiz 10 cópias. A qualidade delas é impressionante, especialmente pelo preço; não são tão precisas quanto as da OSHPark, mas ainda assim têm uma boa aparência.
Fiz a primeira remessa em preto fosco. Elas ficaram bonitas, mas eram muito suscetíveis a marcas.

Houve alguns problemas com a primeira remessa. Primeiro, o conector USB não era comprido o suficiente para se encaixar de forma confiável em qualquer porta USB. Em segundo lugar, as trilhas para o flash estavam mal feitas, mas contornei isso dobrando os pinos.

Depois de testar tudo em funcionamento, pedi uma nova remessa de placas; você pode ver a foto de uma delas no início do artigo.
Devido ao pequeno tamanho de todos esses componentes menores, decidi utilizar soldagem por reflujo [reflow solder] com uma . Tenho acesso a uma cortadora a laser, então fiz um molde para soldagem com filme de laminação. O molde ficou razoavelmente bom. Os furos para os pinos do processador, com diâmetro de 0,2 mm, exigiam um cuidado especial na fabricação – era crítico focar corretamente o laser e ajustar sua potência.

Outras placas são muito boas para segurar a placa ao aplicar a pasta
Apliquei a pasta de solda e arranjei os componentes manualmente. Certifiquei-me de que em nenhum momento foi utilizado chumbo – todas as placas, componentes e a pasta estão em conformidade com o padrão – para que minha consciência não ficasse pesada quando eu fosse distribuir para as pessoas.

Com esta remessa, cometi um pequeno erro, mas a pasta de solda perdoa falhas, e tudo se montou corretamente.
Demorava cerca de 10 segundos para posicionar cada componente, então tentei manter sua quantidade mínima. Mais detalhes sobre o design da placa podem ser encontrados em outro lugar. .
Lista de materiais e custo
Eu mantive um orçamento rigoroso. E o cartão de visita ficou como eu planejei - não me importo em entregá-lo! Claro, não vou distribuí-lo para todo mundo, pois a produção de cada exemplar leva tempo, e meu tempo não está incluído no custo do cartão (é uma espécie de gratuito).
Componente
Preço
F1C100s
$1.42
PCB
$0.80
8MB flash
$0.17
Todos os outros componentes
$0.49
Total
$2.88
Naturalmente, há outros custos que são difíceis de calcular, como o frete (já que ele é distribuído entre os componentes destinados a vários projetos). No entanto, para a placa com suporte a Linux, isso é definitivamente muito barato. Essa divisão também dá uma boa ideia de quanto as empresas pagam pela fabricação de dispositivos no segmento de preços mais baixo: você pode ter certeza de que para as empresas isso é ainda mais barato do que para mim!
Recursos
O que dizer? O cartão carrega um Linux muito limitado em 6 segundos. Devido ao fator de forma e ao custo, o cartão não tem I/O, suporte de rede ou um volume sério de armazenamento para executar programas pesados. No entanto, consegui incluir um monte de coisas interessantes na imagem do firmware.
USB
Com USB, poderia haver muitas ideias interessantes, mas escolhi a opção mais simples, para que as pessoas tivessem uma alta probabilidade de que tudo funcionasse, caso decidissem tentar meu cartão de visita. O Linux permite que o cartão se comporte como um "dispositivo" com suporte. . Alguns drivers eu peguei de projetos anteriores que incluíam este processador, então tenho acesso a toda a funcionalidade da plataforma USB gadget framework. Decidi emular um pen drive pré-gerado e fornecer acesso ao shell por meio de uma porta serial virtual.
Shell
Após o login como usuário root no console serial, pode-se executar os seguintes programas:
- rogue: um clássico jogo de aventura de masmorras para Unix;
- 2048: jogo simples de 2048 no modo console;
- fortune: exibe várias citações pomposas. Decidi não incluir todo o banco de citações aqui, para deixar espaço para outras funções;
- : um interpretador Python muito pequeno.
Emulação de Flash Drive
Durante a compilação, as ferramentas de construção geram uma pequena imagem FAT32 e a adicionam como uma das partições do UBI. O subsistema de gadgets do Linux o apresenta ao PC como um dispositivo de armazenamento.
Se você está curioso para ver o que aparece no pen drive, a maneira mais simples é consultando os . Eles também contêm algumas fotos e meu currículo.
Recursos
Códigos fonte
Minha árvore Buildroot está disponível no GitHub - . Lá você encontra o código que gera a imagem flash NOR, que é instalada através do modo de recuperação USB do processador. Também estão todas as definições de pacotes para jogos e outros programas que adicionei ao Buildroot depois que tudo funcionou. Se você deseja usar o F1C100s em seu projeto, isso será um ótimo ponto de partida (sinta-se à vontade para ).
Eu utilizei Linux v4.9 para F1C100s de Icenowy, fazendo algumas modificações. No meu cartão, quase padrão v5.2 funciona. Ele está disponível no GitHub - .
Acredito que hoje eu tenha o melhor port do U-Boot para F1C100s no mundo, e ele também se baseia parcialmente no trabalho de Icenowy (surpreendentemente, fazer o U-Boot funcionar corretamente foi uma tarefa bastante desagradável). Também pode ser encontrado no GitHub - .
Documentação sobre F1C100s
Encontrei uma documentação bastante escassa sobre o F1C100s e a coloco aqui:
- – informações gerais e pinagem.
- – definições de registradores para o F1C600, que na verdade é o mesmo que o F1C100s, mas renomeado com suporte declarado para Linux (ha!).
- Ativamente, eu tirei informações do esquema de – placa de desenvolvimento que utilizei para configurar o software.
Para os curiosos, estou uploadando .

Conclusão
Aprendi muito durante o desenvolvimento deste projeto - este é o meu primeiro projeto em que usei um forno para soldagem com solda a quente. Também aprendi a encontrar recursos para componentes com documentação ruim.
Utilizei minha experiência prévia com Linux embarcado e com desenvolvimento de placas. O projeto não é perfeito, mas demonstra bem todas as minhas habilidades.
Para aqueles interessados em detalhes sobre o trabalho com Linux embarcado, recomendo a leitura da minha série de artigos sobre o assunto: . Lá explico detalhadamente como criar software e hardware do zero para pequenos e baratos sistemas Linux, semelhantes ao meu cartão de visita.
Fonte: habr.com
