Mi tarjeta de presentación ejecuta Linux

Traducción de un artículo de Blog ingeniero george hilliard

Mi tarjeta de presentación ejecuta Linux
Pulsable

Soy ingeniero de sistemas integrados. En mi tiempo libre, a menudo busco algo que pueda usarse en el diseño de futuros sistemas o algo que me interese.

Una de esas áreas son las computadoras baratas que pueden ejecutar Linux, y cuanto más baratas, mejor. Así que cavé en una profunda madriguera de procesadores oscuros.

Pensé: "Estos procesadores son tan baratos que prácticamente se pueden regalar". Y después de un tiempo, se me ocurrió la idea de hacer una tarjeta básica para Linux con la forma de una tarjeta de presentación.

Una vez que lo pensé, decidí que sería algo realmente genial de hacer. Ya tengo vio electrónico Cartas de negocios a lo, y tenían varias capacidades interesantes, como emular tarjetas flash, bombillas parpadeantes o incluso transmisión inalámbrica de datos. Sin embargo, no he visto tarjetas de presentación compatibles con Linux.

Entonces me hice uno.

Esta es la versión terminada del producto. Una computadora ARM mínima y completa que ejecuta mi versión personalizada de Linux construida con Buildroot.

Mi tarjeta de presentación ejecuta Linux

Tiene un puerto USB en la esquina. Si lo conecta a una computadora, se inicia en aproximadamente 6 segundos y es visible como una tarjeta flash y un puerto serie virtual a través del cual puede iniciar sesión en la carcasa de la tarjeta. En la unidad flash hay un archivo README, una copia de mi currículum y varias fotografías mías. El shell tiene varios juegos, clásicos de Unix como Fortune y Rogue, una versión pequeña del juego 2048 y un intérprete de MicroPython.

Todo esto se hace utilizando un chip flash muy pequeño de 8 MB. El gestor de arranque cabe en 256 KB, el kernel ocupa 1,6 MB y todo el sistema de archivos raíz ocupa 2,4 MB. Por lo tanto, queda mucho espacio para la unidad flash virtual. También hay un directorio de inicio en el que se puede escribir en caso de que alguien haga algo que quiera guardar. Todo esto también se guarda en un chip flash.

El dispositivo completo cuesta menos de 3 dólares. Es lo suficientemente barato como para regalarlo. Si recibió un dispositivo de este tipo de mi parte, significa que lo más probable es que esté tratando de impresionarlo.

Diseñar y construir

Diseñé y monté todo yo mismo. Es mi trabajo y me encanta, y gran parte del desafío ha sido encontrar piezas lo suficientemente baratas para este hobby.

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 extensa investigación, elegí el F1C100s, un procesador relativamente poco conocido de Allwinner que tiene un costo optimizado (es decir, muy barato). Tanto la RAM como la CPU se encuentran en el mismo paquete. Compré procesadores en Taobao. Todos los demás componentes se compraron en LCSC.

Pedí las tablas a JLC. Me hicieron 8 copias por 10 dólares. Su calidad es impresionante, especialmente por el precio; No es tan elegante como el de OSHPark, pero aun así se ve bien.

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

Mi tarjeta de presentación ejecuta Linux

Hubo un par de problemas con el primer lote. Primero, el conector USB no era lo suficientemente largo para encajar de forma segura en ningún puerto USB. En segundo lugar, las pistas del flash se hicieron incorrectamente, pero lo solucioné doblando los contactos.

Mi tarjeta de presentación ejecuta Linux

Después de comprobar que todo funcionaba, pedí un nuevo lote de placas; Podéis ver una foto de uno de ellos al principio del artículo.

Debido al pequeño tamaño de todos estos pequeños componentes, decidí recurrir a la soldadura por reflujo usando estufa barata. Tengo acceso a un cortador láser, así que lo usé para cortar una plantilla de soldadura de la película laminadora. La plantilla quedó bastante bien. Los orificios de 0,2 mm de diámetro para los contactos del procesador requerían un cuidado especial para garantizar una fabricación de alta calidad: era fundamental enfocar correctamente el láser y seleccionar su potencia.

Mi tarjeta de presentación ejecuta Linux
Otras tablas funcionan bien para sujetar la tabla mientras se aplica la pasta.

Apliqué soldadura en pasta y coloqué los componentes a mano. Me aseguré de que no se utilizara plomo en ninguna parte del proceso: todas las placas, componentes y pasta cumplen con el estándar. RoHS - para que mi conciencia no me atormente cuando los distribuya a la gente.

Mi tarjeta de presentación ejecuta Linux
Cometí un pequeño error con este lote, pero la soldadura en pasta perdona los errores y todo salió bien.

Cada componente tardó unos 10 segundos en posicionarse, así que intenté mantener el número de componentes al mínimo. Se pueden leer más detalles sobre el diseño de mapas en otro mi artículo detallado.

Lista de materiales y costo.

Me apegué a un presupuesto estricto. Y la tarjeta de presentación resultó según lo previsto: ¡no me importa regalarla! Por supuesto, no se la daré a todo el mundo, ya que lleva tiempo hacer cada copia y mi tiempo no se tiene en cuenta en el coste de la tarjeta de presentación (es algo gratis).

componente
Precio

F1C100
$1.42

PCB
$0.80

Flash de 8 MB
$0.17

Todos los demás componentes
$0.49

En total
$2.88

Naturalmente, también hay costes difíciles de calcular, como el envío (ya que se distribuye entre componentes destinados a varios proyectos). Sin embargo, para una placa compatible con Linux, definitivamente es bastante barata. Este desglose también da una buena idea de cuánto les cuesta a las empresas fabricar dispositivos en el segmento de precio más bajo: ¡puedes estar seguro de que a las empresas les cuesta incluso menos de lo que me cuesta a mí!

oportunidades

¿Qué decir? La tarjeta arranca un Linux muy despojado en 6 segundos. Debido al factor de forma y al costo, la tarjeta no tiene E/S, soporte de red ni una cantidad significativa de almacenamiento para ejecutar programas pesados. Sin embargo, logré incluir un montón de cosas interesantes en la imagen del firmware.

USB

Había muchas cosas interesantes que se podían hacer con USB, pero elegí la opción más simple para que las personas tuvieran más probabilidades de hacerlo funcionar si decidían probar mi tarjeta de presentación. Linux permite que la tarjeta se comporte como un "dispositivo" con soporte Marco de gadgets. Tomé algunos de los controladores de proyectos anteriores que incluían este procesador, por lo que tengo acceso a todas las funciones del marco del dispositivo USB. Decidí emular una unidad flash pregenerada y darle 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 exploración de mazmorras de Unix;
  • 2048: un juego sencillo de 2048 en modo consola;
  • fortuna: salida de diversos dichos pretenciosos. Decidí no incluir aquí toda la base de datos de citas para dejar espacio para otras funciones;
  • micropitón: Un intérprete de Python muy pequeño.

Emulación de unidad flash

Durante 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, la forma más sencilla de hacerlo es leyendo fuentes. También hay varias fotografías y mi currículum.

Recursos

Fuentes

Mi árbol Buildroot está publicado en GitHub - treinta y tres cuarenta/businesscard-linux. Existe un código para generar una imagen flash NOR, que se instala mediante 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 todo funcionara. Si está interesado en utilizar los F1C100 en su proyecto, este sería un excelente punto de partida (no dude en Hazme preguntas).
solía proyecto bellamente ejecutado Linux v4.9 para F1C100s de Icenowy, ligeramente rediseñado. Mi tarjeta ejecuta casi el estándar v5.2. Está en GitHub. treinta y tres cuarenta/linux.
Creo que tengo la mejor adaptación de U-Boot para F1C100 en el mundo hoy en día, y también se basa en parte en el trabajo de Icenowy (sorprendentemente, lograr que U-Boot funcionara correctamente fue una tarea bastante frustrante). También puedes conseguirlo en GitHub. treinta y tres cuarenta/u-boot.

Documentación para F1C100

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

Lo subo para los curiosos. diagrama de mi proyecto.

Mi tarjeta de presentación ejecuta Linux

Conclusión

Aprendí mucho durante el desarrollo de este proyecto: fue mi primer proyecto que utilizó un horno de soldadura por reflujo. También aprendí a encontrar recursos para componentes con documentación deficiente.

Utilicé mi experiencia existente con Linux integrado y experiencia en desarrollo de placas. El proyecto no está exento de defectos, pero muestra bien todas mis habilidades.

Para aquellos interesados ​​en los detalles de cómo trabajar con Linux integrado, les sugiero leer mi serie de artículos sobre esto: Dominar Linux integrado. Allí hablo en detalle sobre cómo crear software y hardware desde cero para sistemas Linux pequeños y económicos, similar a mi tarjeta de visita.

Fuente: habr.com

Añadir un comentario