- PVSM.RU - https://www.pvsm.ru -

Как мы разработали девкит Librem 5 полностью на свободном ПО

Как мы разработали девкит Librem 5 полностью на свободном ПО - 1От переводчика: Librem 5 (на рендере) — защищённый смартфон под Linux от компании Purism, который создаётся на максимально открытом железе и софте за счёт краудфандинга [1].

Сегодня расскажем о разработке Librem 5 Developer Kit и о том, как мы использовали в его разработке только на 100% свободные программы.

Дизайн девкита опубликован на условиях лицензии GNU GPLv3+, аппаратный репозиторий Git лежит здесь [2].

KiCad — очевидный выбор EDA

Перед началом разработки было не совсем ясно, по какому пути разрабатывать проект. В частности, какой инструмент выбрать для автоматизации проектирования электроники (EDA) [3]. Изначально идея состояла в изменении платы i.MX 6QP OpenRex от FEDEVEL для соответствия всем требованиям к девкиту, но мы сразу столкнулись с двумя основными проблемами: там использовался архаичный процессор i.MX 6QP, а ещё хуже, что плата была разработана в проприетарной системе Altium. К счастью, у меня уже был опыт проектирования электроники с помощью EDA KiCad, поэтому мы сумели создать дизайн девкита, используя на 100% свободное ПО.

KiCad — очевидный выбор не только из-за свободной лицензии (GNU GPLv3+), но и потому, что это очень функциональный набор для проектирования электроники, который превосходит даже некоторые дорогие проприетарные инструменты.

Выбор компонентов, удовлетворяющих требованиям

Первый шаг при разработке девкита — поиск компонентов, отвечающих требованиям, определённым в ходе кампании. Кроме соблюдения заявленных спецификаций, при поиске компонентов мы решили добавить несколько дополнительных наворотов; в том числе:

  • контроллер заряда (BQ25896)
  • держатель батареи 18650 для дополнительного литий-ионного аккумулятора
  • USB-C
  • mini-HDMI
  • контроллер карты SD и разъём micro-SD (поскольку у i.MX 8M только два контроллера uSDHC)
  • Ethernet/RJ45
  • аудиокодек
  • динамик для наушника
  • микрофон
  • 4-полюсный разъём CTIA/AHJ для наушников 3,5 мм (с выбором между встроенным и внешним микрофоном)
  • разъём и умный кардридер GPG
  • вибромотор
  • программируемый LED
  • кнопки громкости и питания
  • аппаратные выключатели и переключатель режима загрузки
  • флэш-память 16Mb SPI NOR
  • часы реального времени (RTC)

Как и планировалось, мы добавили сквозные отверстия для отладочных контактов UART, которые по умолчанию не заняты (serial over USB работает на дефолтном образе, который поставляется с девкитом). Подсказка: если вы не любите паять, то хедеры поддерживают прессовую посадку, ищите номер детали Autosplice 23-1063. На плате предусмотрена опорная поверхность SMD 2×5 JTAG, а её функиональность проверена ещё на прототипе; если вам интересно поиграться, то ищите номер детали GRPB052VWQS-RC.

Для модема WWAN/baseband и WiFi+BT было ясно, что нужно найти какие-то готовые модули, например, с поверхностным креплением. На ранней стадии у Николь родилась блестящая идея использовать модули mPCIe и M.2, чтобы девкиты стали модульными, с возможностью апгрейда в будущем. В конце концов, мы остановились на модуле модема mPCIe SIMCom SIM7100A/E и модуле M.2 RedPine RS9116 Wi-Fi+BT.

Начало чертежа

По завершении фазы исследований следовало приступать к реализации наших идей. На рынке только появился процессор i.MX 8M Quad. Чтобы получить рывок со старта в разработке, а также добавить модульность и возможность будущих обновлений, мы выбрали вариант системы-на-модуле (SOM) [4], включающий SoC, SDRAM, eMMC и PMIC. Но даже на ранних стадиях развития, когда мы только начинали рисовать схемы, ещё не начался серийный выпуск некоторых из интересующих нас SOM. Примерно в середине апреля мы установили хорошие отношения с компанией EmCraft, которая только приступила к первому крупному производственному циклу SOM и была близка к выпуску спецификации аппаратной архитектуры. Мы решили, что SOM от EmCraft и их ресурсы — именно то, что нам нужно. Как только был выбран конкретный SOM, мы сразу приступили к чертежу схем.

Процесс выбора конкретных компонентов для девкита проводился одновременно с составлением схем. Все работы проводились в системе контроля версий Git.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 2
Рис. 1. Ранняя редакция схемы от 2 мая (хэш git-коммита 023915d5)

По завершении схем мы экспортировали файл netlist [5], что значительно приблизило нас к воплощению девкита в жизнь.

Моделирование HP_DET

Кроме KiCad, из свободного ПО мы ещё использовали инструмент под названием Qucs-S [6] и SPICE-совместимый инструмент эмуляции Xyce [7] для эмуляции микросхемы сенсора наушников, которая включает в себя стабилитрон для защиты соответствующего GPIO от слишком высокого или слишком низкого входного напряжения с выдачи HP DAC от аудиокодека. Сочетание Qucs-S и Xyce позволило использовать в микросхеме SPICE-модель диода MMSZ4688T1G [8], которая наилучшим образом представляет физическое состояние пустующего разъёма 3,5 мм с одновременно активным HP DAC.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 3
Рис. 2. Моделирование схемы HP_DET с помощью Qucs-S и Xyce

Эта имитация, а также простой случай DC, где внутренний переключатель разъёма 3,5 мм открыт и 1MΩ доходит только до дефолтного напряжения 3V3_P — это позволило убедиться, что конкретный метод защиты действительно работает.

Создание площадок

Примерно в середине июня мы завершили составление списка материалов (BOM) [9], начали размещать заказы на компоненты и стали создавать очертания всех площадок в устройстве (чипы, разъёмы, модули и т. д.). Мы взяли рекомендуемые характеристики из документации и четырежды проверили, что всё правильно.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 4
Рис. 3. Площадка контроллера заряда BQ25896 (U301 на dev-плате, находится под SOM)

В великолепном режиме 3D-просмотра KiCad мы создали трёхмерные очертания почти всех компонентов.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 5
Рис. 4. 3D-модель контроллера заряда BQ25896

Поуровневое планирование, разводка и обновление KiCad

На раннем этапе был составлен грубый поуровневый план [10], чтобы быстро прикинуть, какая площадь интегральной схемы будет задействована (90×180 мм) и куда поместить более крупные компоненты (разъёмы, гнёзда, слоты для карт, сокеты mPCIe и M.2, модули и т. д.). После размещения на макете некоторые детали ещё двигались, но быстро закрепились на конкретных местах.

В конце июня мы начали прокладывать разводку, начиная с USB-C (коммит a1bfc689). Это положило начало макетированию.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 6
Рис. 5. Первый коммит с разводкой

Как мы разработали девкит Librem 5 полностью на свободном ПО - 7
Рис. 6. Какой в итоге стала разводка USB-C

Как мы разработали девкит Librem 5 полностью на свободном ПО - 8
Рис. 7. Ранний вариант схемы до размещения компонентов и разводки

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

Изначально не было уверенности, сколько нужно слоёв и нужно ли размещать компоненты с обеих сторон платы. Мы знали, что на плате i.MX 8M восемь слоёв и компоненты с обеих сторон, но были уверены, что сможем сократить количество слоёв. Мы быстро поняли, что с обратной стороны платы обязательно придётся размещать компоненты, потому что на телефоне некоторые модули находятся на «задней» стороне платы (сторона дисплея), включая разъёмы дисплея, датчик приближения/света, программируемый светодиод, динамик и микрофон. Наличие компонентов с обеих сторон сделало процесс компоновки несколько проще, так как освободило немного места, где можно разместить флэш-память SPI NOR, кардридер, RTC, 2.8V LDO, различные ИС и другие компоненты. Что касается количества слоёв, мы решили сократить его до шести. Ещё два дополнительных слоя решили добавить, только если застрянем в тупике и не сможем проложить какие-то сети. К счастью, этого не произошло и остался дизайн с шестью слоями.

Мы решили использовать общую компоновку, которая обеспечивает оптимальный баланс между простотой разводки и сокращает непреднамеренные выбросы излучения. В качестве диэлектрической подложки взяли слоистый пластик с медной фольгой NP-180TL от NAN YA, у которого относительная диэлектрическая проницаемость около 4,11 при нашей средней рабочей частоте около 1,7 ГГц. Наши расчёты питающей линии RF для микрополосковых и копланарных волноводных питающих линий платы (CPW) с использованием такой компоновки можно найти в репозитории Git.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 9
Рис. 8: Схема слоёв девкита

Перед реализацией девкита в KiCad мы не знали, выпускать альфа-версии или придерживаться классических более стабильных релизов типа 4.0.7. Хотя у «ночных сборок» есть несколько полезных особенностей, мы всё-таки решили придерживаться стабильных релизов, чтобы не приходилось часто обновлять KiCad и рисковать появлением нескольких одновременных версий.

Когда мы уже начали работу, вышла версия KiCad 5.0.0! 16 июля мы без особых проблем обновили проект до KiCad 5.0.0 (в частности, коммиты 4f70b865 и a4e3de8a). К счастью, это обновление совпало с переходом большинства наших пассивных компонентов с 0603 на 0402, так как новые площадки в KiCad немного отличаются от старых значений по умолчанию, а у площадок закругленные углы, более эффективные для бессвинцового припоя.

После обновления на 5.0.0 мы сосредоточились на макетировании — и в течение месяца (а именно, 14 августа с коммитом 9b4dd2e0) довели количество неразведённых сетей до нуля.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 10
Рис. 9: Релиз-кандидат от 14 августа с коммитом 9b4dd2e0 зафиксировал нулевое количество неразведённых сетей

После завершения разводки и проверки Design Rules Check (DRC) мы в течение недели наводили порядок в макете.

При макетировании платы самыми полезными ресурсами стали справочник по макетированию интегральных схем из официальной документации и Руководство по макетированию Toradex [11].

Как мы разработали девкит Librem 5 полностью на свободном ПО - 11
Рис. 10. Окончательный макет (области с медным покрытием скрыты)

Экспорт файлов и отправка на производство

После завершения макета нужно было экспортировать все файлы, необходимые для производства и сборки плат. Экспорт файлов Gerber [12] в KiCad осуществляется довольно просто. Однако, подрядчик запросил ещё схему и макет для сборки, что потребовало некоторых усилий.

Для предварительного просмотра файлов при экспорте мы обычно использовали Gerbv из gEDA. Вот как выглядит [13] наш девкит в Gerblook — этот инструмент применяет для веб-рендеринга Gerbv и ImageMagick.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 12
Рис. 11. Файлы Gerber девкита при просмотре в Gerbv

Для создания чертежа требуемого вида мы задействовали слои F.Fab/B.Fab. Они отображают местоположения, контуры, полярность и опорные обозначения всех компонентов на плате. С помощью слоёв F/B.Fab для каждой площадки нам удалось создать окончательный чертёж, распечатав F.Fab и B.Fab в отдельные файлы PDF, а затем объединив в один документ.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 13
Рис. 12. Схема со стороны SOM

Ещё больше пришлось потрудиться над схемой для производства. Чтобы её сделать, нужно было экспортировать заметки со слоя Cmts.User вместе с контуром платы как один архив DXF, а после этого экспортировать все метки для высверливания отверстий как другой архив DXF. После создания этих двух файлов они объединяются и в чертеже всей площадки (footprint). Получив этот особый “footprint”, который объединяет два файла DXF, мы почти всё в макете скрываем — и импортируем этот специальный футпринт «для завода» (без сохранения временного макета). На данный момент всё, что нужно, находится на слое Dwgs.User; поэтому можно распечатать его вместе с каркасом в окончательный PDF для производства.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 14
Рис. 13. Метки для высверливания отверстий

Вместе со всеми этими файлами и документами используется список соединений IPC-D-356, с помощью которого завод может провести тест по методу «летающего щупа» [14] и убедиться в отсутствии короткого замыкания или обрыва цепи. Также мы подготовили CSV-файл (чтобы на заводе знали, где размещать и как ориентировать все компоненты), и, наконец, вручную отредактированный файл GenCAD (для программирования заводского паяльного робота).

Испытания прототипов

Мы отправили окончательные файлы для производства, ответили на все вопросы подрядчика и изменили всё, что они попросили. Файлы были отправлены примерно в конце августа — и мы с нетерпением ждали, когда наш дизайн попадёт на конвейер в Шэньчжэне. К сожалению, как мы рассказывали в блоге [15], значительные задержки в производстве прототипов произошли из-за непредвиденных обстоятельств, таких как суровая погода и Золотая неделя [национальный праздник в Китае — прим. пер.]. Из-за этих задержек мы решили заказать производство прототипов на отечественном заводе, который доставил нам платы на две недели быстрее, чем китайцы.

Как мы разработали девкит Librem 5 полностью на свободном ПО - 15
Рис. 14. Прототип панели девкита v0.1.2 (перед сборкой)

После сборки небольшой партии прототипов их быстро прислали нашим инженерам для отладки и разработки программного обеспечения. К счастью, благодаря общественному обсуждению и всестороннему анализу дизайна, в аппаратной части оказалось очень мало ошибок (три относительно незначительные корректировки макета/списка сетей и одно механическое исправление). В течение следующих двух месяцев прототипы использовались для полировки ПО.

Окончательное производство и поставка

Примерно в начале-середине ноября, после внесения незначительных корректировок в дизайн и проверки [16] почти всех аппаратных подсистем, мы провели процедуру реэкспорта и повторно выпустили файлы для производства и окончательной сборки. Некоторые наши сотрудники провели 10-22 декабря, помогая со сборкой, тестированием, упаковкой и отправкой девкитов нашим бейкерам (многие доставили до Рождества!)

Как мы разработали девкит Librem 5 полностью на свободном ПО - 16
Рис. 15. Окончательный вид панели девкита v1.0.0 (до сборки)

Как мы разработали девкит Librem 5 полностью на свободном ПО - 17
Как мы разработали девкит Librem 5 полностью на свободном ПО - 18
Рис. 16. Полностью собранный девкит по сравнению с 3D-моделью (сторона дисплея)

Как мы разработали девкит Librem 5 полностью на свободном ПО - 19

Как мы разработали девкит Librem 5 полностью на свободном ПО - 20
Рис. 17. Полностью собранный девкит по сравнению с 3D-моделью (сторона SOM)

Весь процесс потребовал много усилий, но стоил того. Особенно когда мы увидели, как плодотворно сообщество может использовать результаты нашего труда. Некоторые уже начали разрабатывать 3D-печатные корпуса для девкита. Не терпится посмотреть, какое классное ПО и какие варианты использования вы придумаете для этих удивительных плат! Не стесняйтесь сообщать обо всех классных штуках по электронной почте на feedback@puri.sm. Если это действительно супер, мы расскажем о вашей разработке в будущих статьях блога.

Сейчас у нас всё время уходит на рассылку телефонов Librem 5. Так что до следующего раза, не теряйте находчивости!

Автор: m1rko

Источник [17]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/305205

Ссылки в тексте:

[1] за счёт краудфандинга: https://habr.com/post/370873/

[2] лежит здесь: https://source.puri.sm/Librem5/dvk-mx8m-bsb

[3] автоматизации проектирования электроники (EDA): https://en.wikipedia.org/wiki/Electronic_design_automation

[4] системы-на-модуле (SOM): https://en.wikipedia.org/wiki/System_on_module

[5] netlist: https://en.wikipedia.org/wiki/Netlist

[6] Qucs-S: https://ra3xdh.github.io/

[7] Xyce: https://xyce.sandia.gov/

[8] SPICE-модель диода MMSZ4688T1G: https://www.onsemi.com/PowerSolutions/supportDoc.do?type=models&rpn=MMSZ4688

[9] списка материалов (BOM): https://en.wikipedia.org/wiki/Bill_of_materials

[10] поуровневый план: https://en.wikipedia.org/wiki/Floorplan_(microelectronics)

[11] Руководство по макетированию Toradex: https://docs.toradex.com/102492-layout-design-guide.pdf

[12] файлов Gerber: https://en.wikipedia.org/wiki/Gerber_format

[13] Вот как выглядит: http://gerblook.org/pcb/rTgd4Aqusxr7XQLSdKa9V3

[14] тест по методу «летающего щупа»: https://en.wikipedia.org/wiki/Flying_probe

[15] рассказывали в блоге: https://puri.sm/posts/librem5-2018-11-hardware-report/

[16] проверки: https://developer.puri.sm/Librem5/Development_Environment/Boards/Known_Issues.html

[17] Источник: https://habr.com/post/436022/?utm_campaign=436022