На моей визитке работает Linux

Аватар пользователя NTFS

Перевод статьи из блога инженера Джорджа Хиллиарда

9532a8ddcfcc8709783f40fd9c588eeb.jpg
Кликабельно

Я инженер встроенных систем. В свободное время я часто ищу то, что можно будет использовать в проектировании будущих систем, или что-то из разряда моих интересов.

Одна из таких областей – дешёвые компьютеры, способные поддерживать Linux, и чем дешевле, тем лучше. Поэтому я зарылся в глубокую кроличью нору малоизвестных процессоров.

Я подумал: «Эти процессоры настолько дешёвые, что их практически можно раздавать даром». И через некоторое время ко мне пришла идея сделать голую карточку для Linux в форм-факторе визитной карточки.

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

Так что я сделал себе такую.

Это законченная версия продукта. Полноценный минимальный компьютер на ARM, на котором работает моя особая версия Linux, созданная при помощи Buildroot.

6fde4a6082ee3747bc571f7b9394047b.jpg

В углу у неё есть 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, но всё равно выглядят хорошо.

Первую партию я сделал матово-чёрными. Смотрелись они красиво, но были очень маркими.

7509d9d7c24c3ba3c6d7d9214c0f0878.jpg

С первой партией была парочка проблем. Во-первых, коннектор USB был недостаточно длинным, чтобы надёжно вставать в любые USB-порты. Во-вторых, дорожки для флэш были сделаны неправильно, но я обошёл это, загнув контакты.

f6ad8829440e6f1b942292b45ab6841b.jpg

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

Из-за небольшого размера всех этих маленьких комплектующих я решил прибегнуть к пайке оплавлением припоя [reflow solder] с использованием дешёвой печки. У меня есть доступ к лазерному резаку, поэтому я вырезал на нём трафарет для пайки из плёнки для ламинатора. Получился трафарет достаточно неплохо. Отверстия для контактов процессора диаметром 0,2 мм требовали особой тщательности для качественного изготовления – критически важно было правильно сфокусировать лазер и подобрать его мощность.

91e4bf55dd1c86a241be05998ca1b2fd.jpg
Для удержания платы при нанесении пасты хорошо подходят другие платы

Я нанёс паяльную пасту и расположил компоненты вручную. Я озаботился, чтобы нигде в процессе не использовался свинец – все платы, комплектующие и паста соответствуют стандарту RoHS – чтобы меня не мучила совесть, когда я буду раздавать их людям.

41900da63d71dd54c47c8325e4bfeead.jpg
С этой партией я немного промахнулся, однако паяльная паста прощает ошибки, и всё собралось нормально

На расположение каждого компонента уходило примерно по 10 секунд, поэтому я попытался сделать их количество минимальным. Больше подробностей о проектировании карты можно почитать в другой моей подробной статье.
 

Список материалов и стоимость


Я придерживался строгого бюджета. И визитка получилась такой, как задумано – мне не жалко её отдавать! Конечно, всем и каждому я её раздавать не буду, поскольку на изготовление каждого экземпляра тратится время, а моё время в стоимости визитки не учитывается (оно как бы бесплатное).
 

Компонент Цена
F1C100s $1.42
PCB $0.80
8MB flash $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 – платы разработки, которую я использовал для настройки софта.



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

d5659a549dd475471b3309f2efb66a0a.svg
 

Заключение


Я много чему научился в процессе разработки этого проекта – это мой первый проект, где я использовал печь для пайки оплавлением припоя. Также я научился находить ресурсы для компонентов с плохой документацией.

Я пользовался имевшимся у меня опытом работы со встроенным Linux и опытом разработки плат. Проект не без изъянов, однако неплохо показывает все мои умения.

Интересующимся подробностями работы со встроенным Linux предлагаю прочесть мою серию статей об этом: Mastering Embedded Linux. Там я подробно рассказываю о том, как создавать ПО и железо с нуля для крохотных и дешёвых Linux-систем, похожих на эту мою визитную карточку.

Теги:

linuxвизиткавизитная карточкаочумелые ручкиusbF1C100sпайка

Авторство: 
Копия чужих материалов
Комментарий автора: 

За последние несколько дней были темы про Linux. Вот набрел на интересную статью как мне кажется.

Комментарии

Аватар пользователя ДК
ДК(12 лет 1 месяц)

а инженер по теплотехнике будет печатать визитки на радиаторах. программист - на перфокартах, что будет на визитке у доктора не сможет прочесть никто.

Аватар пользователя Intel4004
Intel4004(12 лет 3 месяца)

++ :)

У меня в коллекции пара визиток на текстолите (изготовители ПП), визитка на алюминии (гравер по металлу) и т.д.

Аватар пользователя Sarich
Sarich(9 лет 5 месяцев)

Комп на визитку, монитор на ладошку, аккумулятор в нокоть. Остальное куда, уже по мере специализации )))

Аватар пользователя ЗАсЛУЖЕННЫЙ маШИНОсТРОИТЕЛЬ

А предохранитель по питанию он (на схеме слева вверху) он все таки воткнул....

Аватар пользователя Секретный крановщик

Лучше бы он объяснил, зачем в схеме две лишние детали для ключевания светодиода. Светлячок голым портом и так отлично управляется.

Аватар пользователя дзядзька Хведар

может внутреннее сопротивление полевичка лучше подходит ?

и (или ) горящий лед не напрягает врм сока и в результате потребление ниже ?

 

Аватар пользователя Секретный крановщик

Больше похоже, что изначально это индикация наличия питания - в z-состоянии порта полевик открыт будет. Ну а дальше уже софтово как-то моргать будет или просто погаснет, говоря о том, что программа работает. Другого смысла лично я не вижу.

Аватар пользователя дзядзька Хведар

вполне возможно

эта схема из разряда тонкостей

Аватар пользователя дзядзька Хведар

естествено - он же инженер

совать в усб порт устройство без предохранителя - непрофессионализм

даже если сам усб имеет защиту

 

Аватар пользователя Starcon
Starcon(6 лет 7 месяцев)

Прикольная разработка, но не понятно зачем оно надо, кроме как развлечения себя любимого, а также для саморекламы. При подсчете стоимости не учтена работа, $3 это только комплектуха, очевидно что в его случае (hands made) такая визитка стоит на порядок дороже (если не на два). Плата ничем не защищена, легко механически повредить или например залить чем-нибудь. По хорошему эту часть закрыть чем-то типа термопленки  Текст вытравлен на плате, соответственно надо как-то придумать, как кастомизировать эту часть при массовом производстве. Перевод не полный, очень много интересного пропущено, читать лучше в оригинале.

Аватар пользователя roman.kuvaldin
roman.kuvaldin(12 лет 11 месяцев)

При подсчете стоимости не учтена работа

А как её учитывать, если конкретно эту работу продать невозможно?

Аватар пользователя mmx
mmx(9 лет 2 месяца)

Ну это же на коленке. При фабричном производстве можно (наверное) использовать технологию по которой шлёпают миллионы банковских, скидочных и проездных карт из пластика с чипом внутри. 

Аватар пользователя ViSlav
ViSlav(9 лет 12 месяцев)

не по­нят­но зачем оно надо

Если парень работает в этой сфере - то получается неплохая реклама при устройстве на работу.

Аватар пользователя Секретный крановщик

Ответ в статье

Если вы получили от меня такое устройство, это означает, что скорее всего я пытаюсь произвести на вас впечатление.

Аватар пользователя negr
negr(12 лет 11 месяцев)

прикольнее поставить колибриОС, там даж ассемблер есть

Аватар пользователя ZIL.ok.130
ZIL.ok.130(7 лет 4 месяца)

Колибри сама по себе -- возможный вариант замены BIOS-UEFI.

И написана она на Assembler, так что места занимает ППЦ как мало. А вот сверху на неё можно ставить уже полноформатные ОСи.

Как у всех на компах и реализовано.

laugh

Аватар пользователя дзядзька Хведар

колибри не посикс

Аватар пользователя NTFS
NTFS(12 лет 9 месяцев)

Просто немного необычно. Поэтому статью и запостил.

Аватар пользователя Finch
Finch(6 лет 1 месяц)

Перепосты с хабра тут не в почете) говорят слишком примитивно

Аватар пользователя mmx
mmx(9 лет 2 месяца)

А не надо путать тысячи быдлокодеров с единицами настоящих инженеров, которые могут что-то своими руками сделать.

Аватар пользователя Finch
Finch(6 лет 1 месяц)

Я так понимаю по вашему эту статью написал настоящий инженер?)

Аватар пользователя tokomak
tokomak(12 лет 11 месяцев)

Визитку сделал настоящий DIY-щик. А вот настоящий ли он инженер, зависит от точки зрения.

Аватар пользователя Finch
Finch(6 лет 1 месяц)

Так этот do it yourself школьного уровня. Чем тут восхищаться?

Аватар пользователя tokomak
tokomak(12 лет 11 месяцев)

Не нужно восхищаться всеми кто умеет писать статьи.

Аватар пользователя Finch
Finch(6 лет 1 месяц)

Так и я про это. Нашли на хабре самую примитивную статью и восхищаются, но при этом говорят, что хабр хрень)

Аватар пользователя tokomak
tokomak(12 лет 11 месяцев)

Ну да. И хорошо что восхищаются не все.

Аватар пользователя Txip
Txip(11 лет 11 месяцев)

Я не понял это самодельная флешка с приостановленным linux-ом. Зачем там проц?

Аватар пользователя maxvlad
maxvlad(12 лет 10 месяцев)

Ну, во-первых, раздел fat32 там  эмулируется - т.е. без проца не работает. Во-вторых - там есть игруха для текстовой консоли. И всё это - в формате кредитки. И проц там сравнительно шустрый. Предлагает платформу для хэндмэйдовых смарт-карт? Ну там проходки копировать, проездные всякие ;)

Аватар пользователя дзядзька Хведар

это не самодельная флэшка

 

Аватар пользователя Свой1
Свой1(5 лет 4 месяца)

Кода коту делать нехрен....

Аватар пользователя Remchik
Remchik(12 лет 9 месяцев)

Клевая штука, но, как ни крути, это просто имиджевая игрушка. В некоторых случаях будет эффективна, если действительно важно впечатление произвести. А так-то проще передавать просто информацию. У всех нынче с собой есть носитель - приемо-передатчик, поэтому визитки повторяют путь флоппи-дисков, компашек и т.д.

Аватар пользователя Bumba
Bumba(5 лет 2 месяца)

Главное - игры есть. Аж две штуки!

Аватар пользователя Вован Водкин
Вован Водкин(8 лет 6 месяцев)

хорошо что доктора проктологи еще не догадались делать визитки в виде жопы.
зы какая-то нехорошая тенденция превращать пульс в хабр. Зачем?

Аватар пользователя NTFS
NTFS(12 лет 9 месяцев)

Заметка была в блоге. Не на пульсе.

Аватар пользователя Gu_on2
Gu_on2(6 лет 10 месяцев)

Супер проект!

Аватар пользователя дзядзька Хведар

жаль никто не делает на этом ардуинки

я б по 5 покупал бы

Аватар пользователя Lokki
Lokki(9 лет 8 месяцев)

Там езернета нет.

С портами ввода-вывода как-то неолнозначно, я когда цпецификацию смотрел, не очень впечатлился, хотя, вроде, всё на месте. Не помню уже.

Хотя чип навороченный.

Аватар пользователя дзядзька Хведар

езернет на ембедовщине - как ракетный двигатель на телеге смотрится

ембедовщина не имеет потоковых данных - она единицами -десятками байт обменивается

в езернете служебных байт в пакете больше чем трафик эмбедовщины

а вот ножками дрыгать ацп цапы и писать все это если не на си то даже на питоне - ваще ляпота

и всего за пригорошню долларов банкет

 

 

Аватар пользователя Lokki
Lokki(9 лет 8 месяцев)
Display Engine
● Support four layers overlay, each layer size up to 2048x2048 pixels
● Support Alpha blending / color key
● Support multi-format input formats
                                      1/2/4/8/16/32 bpp color
                                      YUV444/YUV422/YUV420/YUV411
● Support hardware cursor
● Support scaling function for one layer
                                     ARGB8888/YUV444/YUV420/YUV422/YUV411
                                     Input and output size up to 1280x720 pixels
                                     Resize ratio from 1/16X to 32X
                                     4-tap 32-phase anti-aliasing filter in horizontal and vertical direction
                                     Scaler supports write-back to memory function
Display Output
● LCD RGB interface, TTL interface, up to 1280x720@60fps
● LCD Serial RGB interface, CCIR656 interface, up to 720x576@60fps
● LCD i8080 interface with 18/16/9/8 bit, up to 800x480@60fps
● LCD Dither function, support RGB666/RGB565 interface
● TV CVBS output, support NTSC/PAL, with auto plug detecting
 
 
На фоне этого богатства, даже пара тройка 100 Мбит не особо напрягут.
Аватар пользователя дзядзька Хведар

1 экраны в эмбедке - не частый гость

2 обмен с дисплеями еще со времен 580 для которого был выдуман пдп и контроллеры дисплеев ака вг75 вв79 - ваще не напряг - поскольку вся инфа идет не напрягая алу

3 вдуть в проводник частоты выше 30 мгц - уже проблема - для эмбедки хватает 1 м-10 мгц - выше крыши. а если работает тока с механикой - то и 1 кгц хватает

4 по этой причине иметь ядро за 200-800 мгц которое работает с периферией на 1 мгц - удобно потому что можно писать на интерпретаторах типа питона и забыть про си

как жуткий сон

5 тспип - да не нужен он в эмбеке - он просто дико избыточен

подавляющее  число приборов в эмбедке живут на двупроводной линии

типа 485 - не нужен там толстый сетевой кабель !

можно конечно вайфай - но и всяких промышленных радио свистков до хрена

и их труднее ломать - в силу специфичности

6 в кристалле 3 уарта - вешай на них что хочешь