Linux se ejecuta en mi tarjeta de visita

Traducción de un artículo del blog del ingeniero George Hilliard


Clickable

Soy un ingeniero de sistemas integrados. En mi tiempo libre, a menudo busco lo que se puede usar en el diseño de sistemas futuros, o algo de la categoría de mis intereses.

Una de esas áreas son las computadoras baratas que pueden soportar Linux, y cuanto más baratas, mejor. Por lo tanto, me enterré en una profunda madriguera de procesadores poco conocidos.

Pensé: "Estos procesadores son tan baratos que prácticamente se pueden entregar de forma gratuita". Y después de un tiempo, se me ocurrió la idea de hacer una tarjeta simple para Linux en un formato de tarjeta de visita.

Tan pronto como lo pensé, decidí que sería genial hacerlo. Ya he visto tarjetas de presentación electrónicas anteriormente, y tenían varias características interesantes, como emular tarjetas flash, luces parpadeantes o incluso transferencia inalámbrica de datos. Sin embargo, no he visto tarjetas de visita con soporte para Linux.

Entonces me hice uno.

Esta es una versión completa del producto. Una computadora mínima completa en ARM, que ejecuta mi versión especial de Linux, creada usando Buildroot.



En la esquina tiene un puerto USB. Si lo conecta a una computadora, se carga en aproximadamente 6 segundos y se puede ver como una tarjeta flash y un puerto serie virtual, a través del cual puede ingresar el caparazón de la tarjeta. En la unidad flash hay un archivo README, una copia de mi currículum y algunas de mis fotos. Hay varios juegos en el shell, clásicos de Unix como fortune y rogue, una versión pequeña del juego 2048 y el intérprete de MicroPython.

Todo esto se hace con un chip flash muy pequeño de 8 MB. El gestor de arranque se adapta a 256 KB, el núcleo ocupa 1,6 MB y todo el sistema de archivos raíz: 2,4 MB. Por lo tanto, queda mucho espacio para una unidad flash virtual. También tiene un directorio personal de escritura, si alguien hace algo que quiere guardar. Esto también se almacena en un chip flash.

Todo el dispositivo cuesta menos de $ 3. Es lo suficientemente barato como para ser distribuido. Si recibió un dispositivo de mi parte, significa que lo más probable es que esté tratando de impresionarlo.

Diseño y montaje


Diseñé y ensamblé todo yo mismo. Este es mi trabajo, y me gusta, y la mayoría de las dificultades consistieron en encontrar suficientes piezas baratas para tal pasatiempo.

La elección de un procesador fue la decisión más importante que afectó el costo y la viabilidad del proyecto. Después de una investigación activa, elegí los F1C100, un procesador Allwinner relativamente poco conocido, con un costo optimizado (es decir, muy barato). En un caso son RAM y CPU. Compré procesadores en Taobao. Todos los demás componentes comprados en LCSC.

Pedí tableros de JLC. Por $ 8 hice 10 copias. Su calidad es impresionante, especialmente por el precio; No es tan ordenado como OSHPark, pero aún se ve bien.

Hice el primer lote negro mate. Se veían hermosos, pero se ensuciaban muy fácilmente.



Hubo un par de problemas con el primer lote. En primer lugar, el conector USB no era lo suficientemente largo como para caber de forma segura en cualquier puerto USB. En segundo lugar, las pistas de flash no se hicieron correctamente, pero evité esto doblando los contactos.



Después de revisar todo en el trabajo, ordené un nuevo lote de tablas; Puedes ver una foto de uno de ellos al comienzo del artículo.

Debido al pequeño tamaño de todos estos componentes pequeños, decidí recurrir a la soldadura por reflujo usando una estufa barata . Tengo acceso a un cortador láser, así que corté una plantilla de soldadura de una película para un laminador en ella. La plantilla resultó bastante bien. Los orificios para los contactos del procesador con un diámetro de 0.2 mm requirieron un cuidado especial para la fabricación de alta calidad: era de vital importancia enfocar correctamente el láser y seleccionar su potencia.


Otros tableros son buenos para sostener el tablero cuando se aplica pasta.

Apliqué pasta de soldadura y arreglé los componentes manualmente. Me aseguré de que el plomo no se usara en ninguna parte del proceso: todas las placas, componentes y pastas cumplen con RoHS , para que la conciencia no me atormentara cuando los distribuya a las personas.


Me perdí un poco con este lote, pero la pasta de soldadura perdona los errores, y todo salió bien

Cada componente tardó unos 10 segundos en posicionarse, así que intenté hacer que su número fuera mínimo. Puede encontrar más detalles sobre el diseño de un mapa en mi otro artículo detallado .

Lista de materiales y costos.


Mantuve un presupuesto estricto. Y la tarjeta de presentación resultó como estaba prevista: ¡no me importa regalarla! Por supuesto, no se lo daré a nadie ni a todos, porque se dedica tiempo a la producción de cada copia, y mi tiempo no se tiene en cuenta en el costo de una tarjeta de presentación (es gratis).

ComponentePrecio
F1C100s$ 1,42
PCB$ 0.80
8 MB de flash$ 0.17
Todos los demás componentes$ 0,49
Total$ 2.88


Naturalmente, todavía hay gastos que son difíciles de calcular, como la entrega (ya que se distribuyó entre los componentes destinados a varios proyectos). Sin embargo, para una placa con soporte de Linux, esto es definitivamente bastante barato. Además, este desglose da una buena idea de cuánto le cuesta a las empresas fabricar dispositivos del segmento de precio más bajo: ¡puede estar seguro de que le cuesta a las empresas incluso más barato que yo!

Las posibilidades


Que decir El mapa carga Linux muy recortado en 6 segundos. Debido al factor de forma y al costo, la tarjeta no tiene E / S, soporte de red o alguna cantidad importante de almacenamiento para iniciar programas pesados. Sin embargo, logré meter un montón de cosas interesantes en la imagen del firmware.

USB


Con USB, se te ocurren muchas cosas interesantes, pero elegí la opción más simple, de modo que las personas probablemente habrían trabajado si hubieran decidido probar mi tarjeta de presentación. Linux permite que la tarjeta se comporte como un "dispositivo" con soporte para Gadget Framework . Tomé algunos controladores de proyectos anteriores que incluían este procesador, por lo que tengo acceso a toda la funcionalidad del marco de dispositivos USB. Decidí emular una unidad flash pregenerada y dar acceso al shell a través de un puerto serie virtual.

Concha


Después de iniciar sesión como root, puede ejecutar los siguientes programas en la consola serie:
  • pícaro: un clásico juego de aventuras de mazmorras de Unix;
  • 2048: juego simple en 2048 en modo consola;
  • fortuna: la conclusión de varios dichos pathos. Decidí no incluir toda la base de cotizaciones aquí para dejar espacio para otras funciones;
  • micropython : un intérprete muy pequeño de Python.


Emulación de unidad flash


En el momento de la compilación, las herramientas de compilación generan una pequeña imagen FAT32 y la agregan como una de las particiones UBI. El subsistema de gadgets de Linux presenta su PC como un dispositivo de almacenamiento.

Si está interesado en ver lo que aparece en la unidad flash, entonces la forma más fácil de hacerlo es familiarizarse con la fuente . También hay algunas fotos y mi currículum.

Recursos


Código fuente


Mi árbol Buildroot está cargado en GitHub: treinta y tres / businesscard-linux . Existe un código para generar una imagen flash NOR, que se configura utilizando el modo de descarga USB del procesador. También tiene todas las definiciones de paquetes para juegos y otros programas que introduje en Buildroot después de que funcionó. Si desea utilizar los F1C100 en su proyecto, este será un excelente punto de partida (no dude en hacerme preguntas ).
Usé el proyecto Linux v4.9 bellamente ejecutado para F1C100s por Icenowy, rehaciéndolo un poco. Casi estándar v5.2 funciona en mi tarjeta. Ella miente en GitHub - treinta y tres / linux .
Creo que hoy tengo el mejor puerto U-Boot para F1C100 en el mundo, y está parcialmente basado en el trabajo de Icenowy (inesperadamente, hacer que U-Boot funcione como debería ser una tarea muy desagradable). También puedes usar GitHub: treinta y tres / u-boot .

Documentación para F1C100


Encontré la documentación bastante escasa de los F1C100 y la publico aquí:


Para los curiosos, subo el bosquejo de mi proyecto .



Conclusión


Aprendí muchas cosas durante el desarrollo de este proyecto: este es mi primer proyecto, donde utilicé un horno de soldadura por reflujo. También aprendí a encontrar recursos para componentes con poca documentación.

Usé mi experiencia con Linux embebido y la experiencia en el desarrollo de placas. El proyecto no está exento de defectos, pero muestra bien todas mis habilidades.

Para aquellos interesados ​​en los detalles de trabajar con Linux embebido, les sugiero leer mi serie de artículos sobre esto: Mastering Embedded Linux . Allí hablo en detalle sobre cómo crear software y hardware desde cero para sistemas Linux pequeños y baratos, similares a esta tarjeta de presentación mía.

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


All Articles