На маёй візітоўцы працуе Linux

Пераклад артыкула з блога інжынера Джорджа Хільярда

На маёй візітоўцы працуе Linux
Клікабельна

Я інжынер убудаваных сістэм. У вольны час я часта шукаю тое, што можна будзе выкарыстоўваць у праектаванні будучых сістэм, ці нешта з разраду маіх інтарэсаў.

Адна з такіх абласцей - танныя кампутары, здольныя падтрымліваць Linux, і чым танней, тым лепш. Таму я закапаўся ў глыбокую трусіную нару малавядомых працэсараў.

Я падумаў: "Гэтыя працэсары настолькі танныя, што іх практычна можна раздаваць дарма". І праз некаторы час да мяне прыйшла ідэя зрабіць голую картку для Linux у формаў-фактары візітнай карткі.

Як толькі я падумаў пра гэта, я вырашыў, што гэта было б вельмі крута зрабіць. Я ўжо бачыў электронныя візітоўкі да гэтага, І ў іх былі розныя цікавыя магчымасці, тыпу эмулявання флэш-карт, мігцення лямпачак ці нават бесправадной перадачы дадзеных. Аднак візітоўкі з падтрымкай Linux я не сустракаў.

Так што я зрабіў сабе такую.

Гэта скончаная версія прадукта. Паўнавартасны мінімальны кампутар на ARM, на якім працуе мая адмысловая версія Linux, створаная пры дапамозе Buildroot.

На маёй візітоўцы працуе Linux

У куце ў яе ёсць 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, але ўсё роўна выглядаюць добра.

Першую партыю я зрабіў матава-чорнымі. Глядзеліся яны прыгожа, але былі вельмі маркімі.

На маёй візітоўцы працуе Linux

З першай партыяй была парачка праблем. Па-першае, канектар USB быў нядосыць доўгім, каб надзейна ўставаць у любыя USB-парты. Па-другое, дарожкі для флэш былі зроблены няправільна, але я абышоў гэта, загнуўшы кантакты.

На маёй візітоўцы працуе Linux

Праверыўшы ўсё ў працы, я замовіў новую партыю поплаткаў; фота адной з іх вы можаце бачыць у пачатку артыкула.

З-за невялікага памеру ўсіх гэтых маленькіх камплектавалых я вырашыў звярнуцца да паяння аплаўленнем прыпоя [reflow solder] з выкарыстаннем таннай печкі. У мяне ёсць доступ да лазернага разаку, таму я выразаў на ім трафарэт для паяння з плёнкі для ламінатар. Атрымаўся трафарэт дастаткова нядрэнна. Адтуліны для кантактаў працэсара дыяметрам 0,2 мм патрабавалі асобай дбайнасці для якаснага выраба - крытычна важна было правільна сфакусаваць лазер і падабраць яго магутнасць.

На маёй візітоўцы працуе Linux
Для ўтрымання платы пры нанясенні пасты добра падыходзяць іншыя платы.

Я нанёс паяльную пасту і размясціў кампаненты ўручную. Я заклапаціўся, каб нідзе ў працэсе не выкарыстоўваўся свінец - усе платы, камплектуючыя і паста адпавядаюць стандарту RoHS - каб мяне не мучыла сумленне, калі я буду раздаваць іх людзям.

На маёй візітоўцы працуе Linux
З гэтай партыяй я крыху прамахнуўся, аднак паяльная паста даруе памылкі, і ўсё сабралася нармальна

На размяшчэнне кожнага кампанента сыходзіла прыкладна па 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 F1C100s Datasheet – агульная інфармацыя і распіноўка.
  • Allwinner F1C600 Reference Manual – азначэнні рэгістраў для F1C600, які насамрэч з'яўляецца тым жа F1C100s, але пераназваным з заяўленай падтрымкай Linux (ха!).
  • Я актыўна запазычваў інфармацыю са схемы ад Sipeed's Lichee Nano – платы распрацоўкі, якую я выкарыстоўваў для налады софту.

Для цікаўных загружаю схему майго праекту.

На маёй візітоўцы працуе Linux

Заключэнне

Я шмат чаму навучыўся ў працэсе распрацоўкі гэтага праекта - гэта мой першы праект, дзе я выкарыстаў печ для паяння аплаўленнем прыпоя. Таксама я навучыўся знаходзіць рэсурсы для кампанентаў з дрэннай дакументацыяй.

Я карыстаўся наяўным у мяне досведам працы са ўбудаваным Linux і досведам распрацоўкі поплаткаў. Праект не без заган, аднак нядрэнна паказвае ўсе мае ўменні.

Якія цікавяцца падрабязнасцямі працы са ўбудаваным Linux прапаную прачытаць маю серыю артыкулаў пра гэта: Mastering Embedded Linux. Тамака я падрабязна распавядаю аб тым, як ствараць ПА і жалеза з нуля для маленечкіх і танных Linux-сістэм, падобных на гэтую маю візітную картку.

Крыніца: habr.com

Дадаць каментар