Kartu bisnis kuring ngajalankeun Linux

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

Kartu bisnis kuring ngajalankeun Linux
Bisa diklik

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

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

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

Как только я подумал об этом, я решил, что это было бы очень круто сделать. Я уже parantos katingal éléktronik kartu bisnis ka eta, и у них были различные интересные возможности, типа эмулирования флэш-карт, мигания лампочек или даже беспроводной передачи данных. Однако визитки с поддержкой Linux я не встречал.

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

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

Kartu bisnis kuring ngajalankeun 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, но всё равно выглядят хорошо.

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

Kartu bisnis kuring ngajalankeun Linux

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

Kartu bisnis kuring ngajalankeun Linux

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

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

Kartu bisnis kuring ngajalankeun Linux
Для удержания платы при нанесении пасты хорошо подходят другие платы

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

Kartu bisnis kuring ngajalankeun Linux
С этой партией я немного промахнулся, однако паяльная паста прощает ошибки, и всё собралось нормально

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

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

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

Komponén
harga

F1C100s
$1.42

PCB
$0.80

8 MB flash
$0.17

Все остальные компоненты
$0.49

dina total
$2.88

Естественно, есть ещё расходы, которые сложно рассчитать, типа доставки (поскольку она распределилась между компонентами, предназначенными для нескольких проектов). Однако для платы с поддержкой Linux это определённо весьма дёшево. Также эта разбивка даёт неплохое представление о том, почём обходится компаниям изготовление устройств самого нижнего ценового сегмента: можете быть уверены в том, что компаниям это обходится ещё дешевле, чем мне!

kasempetan

Что сказать? Карта загружает очень сильно обрезанный Linux за 6 секунд. Из-за форм-фактора и стоимости у карты нет I/O, сетевой поддержки, какого-то серьёзного объёма хранилища для запуска тяжёлых программ. Тем не менее, я сумел впихнуть в образ прошивки кучу всего интересного.

USB

С USB можно было придумать много чего интересного, но я выбрал самый простой вариант, чтобы у людей с большой вероятностью всё заработало, если они решат попробовать мою визитку. Linux позволяет карте вести себя как «устройство» с поддержкой Gadget Framework. Некоторые драйвера я брал из предыдущих проектов, включавших в себя этот процессор, поэтому у меня есть доступ ко всей функциональности платформы USB gadget framework. Я решил эмулировать заранее сгенерированный флэш-диск и дать доступ к оболочке по виртуальному последовательному порту.

Cangkang

После логина под пользователем root на последовательную консоль можно запускать следующие программы:

  • rogue: классическая для Unix приключенческая игра про подземелья;
  • 2048: простая игра в 2048 в консольном режиме;
  • fortune: вывод различных пафосных изречений. Я решил не включать сюда всю базу цитат, чтобы осталось место для других функций;
  • micropython: очень маленький интерпретатор Python.

Эмуляция Flash Drive

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

Если вам интересно посмотреть, что появляется на флэшке, то проще всего это сделать, ознакомившись с исходниками. Там лежит также несколько фотографий и моё резюме.

Sumberdaya

Sumber

Моё дерево Buildroot выложено на GitHub — thirtythreeforty/businesscard-linux. Там есть код генерации флэш-образа NOR, который устанавливается при помощи режима скачивания по USB у процессора. Там также есть все определения пакета для игр и других программ, которые я запихнул в Buildroot после того, как всё заработало. Если вы хотите использовать F1C100s в своём проекте, это станет отличной отправной точкой (не стесняйтесь задавать мне вопросы).
Kuring dipaké прекрасно исполненный проект 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 – платы разработки, которую я использовал для настройки софта.

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

Kartu bisnis kuring ngajalankeun Linux

kacindekan

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

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

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

sumber: www.habr.com

Tambahkeun komentar