Ang aking business card ay nagpapatakbo ng Linux

Pagsasalin ng isang artikulo mula sa post ng blog inhinyero na si George Hilliard

Ang aking business card ay nagpapatakbo ng Linux
Naki-click

Isa akong embedded systems engineer. Sa aking libreng oras, madalas akong naghahanap ng isang bagay na maaaring magamit sa disenyo ng mga hinaharap na sistema, o isang bagay mula sa aking mga interes.

Ang isang ganoong lugar ay ang mga murang computer na maaaring magpatakbo ng Linux, at mas mura ang mas mahusay. Kaya naghukay ako ng malalim na butas ng kuneho ng mga hindi kilalang processor.

Naisip ko, "Napakamura ng mga processor na ito na halos maibibigay sila nang libre." At pagkaraan ng ilang oras, dumating sa akin ang ideya na gumawa ng isang hubad na card para sa Linux sa form factor ng isang business card.

Sa sandaling naisip ko ito, napagpasyahan kong ito ay isang talagang cool na bagay na gawin. Meron na ako nakita elektroniko mga business card sa ito, at mayroon silang iba't ibang kawili-wiling kakayahan, gaya ng pagtulad sa mga flash card, pagkislap ng mga bombilya, o kahit na wireless na paghahatid ng data. Gayunpaman, hindi ko nakita ang mga business card na may suporta sa Linux.

Kaya ginawa ko ang sarili ko.

Ito ang tapos na bersyon ng produkto. Isang kumpletong minimal na ARM computer na nagpapatakbo ng aking custom na bersyon ng Linux na binuo gamit ang Buildroot.

Ang aking business card ay nagpapatakbo ng Linux

Mayroon itong USB port sa sulok. Kung ikinonekta mo ito sa isang computer, magbo-boot ito sa loob ng humigit-kumulang 6 na segundo at makikita bilang isang flash card at isang virtual serial port kung saan maaari kang mag-log in sa shell ng card. Sa flash drive ay isang README file, isang kopya ng aking resume at ilang mga larawan ko. Ang shell ay may ilang mga laro, Unix classics tulad ng fortune at rogue, isang maliit na bersyon ng laro 2048 at isang MicroPython interpreter.

Ginagawa ang lahat ng ito gamit ang napakaliit na 8 MB flash chip. Ang bootloader ay umaangkop sa 256 KB, ang kernel ay tumatagal ng 1,6 MB, at ang buong root file system ay tumatagal ng 2,4 MB. Samakatuwid, mayroong maraming espasyo na natitira para sa virtual flash drive. Mayroon ding home directory na maisusulat kung sakaling may gumawa ng anumang bagay na gusto niyang i-save. Ang lahat ng ito ay naka-save din sa isang flash chip.

Ang buong device ay nagkakahalaga ng mas mababa sa $3. Ito ay sapat na mura upang ipamigay. Kung nakatanggap ka ng ganoong device mula sa akin, nangangahulugan ito na malamang na sinusubukan kitang mapabilib.

Disenyo at bumuo

Ako mismo ang nagdisenyo at nag-assemble ng lahat. Trabaho ko ito at gustung-gusto ko ito, at karamihan sa hamon ay ang paghahanap ng sapat na murang bahagi para sa libangan.

Ang pagpili ng processor ay ang pinakamahalagang desisyon na nakakaapekto sa gastos at pagiging posible ng proyekto. Pagkatapos ng malawak na pananaliksik, pinili ko ang F1C100s, isang medyo hindi kilalang processor mula sa Allwinner na cost-optimized (ibig sabihin, napakamura). Ang parehong pakete ay naglalaman ng parehong RAM at CPU. Bumili ako ng mga processor sa Taobao. Ang lahat ng iba pang mga bahagi ay binili mula sa LCSC.

Umorder ako ng boards kay JLC. Gumawa sila ng 8 kopya para sa akin sa halagang $10. Ang kanilang kalidad ay kahanga-hanga, lalo na para sa presyo; hindi kasing ayos ng OSHPark, pero maganda pa rin ang hitsura.

Ginawa ko ang unang batch na matte na itim. Ang mga ito ay maganda, ngunit napakadaling marumi.

Ang aking business card ay nagpapatakbo ng Linux

Nagkaroon ng ilang problema sa unang batch. Una, hindi sapat ang haba ng USB connector para ligtas na magkasya sa anumang USB port. Pangalawa, ang mga flash track ay ginawa nang hindi tama, ngunit nakuha ko ito sa pamamagitan ng pagyuko ng mga contact.

Ang aking business card ay nagpapatakbo ng Linux

Pagkatapos suriin ang lahat ay gumagana, nag-order ako ng bagong batch ng mga board; Maaari mong makita ang isang larawan ng isa sa kanila sa simula ng artikulo.

Dahil sa maliit na sukat ng lahat ng maliliit na sangkap na ito, nagpasya akong gumamit ng reflow soldering gamit murang kalan. Mayroon akong access sa isang laser cutter, kaya ginamit ko ito upang gupitin ang isang soldering stencil mula sa laminator film. Ang stencil ay naging maayos. Ang mga butas na may diameter na 0,2 mm para sa mga contact ng processor ay nangangailangan ng espesyal na pangangalaga upang matiyak ang mataas na kalidad na pagmamanupaktura - napakahalaga na itutok nang tama ang laser at piliin ang kapangyarihan nito.

Ang aking business card ay nagpapatakbo ng Linux
Ang ibang mga board ay gumagana nang maayos upang hawakan ang board habang naglalagay ng paste.

Inilapat ko ang solder paste at inilagay ang mga bahagi sa pamamagitan ng kamay. Sinigurado kong hindi ginamit ang lead kahit saan sa proseso - lahat ng board, component at paste ay nakakatugon sa pamantayan RoHS - upang hindi ako pahirapan ng aking konsensya kapag ipinamahagi ko sila sa mga tao.

Ang aking business card ay nagpapatakbo ng Linux
Nakagawa ako ng kaunting pagkakamali sa batch na ito, ngunit pinapatawad ng solder paste ang mga pagkakamali, at naging maayos ang lahat

Ang bawat bahagi ay tumagal ng humigit-kumulang 10 segundo sa posisyon, kaya sinubukan kong panatilihing minimum ang bilang ng mga bahagi. Higit pang mga detalye tungkol sa disenyo ng mapa ay mababasa sa isa pa ang aking detalyadong artikulo.

Listahan ng mga materyales at gastos

Natigil ako sa isang mahigpit na badyet. At ang business card ay lumabas ayon sa nilalayon - I don't mind give it away! Siyempre, hindi ko ito ibibigay sa lahat, dahil nangangailangan ng oras upang gawin ang bawat kopya, at ang aking oras ay hindi isinasaalang-alang sa halaga ng business card (ito ay uri ng libre).

Component
Π¦Π΅Π½Π°

F1C100s
$1.42

PCB
$0.80

8MB flash
$0.17

Lahat ng iba pang mga sangkap
$0.49

Sa kabuuan
$2.88

Naturally, mayroon ding mga gastos na mahirap kalkulahin, tulad ng paghahatid (dahil ito ay ibinahagi sa mga bahagi na inilaan para sa ilang mga proyekto). Gayunpaman, para sa isang board na sumusuporta sa Linux, tiyak na medyo mura ito. Ang breakdown na ito ay nagbibigay din ng magandang ideya kung magkano ang gastos ng mga kumpanya sa paggawa ng mga device sa pinakamababang bahagi ng presyo: maaari mong tiyakin na mas mababa ang halaga nito sa mga kumpanya kaysa sa gastos ko!

Mga Kakayahan

Anong sasabihin? Ang card ay nagbo-boot ng isang napakabigat na natanggal na Linux sa loob ng 6 na segundo. Dahil sa form factor at gastos, ang card ay walang I/O, network support, o anumang malaking halaga ng storage para magpatakbo ng mabibigat na programa. Gayunpaman, nagawa kong i-cram ang isang grupo ng mga kagiliw-giliw na bagay sa imahe ng firmware.

USB

Mayroong maraming mga cool na bagay na maaaring gawin sa USB, ngunit pinili ko ang pinakasimpleng opsyon upang ang mga tao ay mas malamang na gumana ito kung nagpasya silang subukan ang aking business card. Binibigyang-daan ng Linux ang card na kumilos tulad ng isang "device" na may suporta Framework ng Gadget. Kinuha ko ang ilan sa mga driver mula sa mga nakaraang proyekto na kasama ang processor na ito, kaya may access ako sa lahat ng functionality ng USB gadget framework. Nagpasya akong tularan ang isang paunang nabuong flash drive at magbigay ng shell access sa pamamagitan ng virtual serial port.

Shell

Pagkatapos mag-log in bilang root, maaari mong patakbuhin ang mga sumusunod na programa sa serial console:

  • rogue: isang klasikong Unix dungeon crawling adventure game;
  • 2048: isang simpleng laro ng 2048 sa console mode;
  • kapalaran: output ng iba't ibang mapagpanggap na kasabihan. Nagpasya akong huwag isama ang buong database ng pagsipi dito upang mag-iwan ng puwang para sa iba pang mga tampok;
  • micropython: Isang napakaliit na tagasalin ng Python.

Flash Drive Emulation

Sa panahon ng compilation, ang build tool ay bumubuo ng isang maliit na FAT32 na imahe at idagdag ito bilang isa sa mga partition ng UBI. Ang Linux Gadget Subsystem ay nagpapakita ng kanyang PC bilang isang storage device.

Kung interesado kang makita kung ano ang lilitaw sa flash drive, ang pinakamadaling paraan upang gawin ito ay sa pamamagitan ng pagbabasa pinagmumulan. Mayroon ding ilang mga litrato at ang aking resume.

Mga Mapagkukunan

Mga pinagmumulan

Ang aking Buildroot tree ay nai-post sa GitHub - tatlumpu't tatlongpu't/businesscard-linux. Mayroong code para sa pagbuo ng NOR flash image, na naka-install gamit ang USB download mode ng processor. Mayroon din itong lahat ng mga kahulugan ng package para sa mga laro at iba pang mga programa na itinulak ko sa Buildroot pagkatapos kong gumana ang lahat. Kung interesado ka sa paggamit ng mga F1C100 sa iyong proyekto, ito ay magiging isang magandang panimulang punto (huwag mag-atubiling tanungin mo ako).
ginamit ko magandang naisagawang proyekto Linux v4.9 para sa F1C100s ni Icenowy, bahagyang muling idinisenyo. Ang aking card ay tumatakbo sa halos karaniwang v5.2. Ito ay nasa GitHub - tatlumpu't tatlongpu't/linux.
Sa palagay ko mayroon akong pinakamahusay na port ng U-Boot para sa mga F1C100 sa mundo ngayon, at bahagyang nakabatay din ito sa trabaho ni Icenowy (nakakagulat, ang pagkuha ng U-Boot upang gumana nang maayos ay isang nakakabigo na gawain). Makukuha mo rin ito sa GitHub - tatlumpu't tatlongpu't/u-boot.

Dokumentasyon para sa F1C100s

Nakakita ako ng medyo kalat-kalat na dokumentasyon para sa mga F1C100, at pino-post ko ito dito:

I'm upload it para sa mga curious. ang project diagram ko.

Ang aking business card ay nagpapatakbo ng Linux

Konklusyon

Marami akong natutunan sa pagbuo ng proyektong ito - ito ang una kong proyekto gamit ang reflow soldering oven. Natutunan ko rin kung paano maghanap ng mga mapagkukunan para sa mga bahagi na may mahinang dokumentasyon.

Ginamit ko ang aking kasalukuyang karanasan sa naka-embed na Linux at karanasan sa pagbuo ng board. Ang proyekto ay hindi walang mga kapintasan, ngunit ito ay nagpapakita ng lahat ng aking mga kasanayan nang maayos.

Para sa mga interesado sa mga detalye ng pagtatrabaho sa naka-embed na Linux, iminumungkahi kong basahin ang aking serye ng mga artikulo tungkol dito: Mastering Naka-embed na Linux. Doon ay nagsasalita ako nang detalyado tungkol sa kung paano lumikha ng software at hardware mula sa simula para sa maliliit at murang mga sistema ng Linux, katulad ng aking calling card.

Pinagmulan: www.habr.com

Magdagdag ng komento