На моїй візитівці працює 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: виведення різних пафосних висловів. Я вирішив не включати сюди всю базу цитат, щоб залишилося місце для інших функцій;
  • мікропітон: дуже маленький інтерпретатор Python

Емуляція Flash Drive

Під час компіляції інструменти складання генерують невеликий образ FAT32 і додають його як один із розділів UBI. Підсистема гаджетів Linux представляє його ПК як пристрій-накопичувач.

Якщо вам цікаво подивитися, що з'являється на флешці, то найпростіше це зробити, ознайомившись з вихідниками. Там лежить також кілька фотографій та моє резюме.

ресурси

Вихідники

Моє дерево Buildroot викладено на GitHub третійтрейфорт/businesscard-linux. Там є код генерації флеш-образу NOR, який встановлюється за допомогою режиму скачування USB у процесора. Там також є всі визначення пакета для ігор та інших програм, які я запхав у Buildroot після того, як все запрацювало. Якщо ви хочете використовувати F1C100s у своєму проекті, це стане чудовою відправною точкою (не соромтеся ставити мені запитання).
Я використовував чудово виконаний проект Linux v4.9 для F1C100s за авторством Icenowy, трохи його переробивши. На моїй картці працює майже стандартна v5.2. Вона лежить на GitHub. третійтрейфорт/лінукс.
Думаю, у мене на сьогодні найкращий порт 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

Додати коментар або відгук