Пераклад артыкула з блога інжынера Джорджа Хільярда
Клікабельна
Я інжынер убудаваных сістэм. У вольны час я часта шукаю тое, што можна будзе выкарыстоўваць у праектаванні будучых сістэм, ці нешта з разраду маіх інтарэсаў.
Адна з такіх абласцей - танныя кампутары, здольныя падтрымліваць Linux, і чым танней, тым лепш. Таму я закапаўся ў глыбокую трусіную нару малавядомых працэсараў.
Я падумаў: "Гэтыя працэсары настолькі танныя, што іх практычна можна раздаваць дарма". І праз некаторы час да мяне прыйшла ідэя зрабіць голую картку для Linux у формаў-фактары візітнай карткі.
Як толькі я падумаў пра гэта, я вырашыў, што гэта было б вельмі крута зрабіць. Я ўжо бачыўэлектронныявізітоўкі да гэтага, І ў іх былі розныя цікавыя магчымасці, тыпу эмулявання флэш-карт, мігцення лямпачак ці нават бесправадной перадачы дадзеных. Аднак візітоўкі з падтрымкай Linux я не сустракаў.
Так што я зрабіў сабе такую.
Гэта скончаная версія прадукта. Паўнавартасны мінімальны кампутар на ARM, на якім працуе мая адмысловая версія Linux, створаная пры дапамозе Buildroot.
У куце ў яе ёсць USB-порт. Калі падлучыць яе да кампутара, яна грузіцца прыкладна за 6 секунд і яе бачна, як флэш-карту і віртуальны паслядоўны порт, па якім можна ўвайсці ў абалонку карты. На флэшцы ляжыць файл README, копія майго рэзюмэ і некалькі маіх фатаграфій. У абалонцы ёсць некалькі гульняў, класіка з Unix тыпу fortune і rogue, невялікая версія гульні 2048 і інтэрпрэтатар MicroPython.
Усё гэта зроблена пры дапамозе вельмі маленькага флэш-чыпа на 8 Мб. Загрузнік змяшчаецца ў 256 Кб, ядро займае 1,6 Мб, а ўся файлавая сістэма root - 2,4 Мб. Таму для віртуальнай флэшкі застаецца шмат месца. Там таксама ёсць хатняя дырэкторыя, даступная на запіс - калі хтосьці зробіць нешта, што захоча захаваць. Гэта ўсё таксама захоўваецца на флэш-чып.
Уся прылада варта меней $3. Яно дастаткова таннае, каб яго можна было раздаваць. Калі вы атрымалі ад мяне такая прылада, гэта азначае, што хутчэй за ўсё я спрабую зрабіць на вас уражанне.
Праектаванне і зборка
Спраектаваў і сабраў я ўсё сам. Гэта мая праца, і яна мне падабаецца, і большая частка цяжкасцяў складалася ў пошуку дастаткова танных запчастак для такога хобі.
Выбар працэсара быў самым важным рашэннем, якія ўплывалі на кошт і рэалізуемасць праекта. Пасля актыўных даследаванняў я абраў F1C100s, адносна малавядомы працэсар вытворчасці Allwinner, аптымізаваны па кошце (г.зн. па-чартоўску танны). У адным корпусе знаходзяцца і RAM, і CPU. Купіў я працэсары на Taobao. Усе астатнія камплектуючыя набыты на LCSC.
Поплаткі я замовіў у JLC. За $8 мне зрабілі 10 копій. Якасць іх уражвае, асабліва за такі кошт; не такія акуратныя, як у OSHPark, але ўсё роўна выглядаюць добра.
Першую партыю я зрабіў матава-чорнымі. Глядзеліся яны прыгожа, але былі вельмі маркімі.
З першай партыяй была парачка праблем. Па-першае, канектар USB быў нядосыць доўгім, каб надзейна ўставаць у любыя USB-парты. Па-другое, дарожкі для флэш былі зроблены няправільна, але я абышоў гэта, загнуўшы кантакты.
Праверыўшы ўсё ў працы, я замовіў новую партыю поплаткаў; фота адной з іх вы можаце бачыць у пачатку артыкула.
З-за невялікага памеру ўсіх гэтых маленькіх камплектавалых я вырашыў звярнуцца да паяння аплаўленнем прыпоя [reflow solder] з выкарыстаннем таннай печкі. У мяне ёсць доступ да лазернага разаку, таму я выразаў на ім трафарэт для паяння з плёнкі для ламінатар. Атрымаўся трафарэт дастаткова нядрэнна. Адтуліны для кантактаў працэсара дыяметрам 0,2 мм патрабавалі асобай дбайнасці для якаснага выраба - крытычна важна было правільна сфакусаваць лазер і падабраць яго магутнасць.
Для ўтрымання платы пры нанясенні пасты добра падыходзяць іншыя платы.
Я нанёс паяльную пасту і размясціў кампаненты ўручную. Я заклапаціўся, каб нідзе ў працэсе не выкарыстоўваўся свінец - усе платы, камплектуючыя і паста адпавядаюць стандарту RoHS - каб мяне не мучыла сумленне, калі я буду раздаваць іх людзям.
З гэтай партыяй я крыху прамахнуўся, аднак паяльная паста даруе памылкі, і ўсё сабралася нармальна
На размяшчэнне кожнага кампанента сыходзіла прыкладна па 10 секунд, таму я паспрабаваў зрабіць іх колькасць мінімальнай. Больш падрабязнасцяў аб праектаванні карты можна пачытаць у іншы маім падрабязнай артыкуле.
Спіс матэрыялаў і кошт
Я прытрымліваўся строгага бюджэту. І візітоўка атрымалася такой, як задумана - мне не шкада яе аддаваць! Вядома, усім і кожнаму я яе раздаваць не буду, паколькі на выраб кожнага асобніка марнуецца час, а мой час у кошце візітоўкі не ўлічваецца (яно як бы бясплатнае).
кампанент
Кошт
F1C100s
$1.42
Друкаваная плата
$0.80
Флэш 8 Мб
$0.17
Усе астатнія кампаненты
$0.49
Разам
$2.88
Натуральна, ёсць яшчэ выдаткі, якія складана разлічыць, тыпу дастаўкі (паколькі яна размеркавалася паміж кампанентамі, прызначанымі для некалькіх праектаў). Аднак для платы з падтрымкай Linux гэта вызначана вельмі танна. Таксама гэтая разбіўка дае нядрэннае ўяўленне аб тым, чаму абыходзіцца кампаніям выраб прылад самага ніжняга коштавага сегмента: можаце быць упэўненыя ў тым, што кампаніям гэта абыходзіцца яшчэ танней, чым мне!
Магчымасці
Што сказаць? Карта загружае вельмі моцна абрэзаны Linux за 6 секунд. З-за формаў-фактару і кошту ў карты няма I/O, сеткавай падтрымкі, нейкага сур'ёзнага аб'ёму сховішча для запуску цяжкіх праграм. Тым не менш, я здолеў упіхнуць у выяву прашыўкі кучу ўсяго цікавага.
USB
З USB можна было прыдумаць шмат чаго цікавага, але я абраў самы просты варыянт, каб у людзей з вялікай верагоднасцю ўсё зарабіла, калі яны вырашаць паспрабаваць маю візітоўку. Linux дазваляе карце паводзіць сябе як "прылада" з падтрымкай Gadget Framework. Некаторыя драйвера я браў з папярэдніх праектаў, якія ўключалі ў сябе гэты працэсар, таму ў мяне есць доступ да ўсёй функцыянальнасці платформы USB gadget framework. Я вырашыў эмуляваць загадзя згенераваны флэш-дыск і даць доступ да абалонкі па віртуальным паслядоўным порце.
абалонка
Пасля лагіна пад карыстачом root на паслядоўную кансоль можна запускаць наступныя праграмы:
rogue: класічная для Unix прыгодніцкая гульня пра падзямеллі;
2048: простая гульня ў 2048 у кансольным рэжыме;
fortune: вывад розных пафасных выслоўяў. Я вырашыў не ўключаць сюды ўсю базу цытат, каб засталося месца для іншых функцый;
micropython: вельмі маленькі інтэрпрэтатар Python.
Эмуляцыя Flash Drive
Падчас кампіляцыі прылады зборкі генеруюць невялікую выяву FAT32 і дадаюць яго ў якасці аднаго з частак UBI. Падсістэма гаджэтаў Linux уяўляе яго ПК як прылада-назапашвальнік.
Калі вам цікава паглядзець, што з'яўляецца на флэшцы, тое прасцей за ўсё гэта зрабіць, азнаёміўшыся з зыходнікамі. Там ляжыць таксама некалькі фатаграфій і маё рэзюмэ.
Рэсурсы
Зыходнікі
Маё дрэва Buildroot выкладзена на GitHub thirtythreeforty/businesscard-linux. Тамака ёсць код генерацыі флэш-выявы NOR, які ўсталёўваецца пры дапамозе рэжыму запампоўкі па USB у працэсара. Там таксама ёсць усе вызначэнні пакета для гульняў і іншых праграм, якія я запхнуў у Buildroot пасля таго, як усё зарабіла. Калі вы жадаеце выкарыстоўваць F1C100s у сваім праекце, гэта стане выдатнай адпраўной кропкай (не саромейцеся задаваць мне пытанні).
Я выкарыстоўваў выдатна выкананы праект Linux v4.9 для F1C100s за аўтарствам Icenowy, крыху яго перарабіўшы. На маёй картцы працуе амаль стандартная v5.2. Яна ляжыць на GitHub. thirtythreeforty/linux.
Думаю, у мяне на сёння самы лепшы порт U-Boot для F1C100s у свеце, і ён часткова таксама заснаваны на працы Icenowy (нечакана, прымусіць U-Boot працаваць як трэба аказалася вельмі непрыемнай задачай). Таксама можна ўзяць на GitHub. thirtythreeforty/u-boot.
Дакументацыя на F1C100s
Знайшоў даволі бедную дакументацыю F1C100s, і выкладваю яе тут:
Allwinner F1C600 Reference Manual – азначэнні рэгістраў для F1C600, які насамрэч з'яўляецца тым жа F1C100s, але пераназваным з заяўленай падтрымкай Linux (ха!).
Я актыўна запазычваў інфармацыю са схемы ад Sipeed's Lichee Nano – платы распрацоўкі, якую я выкарыстоўваў для налады софту.
Я шмат чаму навучыўся ў працэсе распрацоўкі гэтага праекта - гэта мой першы праект, дзе я выкарыстаў печ для паяння аплаўленнем прыпоя. Таксама я навучыўся знаходзіць рэсурсы для кампанентаў з дрэннай дакументацыяй.
Я карыстаўся наяўным у мяне досведам працы са ўбудаваным Linux і досведам распрацоўкі поплаткаў. Праект не без заган, аднак нядрэнна паказвае ўсе мае ўменні.
Якія цікавяцца падрабязнасцямі працы са ўбудаваным Linux прапаную прачытаць маю серыю артыкулаў пра гэта: Mastering Embedded Linux. Тамака я падрабязна распавядаю аб тым, як ствараць ПА і жалеза з нуля для маленечкіх і танных Linux-сістэм, падобных на гэтую маю візітную картку.