Překlad článku od inženýra George Hilliarda
Kliknutelně
Jsem inženýr vestavěných systémů. Ve svém volném čase často hledám, co bych mohl využít při návrhu budoucích systémů, nebo něco v oblasti mých zájmů.
Jednou z těchto oblastí jsou levné počítače, které dokážou podporovat Linux, a čím levnější, tím lepší. Proto jsem se ponořil do hluboké králičí nory málo známých procesorů.
Pomyslel jsem si: „Tyto procesory jsou tak levné, že se téměř dají rozdávat zadarmo.“ A po nějakém čase se mi dostala do hlavy myšlenka vyrobit holou kartu pro Linux ve formátu vizitní karty.
Jakmile mě napadla tato myšlenka, rozhodl jsem se, že by bylo opravdu skvělé to udělat. Už jsem do , a měly různé zajímavé funkce, jako například emulaci flash-karet, blikání světel nebo dokonce bezdrátový přenos dat. Nicméně vizitky s podporou Linuxu jsem nikdy neviděl.
Takže jsem si takovou vyrobil.
Tohle je hotová verze produktu. Plnohodnotný minimální počítač na ARM, na kterém běží moje speciální verze Linuxu vytvořená pomocí Buildroot.

V rohu má USB port. Když ji připojíte k počítači, nabootuje se asi za 6 sekund a je vidět jako flash-karta a virtuální sériový port, přes který se dá přihlásit do shellu karty. Na flashce je soubor README, kopie mého životopisu a několik mých fotografií. V shellu je několik her, klasiky z Unixu jako fortune a rogue, malá verze hry 2048 a interpret MicroPython.
Všechno to funguje díky velmi malému flash čipu o velikosti 8 MB. Bootloader se vejde do 256 KB, jádro zabírá 1,6 MB a celý root souborový systém má 2,4 MB. Proto na virtuální flashce zůstává spousta místa. Je tam také domovský adresář, který je možné zapisovat - pokud někdo udělá něco, co chce uložit. To všechno se také ukládá na flash chip.
Celé zařízení stojí méně než $3. Je dostatečně levné na to, aby se dalo rozdávat. Pokud jste ode mě takové zařízení dostali, znamená to, že se mě pravděpodobně snažím udělat dojem.
Návrh a sestavení
Všechno jsem navrhl a sestavil sám. To je moje práce, baví mě to a většina potíží spočívala v hledání dostatečně levných komponentů pro takové koníčky.
Výběr procesoru byl nejdůležitějším rozhodnutím, které ovlivnilo náklady a realizovatelnost projektu. Po důkladném prozkoumání jsem si vybral F1C100s, poměrně málo známý procesor od společnosti Allwinner, optimalizovaný z hlediska nákladů (tj. šíleně levný). V jednom pouzdře jsou RAM a CPU. Procesory jsem zakoupil na Taobao. Všechny ostatní součástky byly pořízeny na LCSC.
Desky jsem objednal u JLC. Za 8 dolarů mi udělali 10 kopií. Kvalita je impozantní, zejména za tuto cenu; nejsou tak precizní jako u OSHPark, ale vypadají stále dobře.
První várka byla matně černá. Vypadaly krásně, ale byly velmi snadno znečištitelné.

S první várkou jsem měl pár problémů. Za prvé, USB konektor nebyl dostatečně dlouhý, aby bezpečně zapadal do jakýchkoliv USB portů. Za druhé, cesty pro flash byly vyrobeny špatně, ale tento problém jsem vyřešil ohnutím kontaktů.

Po ověření všeho v provozu jsem objednal novou várku desek; fotografie jedné z nich můžete vidět na začátku článku.
Kvůli malým rozměrům všech těchto součástek jsem se rozhodl použít pájení tavením (reflow solder) s využitím . Mám přístup k laserovému řezači, takže jsem vytvořil šablonu pro pájení z fólie pro laminátor. Výsledná šablona je celkem dobrá. Otvory pro kontakty procesoru o průměru 0,2 mm vyžadovaly zvláštní pečlivost pro kvalitní výrobu – bylo kriticky důležité správně zaostřit laser a nastavit jeho výkon.

Pro udržení desky při nanášení pasty jsou vhodné jiné desky
Nanesení pájecí pasty a umístění komponentů jsem provedl ručně. Dbal jsem na to, aby nikde v procesu nebyl použit olovnatý materiál – všechny desky, součástky a pasta odpovídají standardu – abych se nemusel cítit provinile, když je budu rozdávat lidem.

S touto várkou jsem se trochu netrefil, nicméně pájecí pasta odpouští chyby a vše se daleko dobře zasunulo.
Na umístění každého komponentu jsem strávil přibližně 10 sekund, takže jsem se snažil udělat jejich počet co nejmenší. Více podrobností o návrhu desky si můžete přečíst v jiném .
Seznam materiálů a náklady
Držel jsem se přísného rozpočtu. A vizitka dopadla tak, jak jsem zamýšlel – nemám problém ji rozdávat! Samozřejmě ji nebudu rozdávat každému, protože výroba každého kusu si vyžaduje čas, a můj čas není v ceně vizitky zohledněn (jakoby byl zdarma).
Komponenta
Cena
F1C100s
$1.42
PCB
$0.80
8MB flash
$0.17
Všechny ostatní komponenty
$0.49
Celkem
$2.88
Samozřejmě, existují další náklady, které je obtížné odhadnout, například poštovné (protože se rozdělilo mezi komponenty určené pro několik projektů). Nicméně pro desku s podporou Linuxu je to určitě velmi levné. Tato rozdělení také poskytují dobrý přehled o tom, kolik zařízení v nejnižší cenové kategorii stojí: můžete si být jisti, že pro firmy to vychází ještě levněji než pro mě!
Funkce
Co říct? Deska načítá velmi ořezanou verzi Linuxu za 6 sekund. Kvůli faktoru formy a ceně nemá deska I/O, síťovou podporu ani nějaký vážný úložný prostor pro spuštění náročných programů. Nicméně jsem dokázal do obrazu firmwaru nacpat spoustu zajímavých věcí.
USB
S USB se dalo vymyslet mnoho zajímavého, ale zvolil jsem nejjednodušší variantu, aby u lidí s vysokou pravděpodobností všechno fungovalo, pokud se rozhodnou vyzkoušet mou vizitku. Linux umožňuje desce chovat se jako "zařízení" s podporou . Některé ovladače jsem čerpal z předchozích projektů, které obsahovaly tento procesor, takže mám přístup ke všem funkcím platformy USB gadget framework. Rozhodl jsem se emulovat předem vygenerovaný flash disk a poskytnout přístup k shellu prostřednictvím virtuálního sériového portu.
Shell
Po přihlášení jako uživatel root na sériovou konzoli můžete spouštět následující programy:
- rogue: klasická unixová dobrodružná hra o dungeonovém průzkumu;
- 2048: jednoduchá hra v 2048 v konzolovém režimu;
- fortune: výstup různých povznášejících citátů. Rozhodl jsem se sem nezahrnovat celou databázi citátů, abych ponechal místo pro další funkce;
- : velmi malý interpreter Pythonu.
Emulace Flash Drive
Během kompilace nástroje pro sestavení generují malý obraz FAT32 a přidávají jej jako jeden z oddílů UBI. Podsystem gadgetů Linuxu jej představuje jako zařízení pro ukládání dat.
Pokud vás zajímá, co se objevuje na flash disk, nejjednodušší je to zjistit prostudováním . Najdete tam také několik fotografií a moje životopis.
Zdroje
Zdrojové kódy
Můj Buildroot strom je zveřejněn na GitHubu — . Obsahuje kód pro generování flash obrazu NOR, který je nahrán pomocí režimu stahování přes USB u procesoru. Také zde najdete všechna definice balíčku pro hry a další programy, které jsem přidal do Buildrootu poté, co vše začalo fungovat. Pokud chcete použít F1C100s ve svém projektu, to bude skvělý výchozí bod (neváhejte ).
Použil jsem Linux v4.9 pro F1C100s od Icenowy, mírně upravený. Na mém zařízení funguje téměř standardní v5.2. Je k dispozici na GitHubu — .
Myslím, že dnes mám nejlepší port U-Boot pro F1C100s na světě a je také částečně založen na práci Icenowy (nečekaně, dostat U-Boot do chodu se ukázalo být dost nepříjemným úkolem). Také je možné najít na GitHubu — .
Dokumentace pro F1C100s
Našel jsem spíše řídkou dokumentaci pro F1C100s a zveřejňuji ji zde:
- – základní informace a pinout.
- – definice registrů pro F1C600, který je vlastně přejmenovaným F1C100s s deklarovanou podporou Linuxu (ha!).
- Aktivně jsem čerpal informace z kapitoly od – vývojové desky, kterou jsem použil k nastavení softwaru.
Pro zvědavé nahrávám .

Závěr
Mnoho jsem se naučil během vývoje tohoto projektu – to je můj první projekt, kde jsem použil pec na pájení tavením cínem. Také jsem se naučil, jak najít zdroje pro komponenty s slabou dokumentací.
Využíval jsem své předchozí zkušenosti s vestavěným Linuxem a vývojem desek. Projekt nemá bezchybnosti, ale dobře ukazuje všechny mé dovednosti.
Zájemcům o podrobnosti o práci s vestavěným Linuxem doporučuji přečíst si mou sérii článků na toto téma: . Tam podrobně popisuji, jak vytvářet software a hardware od nuly pro malé a levné Linuxové systémy, podobné mé vizitce.
Zdroj: habr.com
