A miña tarxeta de visita está executando Linux

Tradución dun artigo de publicación do blogue o enxeñeiro George Hilliard

A miña tarxeta de visita está executando Linux
Clicable

Son enxeñeiro de sistemas embebidos. No meu tempo libre, moitas veces busco algo que poida ser usado no deseño de futuros sistemas, ou algo dos meus intereses.

Unha destas áreas son os ordenadores baratos que poden executar Linux, e canto máis baratos, mellor. Entón cavei un profundo coello de procesadores escuros.

Pensei: "Estes procesadores son tan baratos que practicamente se poden regalar gratuitamente". E despois dun tempo, xurdínme a idea de facer unha tarxeta simple para Linux no formato dunha tarxeta de visita.

Unha vez que pensei niso, decidín que sería moi interesante facer. Xa o teño teño visto electrónico tarxetas de visita para el, e tiñan varias capacidades interesantes, como emular tarxetas flash, bombillas intermitentes ou incluso transmisión de datos sen fíos. Non obstante, non vin tarxetas de visita con soporte para Linux.

Así que me fixen un.

Esta é a versión acabada do produto. Unha computadora ARM mínima completa que executa a miña versión personalizada de Linux construída con Buildroot.

A miña tarxeta de visita está executando Linux

Ten un porto USB na esquina. Se o conectas a un ordenador, arrancará nuns 6 segundos e é visible como unha tarxeta flash e un porto serie virtual a través do cal podes iniciar sesión no shell da tarxeta. Na unidade flash hai un ficheiro README, unha copia do meu currículo e varias fotos miñas. O shell ten varios xogos, clásicos de Unix como Fortune e Rogue, unha versión pequena do xogo 2048 e un intérprete MicroPython.

Todo isto faise usando un chip flash moi pequeno de 8 MB. O cargador de arranque encaixa en 256 KB, o núcleo ocupa 1,6 MB e todo o sistema de ficheiros raíz ocupa 2,4 MB. Polo tanto, queda moito espazo para a unidade flash virtual. Tamén hai un directorio de inicio que se pode escribir por se alguén fai algo que queira gardar. Todo isto tamén se garda nun chip flash.

Todo o dispositivo custa menos de $3. É o suficientemente barato como para regalar. Se recibiches tal dispositivo de min, significa que probablemente estea tentando impresionarte.

Deseñar e construír

Deseñeino e montei todo eu. É o meu traballo e encántame, e gran parte do reto foi atopar pezas o suficientemente baratas para a afección.

A elección do procesador foi a decisión máis importante que afectou ao custo e á viabilidade do proxecto. Despois dunha ampla investigación, escollín o F1C100s, un procesador relativamente pouco coñecido de Allwinner que está optimizado en custos (é dicir, moi barato). Tanto a RAM como a CPU están situadas no mesmo paquete. Comprei procesadores en Taobao. Todos os demais compoñentes foron adquiridos de LCSC.

Pedín as placas a JLC. Fixéronme 8 copias por 10 dólares. A súa calidade é impresionante, especialmente polo prezo; non tan limpo como o de OSHPark, pero aínda así ten bo aspecto.

Fixen o primeiro lote en negro mate. Parecían fermosos, pero ensuciaban moi facilmente.

A miña tarxeta de visita está executando Linux

Houbo un par de problemas co primeiro lote. En primeiro lugar, o conector USB non era o suficientemente longo para encaixar de forma segura en ningún porto USB. En segundo lugar, as pistas de flash fixéronse incorrectamente, pero conseguín dobrando os contactos.

A miña tarxeta de visita está executando Linux

Despois de comprobar que todo funcionaba, pedín un novo lote de taboleiros; Podes ver unha foto dun deles ao comezo do artigo.

Debido ao pequeno tamaño de todos estes pequenos compoñentes, decidín recorrer á soldadura por refluxo estufa barata. Teño acceso a un cortador láser, polo que o usei para cortar unha plantilla de soldadura da película laminadora. O stencil quedou bastante ben. Os orificios de 0,2 mm de diámetro para os contactos do procesador requirían un coidado especial para garantir unha fabricación de alta calidade; era fundamental enfocar correctamente o láser e seleccionar a súa potencia.

A miña tarxeta de visita está executando Linux
Outros taboleiros funcionan ben para suxeitar o taboleiro mentres se aplica a pasta.

Apliquei pasta de soldadura e coloquei os compoñentes a man. Asegureime de que o chumbo non se usase en ningún lugar do proceso: todas as placas, compoñentes e pasta cumpren o estándar RoHS - para que a miña conciencia non me atormente cando as reparta á xente.

A miña tarxeta de visita está executando Linux
Cometín un pequeno erro con este lote, pero a pasta de soldadura perdoa os erros e todo saíu ben

Cada compoñente tardou uns 10 segundos en posicionarse, polo que tentei manter o número de compoñentes ao mínimo. Podes ler máis detalles sobre o deseño do mapa noutro meu artigo detallado.

Lista de materiais e custo

Eu atendín a un orzamento estrito. E a tarxeta de visita resultou como estaba previsto: non me importa regalala! Por suposto, non llo regalarei a todos, xa que leva tempo facer cada copia e o meu tempo non se ten en conta no custo da tarxeta de visita (é algo gratuíto).

Compoñente
Prezo

F1C100s
$1.42

PCB
$0.80

Flash de 8 MB
$0.17

Todos os demais compoñentes
$0.49

En total
$2.88

Naturalmente, tamén hai custos difíciles de calcular, como a entrega (xa que se distribúe entre compoñentes destinados a varios proxectos). Non obstante, para unha placa que admite Linux, definitivamente é bastante barata. Este desglose tamén dá unha boa idea de canto custa ás empresas fabricar dispositivos no segmento de prezos máis baixos: podes estar seguro de que ás empresas lles custa aínda menos do que me custa a min!

Capacidades

Que dicir? A tarxeta inicia un Linux moi depurado en 6 segundos. Debido ao factor de forma e ao custo, a tarxeta non ten E/S, soporte de rede nin ningunha cantidade significativa de almacenamento para executar programas pesados. Non obstante, conseguín incorporar unha morea de cousas interesantes na imaxe do firmware.

USB

Había moitas cousas interesantes que se podían facer con USB, pero escollín a opción máis sinxela para que a xente fose máis propensa a facelo funcionar se decidían probar a miña tarxeta de visita. Linux permite que a tarxeta se comporte como un "dispositivo" con soporte Gadget Framework. Tomei algúns dos controladores de proxectos anteriores que incluían este procesador, polo que teño acceso a todas as funcionalidades do framework de gadgets USB. Decidín emular unha unidade flash xerada previamente e dar acceso ao shell a través dun porto serie virtual.

Concha

Despois de iniciar sesión como root, pode executar os seguintes programas na consola serie:

  • rogue: un clásico xogo de aventuras de rastrexo de mazmorras de Unix;
  • 2048: un xogo sinxelo de 2048 en modo consola;
  • fortuna: saída de varios refráns pretenciosos. Decidín non incluír aquí toda a base de datos de citas para deixar espazo para outras funcións;
  • micropitón: Un intérprete de Python moi pequeno.

Emulación de unidades flash

Durante a compilación, as ferramentas de compilación xeran unha pequena imaxe FAT32 e engádena como unha das particións UBI. O Linux Gadget Subsystem presenta o seu PC como un dispositivo de almacenamento.

Se estás interesado en ver o que aparece na unidade flash, o xeito máis sinxelo de facelo é lendo fontes. Tamén hai varias fotografías e o meu currículo.

Recursos

Fontes

A miña árbore Buildroot está publicada en GitHub - trinta e tres corenta/tarxeta de visita-linux. Hai código para xerar unha imaxe flash NOR, que se instala mediante o modo de descarga USB do procesador. Tamén ten todas as definicións de paquetes para xogos e outros programas que puxen a Buildroot despois de que todo funcione. Se estás interesado en usar os F1C100 no teu proxecto, este sería un excelente punto de partida (non dubides en faime preguntas).
usei proxecto ben executado Linux v4.9 para F1C100s de Icenowy, lixeiramente redeseñado. A miña tarxeta funciona case a versión estándar 5.2. Está en GitHub - trinta e tres corenta/linux.
Creo que hoxe teño o mellor porto de U-Boot para F1C100 do mundo, e tamén está baseado en parte no traballo de Icenowy (sorprendentemente, conseguir que U-Boot funcionara correctamente foi unha tarefa bastante frustrante). Tamén podes obtelo en GitHub - trinta e tres corenta/u-boot.

Documentación para os F1C100

Atopei unha documentación bastante escasa para os F1C100, e estou publicando aquí:

Subo para os curiosos. diagrama do meu proxecto.

A miña tarxeta de visita está executando Linux

Conclusión

Aprendín moito durante o desenvolvemento deste proxecto: foi o meu primeiro proxecto utilizando un forno de soldadura por refluxo. Tamén aprendín a buscar recursos para compoñentes con mala documentación.

Usei a miña experiencia existente con Linux incorporado e experiencia de desenvolvemento de placas. O proxecto non está exento de fallos, pero amosa ben todas as miñas habilidades.

Para aqueles interesados ​​nos detalles de traballar con Linux incorporado, suxiro ler a miña serie de artigos sobre isto: Dominar Linux embebido. Alí falo en detalle sobre como crear software e hardware dende cero para sistemas Linux diminutos e baratos, semellante á miña tarxeta de visita.

Fonte: www.habr.com

Engadir un comentario