Traducción del artículo de el ingeniero George Hilliard
Clickable
Soy ingeniero de sistemas embebidos. En mi tiempo libre, a menudo busco cosas que puedo utilizar en el diseño de futuros sistemas, o algo relacionado con mis intereses.
Una de estas áreas son las computadoras baratas capaces de soportar Linux, y cuanto más baratas, mejor. Así que me sumergí en una profunda madriguera de conejos de procesadores poco conocidos.
Pensé: 'Estos procesadores son tan baratos que prácticamente se pueden regalar'. Y después de un tiempo, tuve la idea de hacer una tarjeta desnuda para Linux en un factor de forma de tarjeta de visita.
Tan pronto como pensé en esto, decidí que sería realmente genial hacerlo. Yo ya hasta Así que hice una para mí.
Esta es la versión final del producto. Un minicomputador funcional con ARM, en el que corre mi versión personalizada de Linux, creada con Buildroot.
En una esquina tiene un puerto USB. Si se conecta a la computadora, arranca en aproximadamente 6 segundos y se ve como una tarjeta flash y un puerto serie virtual, donde se puede acceder al shell de la tarjeta. En la memoria flash hay un archivo README, una copia de mi currículum y algunas de mis fotos. En el shell hay varios juegos, clásicos de Unix como fortune y rogue, una pequeña versión del juego 2048 y un intérprete de MicroPython.

Todo esto está hecho con un chip flash muy pequeño de 8 Mb. El cargador ocupa 256 Kb, el núcleo 1.6 Mb, y todo el sistema de archivos raíz ocupa 2.4 Mb. Así que queda mucho espacio para el flash virtual. También hay un directorio home accesible para escritura, si alguien hace algo que quiera guardar. Todo esto también se guarda en el chip flash.
Todo el dispositivo cuesta menos de $3. Es lo suficientemente barato como para regalarlo. Si recibiste un dispositivo así de mi parte, significa que probablemente estoy tratando de impresionarte.
Diseño y ensamblaje
Diseñé y ensamblé todo yo mismo. Este es mi trabajo, me gusta, y gran parte de las dificultades consistió en encontrar piezas lo suficientemente baratas para este pasatiempo.
Diseñé y ensamblé todo yo mismo. Este es mi trabajo, y me gusta, y la mayor parte de las dificultades consistieron en encontrar piezas lo suficientemente baratas para este tipo de afición.
La elección del 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í el F1C100s, un procesador relativamente poco conocido de Allwinner, optimizado por su coste (es decir, muy barato). En una sola carcasa se encuentran tanto la RAM como la CPU. Compré los procesadores en Taobao. Todos los demás componentes se adquirieron en LCSC.
Pedí las placas a JLC. Por $8 me hicieron 10 copias. Su calidad es impresionante, especialmente por este precio; no son tan pulidas como las de OSHPark, pero aún así lucen bien.
La primera tanda la hice en negro mate. Lucían bien, pero eran muy propensas a mancharse.

Tuve un par de problemas con la primera tanda. Primero, el conector USB no era lo suficientemente largo como para encajar de manera segura en cualquier puerto USB. En segundo lugar, las pistas para la memoria flash estaban mal hechas, pero logré solucionarlo doblando los contactos.

Después de comprobar que todo funcionaba, pedí una nueva tanda de placas; pueden ver una foto de una de ellas al principio del artículo.
Debido al pequeño tamaño de todos estos componentes, decidí recurrir a la soldadura por reflujo usando . Tengo acceso a un cortador láser, así que corté una plantilla para la soldadura de una película para laminadora. La plantilla quedó bastante bien. Los agujeros para los contactos del procesador de 0,2 mm requerían un cuidado especial para una fabricación de calidad; era crítico enfocar correctamente el láser y ajustar su potencia.

Para mantener la placa en su lugar mientras aplico la pasta, es útil usar otras placas.
Apliqué la pasta de soldadura y coloqué los componentes a mano. Me aseguré de que en ningún momento se utilizara plomo; todas las placas, componentes y la pasta cumplen con el estándar – para que no me sienta culpable cuando se las entregue a las personas.

Con esta tanda cometí un pequeño error, sin embargo, la pasta de soldadura perdona los fallos y todo se ensambló correctamente.
Me tomó aproximadamente 10 segundos colocar cada componente, así que intenté minimizar su cantidad. Más detalles sobre el diseño de la placa se pueden leer en otro .
Lista de materiales y costos
He seguido un presupuesto estricto. Y la tarjeta de visita resultó tal como la había imaginado – ¡no me importa regalarla! Por supuesto, no se la voy a dar a todo el mundo, ya que la elaboración de cada ejemplar lleva tiempo, y mi tiempo no se considera en el costo de la tarjeta (es como si fuera gratuito).
Componente
Más abajo
F1C100s
$1.42
PCB
$0.80
8MB de flash
$0.17
Todos los demás componentes
$0.49
Total
$2.88
Por supuesto, hay otros gastos que son difíciles de calcular, como el envío (ya que se reparte entre los componentes destinados a varios proyectos). Sin embargo, para una placa compatible con Linux, esto es definitivamente muy barato. Además, este desglose ofrece una buena idea de cuánto le cuesta a las empresas fabricar dispositivos en el segmento de precios más bajo: ¡puedes estar seguro de que les cuesta aún menos que a mí!
Funcionalidades
¿Qué puedo decir? La tarjeta carga un Linux muy recortado en 6 segundos. Debido a su factor de forma y costo, la tarjeta no tiene entradas/salidas, soporte de red, ni un volumen de almacenamiento serio para ejecutar programas pesados. Sin embargo, logré incluir un montón de cosas interesantes en la imagen de firmware.
USB
Con USB se podrían haber creado muchas cosas interesantes, pero elegí la opción más simple, para que las personas, con alta probabilidad, todo funcionara si decidían probar mi tarjeta de visita. Linux permite que la tarjeta se comporte como un "dispositivo" compatible. . Algunos controladores los tomé de proyectos anteriores que incluían este procesador, así que tengo acceso a toda la funcionalidad de la plataforma del marco de gadgets USB. Decidí emular una unidad flash generada previamente y dar acceso a la shell a través de un puerto serial virtual.
Shell
Tras iniciar sesión como el usuario root en la consola serial, se pueden ejecutar los siguientes programas:
- rogue: un clásico juego de aventuras en mazmorras para Unix;
- 2048: un sencillo juego de 2048 en modo consola;
- fortune: genera varias frases grandilocuentes. Decidí no incluir aquí toda la base de citas, para dejar espacio para otras funciones;
- : un intérprete de Python muy pequeño.
Emulación de Flash Drive
Durante la compilación, las herramientas de construcción generan una pequeña imagen FAT32 y la añaden como una de las particiones de UBI. La subsistema de gadgets de Linux presenta su PC como un dispositivo de almacenamiento.
Si te interesa ver qué hay en el pen drive, la forma más fácil de hacerlo es consultando . También hay algunas fotos y mi currículum.
Recursos
Archivos fuente
Mi árbol Buildroot está disponible en GitHub — . Allí hay código para generar la imagen flash NOR, que se instala mediante el modo de descarga por USB del procesador. También hay todas las definiciones de paquetes para juegos y otros programas que incluí en Buildroot una vez que todo funcionó. Si deseas utilizar F1C100s en tu proyecto, esto será un excelente punto de partida (no dudes en ).
He utilizado Linux v4.9 para F1C100s, creado por Icenowy, ligeramente modificado. En mi tarjeta funciona casi una v5.2 estándar. Está en GitHub — .
Creo que hoy tengo el mejor puerto de U-Boot para F1C100s en el mundo, y también se basa parcialmente en el trabajo de Icenowy (inesperadamente, hacer que U-Boot funcione correctamente resultó ser una tarea bastante incómoda). También se puede encontrar en GitHub — .
Documentación sobre F1C100s
Encontré documentación bastante escasa sobre F1C100s, y la publico aquí:
- – información general y pinout.
- – definiciones de registros para F1C600, que en realidad es el mismo F1C100s, pero renombrado con la supuesta compatibilidad con Linux (¡ja!).
- He tomado información de manera activa del esquema de – la placa de desarrollo que usé para configurar el software.
Para los curiosos, estoy subiendo .

Conclusión
Aprendí mucho en el proceso de desarrollo de este proyecto; es mi primer proyecto en el que utilicé un horno para soldadura por reflujo. También aprendí a encontrar recursos para componentes con documentación deficiente.
Utilicé la experiencia que tenía en Linux embebido y en diseño de placas. El proyecto no está exento de defectos, pero muestra bien todas mis habilidades.
Para los interesados en detalles sobre el trabajo con Linux embebido, les sugiero leer mi serie de artículos sobre eso: . Allí detallo cómo crear software y hardware desde cero para sistemas Linux pequeños y baratos, similares a mi tarjeta de presentación.
Fuente: habr.com
