O Linux é executado no meu cartão de visita

Tradução de um artigo do blog do engenheiro George Hilliard


Clicável

Sou engenheiro de sistemas embarcados. No meu tempo livre, muitas vezes procuro o que pode ser usado no design de sistemas futuros ou algo da categoria de meus interesses.

Uma dessas áreas são os computadores baratos que suportam Linux, e quanto mais barato, melhor. Portanto, eu me enterrei em uma toca de coelho profunda de processadores pouco conhecidos.

Pensei: "Esses processadores são tão baratos que praticamente podem ser distribuídos gratuitamente". Depois de um tempo, surgiu a idéia de criar um cartão simples para o Linux em um formato de cartão de visita.

Assim que pensei nisso, decidi que seria muito legal fazer isso. Eu já vi cartões de visita eletrônicos antes, e eles tinham vários recursos interessantes, como emular cartões de memória flash, luzes piscantes ou até transferência de dados sem fio. No entanto, eu não vi cartões de visita com suporte ao Linux.

Então eu me fiz um.

Esta é uma versão completa do produto. Um computador mínimo completo no ARM, que executa minha versão especial do Linux, criada usando o Buildroot.



No canto ela tem uma porta USB. Se você conectá-lo a um computador, ele carrega em cerca de 6 segundos e pode ser visto como um cartão flash e porta serial virtual, através dos quais você pode inserir o shell do cartão. Na unidade flash, há um arquivo LEIA-ME, uma cópia do meu currículo e algumas das minhas fotos. Existem vários jogos no shell, clássicos do Unix, como fortuna e trapaceiro, uma versão pequena do jogo de 2048 e o interpretador MicroPython.

Tudo isso é feito com um chip flash muito pequeno de 8 MB. O carregador de inicialização cabe em 256 KB, o kernel ocupa 1.6 MB e todo o sistema de arquivos raiz - 2.4 MB. Portanto, resta muito espaço para uma unidade flash virtual. Ele também possui um diretório pessoal gravável - se alguém fizer algo que deseja salvar. Isso também é armazenado em um chip flash.

Todo o dispositivo custa menos de US $ 3. É barato o suficiente para ser distribuído. Se você recebeu um dispositivo meu, significa que provavelmente estou tentando impressioná-lo.

Projeto e Montagem


Eu projetei e montei tudo sozinho. Esse é o meu trabalho, e eu gosto, e a maioria das dificuldades consistia em encontrar peças baratas o suficiente para esse tipo de hobby.

A escolha de um processador foi a decisão mais importante que afetou o custo e a viabilidade do projeto. Após uma pesquisa ativa, escolhi o F1C100s, um processador Allwinner relativamente pouco conhecido, com otimização de custo (ou seja, muito barato). Em um caso, são RAM e CPU. Eu comprei processadores no Taobao. Todos os outros componentes adquiridos na LCSC.

Encomendei placas da JLC. Por US $ 8, fiz 10 cópias. Sua qualidade é impressionante, especialmente pelo preço; Não é tão arrumado quanto o OSHPark, mas ainda parece bom.

Eu fiz o primeiro lote preto fosco. Eles estavam lindos, mas eram muito facilmente sujos.



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



Depois de verificar tudo no trabalho, pedi um novo lote de tábuas; Você pode ver uma foto de um deles no início do artigo.

Devido ao pequeno tamanho de todos esses pequenos componentes, decidi recorrer à refusão de solda usando um fogão barato . Eu tenho acesso a um cortador a laser, então cortei um estêncil de solda de um filme para um laminador nele. O estêncil ficou muito bem. Os furos para os contatos do processador com um diâmetro de 0,2 mm exigiam cuidados especiais para a fabricação de alta qualidade - era extremamente importante focalizar corretamente o laser e selecionar sua potência.


Outras pranchas são boas para prendê-la ao aplicar pasta.

Apliquei pasta de solda e organizei os componentes manualmente. Assegurei-me de que o chumbo não fosse usado em nenhum lugar do processo - todas as placas, componentes e pastas são compatíveis com RoHS - para que eu não fosse atormentado pela consciência quando os distribuísse às pessoas.


Perdi um pouco com esse lote, mas a pasta de solda perdoa os erros e tudo correu bem

Cada componente levou cerca de 10 segundos para ser posicionado, então tentei diminuir o número deles. Mais detalhes sobre como projetar um mapa podem ser encontrados em meu outro artigo detalhado .

Lista de materiais e custo


Eu mantive um orçamento rigoroso. E o cartão de visita saiu como foi planejado - não me importo de entregá-lo! Obviamente, não darei a todos e a todos, porque o tempo é gasto na produção de cada cópia e meu tempo não é levado em consideração no custo de um cartão de visita (é meio gratuito).

ComponentePreço
F1C100sUS $ 1,42
PCBUS $ 0,80
8MB de flashUS $ 0,17
Todos os outros componentesUS $ 0,49
TotalUS $ 2,88


Naturalmente, ainda existem despesas difíceis de calcular, como entrega (uma vez que foi distribuída entre componentes destinados a vários projetos). No entanto, para uma placa com suporte ao Linux, isso é definitivamente muito barato. Além disso, esse detalhamento dá uma boa idéia de quanto custa as empresas fabricarem dispositivos com o segmento de preço mais baixo: você pode ter certeza de que custa às empresas ainda mais barato que eu!

As possibilidades


O que dizer? O mapa carrega o Linux muito pesado em 6 segundos. Devido ao fator de forma e custo, a placa não possui E / S, suporte de rede ou uma quantidade séria de armazenamento para iniciar programas pesados. No entanto, consegui colocar um monte de coisas interessantes na imagem do firmware.

USB


Com o USB, você poderia criar muitas coisas interessantes, mas eu escolhi a opção mais simples, para que, com uma alta probabilidade, as pessoas funcionassem se decidissem experimentar o meu cartão de visita. O Linux permite que o cartão se comporte como um "dispositivo" com suporte para o Gadget Framework . Peguei alguns drivers de projetos anteriores que incluíam esse processador, para ter acesso a todas as funcionalidades da estrutura do dispositivo USB. Decidi emular uma unidade flash pré-gerada e dar acesso ao shell por uma porta serial virtual.

Shell


Após o login como root, você pode executar os seguintes programas no console serial:
  • desonestos: um clássico jogo de aventura de masmorra Unix;
  • 2048: jogo simples em 2048 no modo console;
  • fortuna: a conclusão de vários ditos pathos. Decidi não incluir aqui toda a base de cotações para deixar espaço para outras funções;
  • micropython : um intérprete Python muito pequeno.


Emulação do Flash Drive


No momento da compilação, as ferramentas de construção geram uma pequena imagem FAT32 e a adicionam como uma das partições UBI. O subsistema de gadgets do Linux apresenta seu PC como um dispositivo de armazenamento.

Se você estiver interessado em ver o que aparece na unidade flash, a maneira mais fácil de fazer isso é se familiarizar com a fonte . Há também algumas fotos e meu currículo.

Recursos


Código fonte


Minha árvore do Buildroot é carregada no GitHub - trinta e três / businesscard-linux . Há um código para gerar uma imagem flash NOR, que é definida usando o modo de download USB do processador. Ele também possui todas as definições de pacote para jogos e outros programas que inseri no Buildroot depois que funcionou. Se você quiser usar os F1C100s em seu projeto, este será um excelente ponto de partida (fique à vontade para me fazer perguntas ).
Usei o lindamente executado projeto Linux v4.9 para F1C100s da Icenowy, refazendo-o um pouco. Quase o padrão v5.2 funciona no meu cartão. Ela está no GitHub - trinta e três anos / linux .
Hoje, acho que tenho a melhor porta U-Boot para F1C100s do mundo, e é parcialmente baseada no trabalho de Icenowy (inesperadamente, fazer o U-Boot funcionar como deveria ser uma tarefa muito desagradável). Você também pode usar o GitHub - trigésimo terceiro / u-boot .

Documentação para F1C100s


Encontrei a documentação bastante escassa dos F1C100s e a publico aqui:


Para os curiosos, carrego o esboço do meu projeto .



Conclusão


Aprendi muitas coisas durante o desenvolvimento deste projeto - este é o meu primeiro projeto, onde usei um forno de solda por refluxo. Também aprendi como encontrar recursos para componentes com documentação insuficiente.

Usei minha experiência com Linux embarcado e a experiência no desenvolvimento de placas. O projeto não tem falhas, mas mostra todas as minhas habilidades.

Para aqueles interessados ​​nos detalhes de trabalhar com o Linux incorporado, sugiro ler minha série de artigos sobre isso: Dominar o Linux Incorporado . Aqui falo detalhadamente sobre como criar software e hardware do zero para sistemas Linux pequenos e baratos, semelhantes a este meu cartão de visita.

Source: https://habr.com/ru/post/pt482110/


All Articles