Oversættelse af en artikel fra ingeniør George Hilliard
Klikbar
Jeg er indlejret systemingeniør. I min fritid leder jeg ofte efter noget, der kan bruges i design af fremtidige systemer, eller noget ud fra mine interesser.
Одна из таких областей – дешёвые компьютеры, способные поддерживать Linux, и чем дешевле, тем лучше. Поэтому я зарылся в глубокую кроличью нору малоизвестных процессоров.
Я подумал: «Эти процессоры настолько дешёвые, что их практически можно раздавать даром». И через некоторое время ко мне пришла идея сделать голую карточку для Linux в форм-факторе визитной карточки.
Da jeg tænkte over det, besluttede jeg, at det ville være en rigtig fed ting at lave. Jeg har allerede til , и у них были различные интересные возможности, типа эмулирования флэш-карт, мигания лампочек или даже беспроводной передачи данных. Однако визитки с поддержкой Linux я не встречал.
Så jeg lavede mig en.
Это законченная версия продукта. Полноценный минимальный компьютер на ARM, на котором работает моя особая версия Linux, созданная при помощи Buildroot.

Den har en USB-port i hjørnet. Hvis du slutter den til en computer, starter den op på cirka 6 sekunder og er synlig som et flash-kort og en virtuel seriel port, hvorigennem du kan logge ind på kortskallen. På flashdrevet er en README-fil, en kopi af mit CV og flere billeder af mig. Skallen har flere spil, Unix-klassikere som fortune og rogue, en lille version af spillet 2048 og en MicroPython-fortolker.
Alt dette gøres ved hjælp af en meget lille 8 MB flash-chip. Bootloaderen har plads til 256 KB, kernen fylder 1,6 MB, og hele rodfilsystemet fylder 2,4 MB. Derfor er der meget plads tilbage til det virtuelle flashdrev. Der er også en hjemmemappe, der kan skrives, hvis nogen gør noget, de vil gemme. Alt dette er også gemt på en flash-chip.
Hele enheden koster mindre end $3. Det er billigt nok at give væk. Hvis du har modtaget sådan en enhed fra mig, betyder det, at jeg højst sandsynligt prøver at imponere dig.
Design og byg
Jeg har selv designet og monteret alt. Det er mit job, og jeg elsker det, og meget af udfordringen har været at finde billige nok dele til hobbyen.
Valget af processor var den vigtigste beslutning, der påvirkede projektets omkostninger og gennemførlighed. Efter omfattende research valgte jeg F1C100s, en relativt lidt kendt processor fra Allwinner, der er omkostningsoptimeret (dvs. forbandet billig). Både RAM og CPU er placeret i samme pakke. Jeg købte processorer på Taobao. Alle andre komponenter blev købt hos LCSC.
Jeg bestilte pladerne fra JLC. De lavede 8 kopier til mig for $10. Deres kvalitet er imponerende, især til prisen; ikke så pæn som OSHParks, men ser stadig godt ud.
Jeg lavede den første batch mat sort. De så smukke ud, men blev meget let snavsede.

Der var et par problemer med den første batch. For det første var USB-stikket ikke langt nok til at passe sikkert ind i nogen USB-porte. For det andet var flashsporene lavet forkert, men jeg kom uden om dette ved at bøje kontakterne.

Efter at have kontrolleret, at alt virkede, bestilte jeg et nyt parti brædder; Du kan se et billede af en af dem i begyndelsen af artiklen.
På grund af den lille størrelse af alle disse små komponenter, besluttede jeg at ty til reflow lodning ved hjælp af . Jeg har adgang til en laserskærer, så den brugte jeg til at skære en loddestencil ud af lamineringsfilmen. Stencilen blev ret godt. Hullerne med en diameter på 0,2 mm til processorkontakterne krævede særlig omhu for at sikre højkvalitetsproduktion - det var afgørende at fokusere laseren korrekt og vælge dens effekt.

Andre brædder fungerer godt til at holde brættet, mens du påfører pasta.
Jeg påførte loddepasta og placerede komponenterne i hånden. Jeg sørgede for, at der ikke blev brugt bly nogen steder i processen – alle plader, komponenter og pasta opfylder standarden - for at min samvittighed ikke skal plage mig, når jeg deler dem ud til folk.

Jeg lavede en lille fejl med denne batch, men loddepastaen tilgiver fejl, og alt gik fint sammen
Hver komponent tog omkring 10 sekunder at placere, så jeg forsøgte at holde antallet af komponenter på et minimum. Flere detaljer om kortdesign kan læses i en anden .
Liste over materialer og omkostninger
Jeg holdt mig til et stramt budget. Og visitkortet blev efter hensigten - jeg gider ikke give det væk! Jeg vil selvfølgelig ikke give det ud til alle, da det tager tid at lave hver kopi, og min tid er ikke taget i betragtning i prisen på visitkortet (det er lidt gratis).
komponent
Pris
F1C100s
$1.42
PCB
$0.80
8 MB flash
$0.17
Alle andre komponenter
$0.49
I alt
$2.88
Естественно, есть ещё расходы, которые сложно рассчитать, типа доставки (поскольку она распределилась между компонентами, предназначенными для нескольких проектов). Однако для платы с поддержкой Linux это определённо весьма дёшево. Также эта разбивка даёт неплохое представление о том, почём обходится компаниям изготовление устройств самого нижнего ценового сегмента: можете быть уверены в том, что компаниям это обходится ещё дешевле, чем мне!
Capabilities
Что сказать? Карта загружает очень сильно обрезанный Linux за 6 секунд. Из-за форм-фактора и стоимости у карты нет I/O, сетевой поддержки, какого-то серьёзного объёма хранилища для запуска тяжёлых программ. Тем не менее, я сумел впихнуть в образ прошивки кучу всего интересного.
USB
С USB можно было придумать много чего интересного, но я выбрал самый простой вариант, чтобы у людей с большой вероятностью всё заработало, если они решат попробовать мою визитку. Linux позволяет карте вести себя как «устройство» с поддержкой . Jeg tog nogle af driverne fra tidligere projekter, der inkluderede denne processor, så jeg har adgang til al funktionaliteten i USB-gadget-rammerne. Jeg besluttede at efterligne et præ-genereret flashdrev og give shell-adgang via en virtuel seriel port.
shell
Efter at have logget ind som root, kan du køre følgende programmer på den serielle konsol:
- rogue: et klassisk Unix-dungeon-crawling-eventyrspil;
- 2048: et simpelt spil af 2048 i konsoltilstand;
- formue: output af forskellige prætentiøse ordsprog. Jeg besluttede ikke at inkludere hele citatdatabasen her for at give plads til andre funktioner;
- : En meget lille Python-fortolker.
Flash Drive emulering
Во время компиляции инструменты сборки генерируют небольшой образ FAT32 и добавляют его в качестве одного из разделов UBI. Подсистема гаджетов Linux представляет его ПК как устройство-накопитель.
Hvis du er interesseret i at se, hvad der vises på flashdrevet, er den nemmeste måde at gøre dette på ved at læse . Der er også flere fotografier og mit CV.
ressourcer
Kilder
Mit byggerodstræ er udgivet på GitHub - . Der er kode til at generere et NOR flash-billede, som installeres ved hjælp af processorens USB-downloadtilstand. Det har også alle pakkedefinitionerne for spil og andre programmer, som jeg skubbede ind i Buildroot, efter at jeg fik alt til at fungere. Hvis du er interesseret i at bruge F1C100'erne i dit projekt, ville dette være et godt udgangspunkt (du er velkommen ).
jeg brugte Linux v4.9 для F1C100s за авторством Icenowy, немного его переделав. На моей карточке работает почти стандартная v5.2. Она лежит на GitHub — .
Jeg tror, jeg har den bedste port af U-Boot til F1C100s i verden i dag, og den er også delvist baseret på Icenowy's arbejde (overraskende nok var det en ret frustrerende opgave at få U-Boot til at fungere korrekt). Du kan også få det på GitHub - .
Dokumentation til F1C100s
Jeg fandt temmelig sparsom dokumentation for F1C100s, og jeg poster den her:
- – generel information og pinout.
- – определения регистров для F1C600, который на самом деле является тем же F1C100s, но переименованным с заявленной поддержкой Linux (ха!).
- Jeg har aktivt lånt information fra diagrammet fra – udviklingskortet, som jeg brugte til at konfigurere softwaren.
Jeg uploader det for de nysgerrige. .

Konklusion
Jeg lærte meget under udviklingen af dette projekt - det var mit første projekt med en reflow-loddeovn. Jeg lærte også at finde ressourcer til komponenter med dårlig dokumentation.
Я пользовался имевшимся у меня опытом работы со встроенным Linux и опытом разработки плат. Проект не без изъянов, однако неплохо показывает все мои умения.
Интересующимся подробностями работы со встроенным Linux предлагаю прочесть мою серию статей об этом: . Там я подробно рассказываю о том, как создавать ПО и железо с нуля для крохотных и дешёвых Linux-систем, похожих на эту мою визитную карточку.
Kilde: www.habr.com
