Переклад статті з інженера Джорджа Хілліарда
Клікований
Я інженер вбудованих систем. У вільний час я часто шукаю те, що можна буде використовувати у проектуванні майбутніх систем, або щось із розряду моїх інтересів.
Одна з таких областей – дешеві комп'ютери, здатні підтримувати 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 мм вимагали особливої ретельності для якісного виготовлення – важливо було правильно сфокусувати лазер і підібрати його потужність.

Для утримання плати при нанесенні пасти добре підходять інші плати
Я наніс паяльну пасту і розташував компоненти вручну. Я подбав, щоб ніде в процесі не використовувався свинець – усі плати, комплектуючі та паста відповідають стандарту – щоб мене не мучила совість, коли я роздаватиму їх людям.

З цією партією я трохи промахнувся, проте паяльна паста вибачає помилки, і все зібралося нормально
На розташування кожного компонента йшло приблизно по 10 секунд, тому я спробував зробити їхню кількість мінімальною. Більше подробиць про проектування картки можна почитати в іншій .
Список матеріалів та вартість
Я дотримувався суворого бюджету. І візитівка вийшла такою, як задумано – мені не шкода її віддавати! Звичайно, всім і кожному я її роздавати не буду, оскільки на виготовлення кожного екземпляра витрачається час, а мій час у вартості візитки не враховується (вона як би безкоштовна).
Компонент
Ціна
F1C100s
$1.42
Друкована плата
$0.80
8 МБ флеш
$0.17
Всі інші компоненти
$0.49
Разом
$2.88
Звичайно, є ще витрати, які складно розрахувати, типу доставки (оскільки вона розподілилася між компонентами, призначеними для кількох проектів). Однак для плати з підтримкою Linux це безумовно дуже дешево. Також ця розбивка дає непогане уявлення про те, чому обходиться компаніям виготовлення пристроїв нижнього цінового сегмента: можете бути впевнені в тому, що компаніям це обходиться ще дешевше, ніж мені!
можливості
Що сказати? Карта завантажує дуже обрізаний Linux за 6 секунд. Через форм-фактор і вартість карти немає I/O, мережевої підтримки, якогось серйозного обсягу сховища для запуску важких програм. Тим не менш, я зумів впхнути в образ прошивки купу всього цікавого.
USB
З USB можна було вигадати багато чого цікавого, але я вибрав найпростіший варіант, щоб у людей з великою ймовірністю все запрацювало, якщо вони вирішать спробувати мою візитку. Linux дозволяє карті поводитися як «пристрій» з підтримкою . Деякі драйвера я брав з попередніх проектів, що включали цей процесор, тому у мене є доступ до всієї функціональності платформи USB gadget framework. Я вирішив емулювати заздалегідь згенерований флеш-диск і дати доступ до оболонки по віртуальному послідовному порту.
оболонка
Після логіна під користувачем root на послідовну консоль можна запускати такі програми:
- rogue: класична для Unix пригодницька гра про підземелля;
- 2048: проста гра в 2048 у консольному режимі;
- fortune: виведення різних пафосних висловів. Я вирішив не включати сюди всю базу цитат, щоб залишилося місце для інших функцій;
- : дуже маленький інтерпретатор Python
Емуляція Flash Drive
Під час компіляції інструменти складання генерують невеликий образ FAT32 і додають його як один із розділів UBI. Підсистема гаджетів Linux представляє його ПК як пристрій-накопичувач.
Якщо вам цікаво подивитися, що з'являється на флешці, то найпростіше це зробити, ознайомившись з . Там лежить також кілька фотографій та моє резюме.
Ресурси
Вихідники
Моє дерево Buildroot викладено на GitHub . Там є код генерації флеш-образу NOR, який встановлюється за допомогою режиму скачування USB у процесора. Там також є всі визначення пакета для ігор та інших програм, які я запхав у Buildroot після того, як все запрацювало. Якщо ви хочете використовувати F1C100s у своєму проекті, це стане чудовою відправною точкою (не соромтеся ).
Я використовував Linux v4.9 для F1C100s за авторством Icenowy, трохи його переробивши. На моїй картці працює майже стандартна v5.2. Вона лежить на GitHub. .
Думаю, у мене на сьогодні найкращий порт U-Boot для F1C100s у світі, і він частково також заснований на роботі Icenowy (несподівано, змусити U-Boot працювати як слід виявилося дуже неприємним завданням). Також можна взяти на GitHub. .
Документація на F1C100s
Знайшов досить мізерну документацію F1C100s, і викладаю її тут:
- – загальна інформація та розпинування.
- – визначення регістрів для F1C600, який насправді є тим самим F1C100s, але перейменованим із заявленою підтримкою Linux (Ха!).
- Я активно запозичив інформацію зі схеми від – плати розробки, яку я використав для налаштування софту.
Для цікавих завантажую .

Висновок
Я багато чого навчився у процесі розробки цього проекту – це мій перший проект, де я використав піч для паяння оплавленням припою. Також я навчився знаходити ресурси для компонентів із поганою документацією.
Я користувався досвідом роботи з вбудованим у мене Linux та досвідом розробки плат. Проект не без вад, проте непогано показує всі мої вміння.
Подробиці роботи з вбудованим Linux пропоную прочитати мою серію статей про це: . Там я докладно розповідаю про те, як створювати ПЗ та залізо з нуля для крихітних та дешевих. Linux-систем, схожих на цю мою візитну картку
Джерело: habr.com
