Как стать автором
Обновить

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K
Всего голосов 67: ↑64 и ↓3+87
Комментарии45

Комментарии 45

Друзья! Надеюсь материал вам был интересен. Сегодня чуть в нестандартное время публикуюсь т.к чуть просрочил публикацию

Интересная железка. Хотя и подходящая больше для коллекции. Всегда хотел заполучить инженерный образец какого-то телефона.

Интересно, реально ли на него портировать какой-то другой дистрибутив? Или в наличии только образы, без нужных исходников?

С такими платами всегда идет полный исходный код ОС. В случае 6410 - на дисках (WinCE + BSP + Platform Builder + документация).

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

Конкретно в этом случае, скорее всего, квалкомовское ядро в Android сборках и какое-то линаровское в Yocto (я бы предположил, что 4.4 или 4.9).

Без хейта и критики, но ссылки на железку не помешают. Только на мой взляд.
FEBRUARY 26, 2016 Variscite DART-SD410 Snapdragon 410 SoM Comes with WiFi 802.11 b/g/n, Bluetooth 4.1 & GPS
https://www.cnx-software.com/2016/02/26/variscite-dart-sd410-snapdragon-410-som-comes-with-wifi-802-11-bgn-bluetooth-4-1-gps/
DART-SD410 Evaluation Kits. Starter Kit и Development Kit
https://www.variscite.com/product/evaluation-kits/dart-sd410-kits/
DART-SD410 : Qualcomm Snapdragon 410
https://www.variscite.com/product/system-on-module-som/cortex-a53-krait/dart-sd410-qualcomm-snapdragon-410/
Android, Yocto, Debian Linaro, Ubuntu Linaro
https://variwiki.com/index.php?title=DART-SD410

Основой модема служит бейсбенд — специальный DSP-процессор со своей собственной прошивкой, который занимается измерением уровня сигнала, выбором вышки и коммуникацией с ней

Вообще, по сути это полноценный компьютер со своей ОС (обычно Nucleus RTOS), памятью, ПЗУ и контроллером периферии. Причём исходники и даже отдельные детали реализации прошивки распространяются под строжайшими NDA, даже производителям телефонов разработчики модемов их не выдают.

Все верно. Бсп смартфонов утекали, а вот исходный кол модемов - нет. Единственный опенсорс бейсбенд это калипсо и то реверснутый

Ну почему же, и исходники модемов утекали, и их даже порой можно собрать и запустить. На 400 снепе точно.

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

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

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

плюс, там скорее всего ЛЮТЕЙШИЙ говнокод, чтоб это хоть как-то работало, и такое выставлять, ну, просто опасно.

плюс, там скорее всего ЛЮТЕЙШИЙ говнокод, чтоб это хоть как-то работало, и такое выставлять, ну, просто опасно.

Не опасно а стыдно.

ну я 2-в-1 имел в виду, и стыдно, потому что потом всех причастных никуда не возьмут, и опасно - потому что там дыр скорее всего как в рыбацкой сети.

Есть неявное, но строгое требование FCC - открытый код не сертифицируется, и не просто отрытый код, даже чипы лочить нужно наглухо. Без этой сертификации "белый" рынок США и Европы закрыт... Зачем? Черт его знает. Во-первых, можно предположить, что код БС дыряв напрочь (почти стопроцентно так), и никто не хочет массы пентестеров и хакеров на инфраструктуре. Без исходников туда может влезть только самая элита, которой такое детское хулиганство не интересно. Да, есть слитые исходники, но они не сказать, чтобы полноценны... Во-вторых, в FCC имеют свой интерес крупные вендоры, которые через сертификацию имеют возможность выкинуть любого малого конкурента с рынка, не допустив его роста. Например, баттхерт от тех же баофенгов был очень велик - раньше такие рации продавали на два порядка дороже при сравнимом качестве...

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

Как человек регулярно сертифицирующий разное под в том числе и FCC имею сказать что есть огромный соблазн сделать прошивку чисто под тест и потом сменить когда сертификат получен. Потому что по-честному 90% китайцев фонит во всем диапазоне (особенно все типы switching power supply), в частности по этому FCC требует все лочить. А теории заговора потом.

на Радиосканнере была охрененная тема, москва, здание с диодной подсветкой. как только она загоралась - VHF умирал в радиусе километров. да, киловаттные китайские импульсники и диодные ленты в качестве охрененной антенны.

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

 как только она загоралась - VHF умирал в радиусе километров

Он с любого чиха умирает. А уж такой мощи свистящий импульсник заглушит гарантированно.

ИЧСХ, китайские импульсники, подсветки, лампочки, и прочее добро из массмаркета пролетает FCC не глядя. Ну или часть сертификатов у китайцев фальшивые (взяли чужой банально - девас же нонейм), я хз. Такое дерьмо с логотипом FCC попадалось...

или на сертификацию отправляли собранную по всем правилам, а потом "уведомление об изменении конструкции без изменения параметров" и все ферриты с катушками нахрен, ибо их паять надо руками, дорагааааааа ©

Там можно заказать прям сразу с "сертификацией", какую надо такую Дядюшка Ляо прилепит. Мне как раз месяца два назад принесли такое - не проходит сертификацию в Канаде (то же FCC с другой аббревиатурой). "Но как же так!?" - спрашивает клиент, - "Мне партнер из Китая прислал результаты - все было ОК". Открываю результаты и тут прекрасно: на графике четко видно что пик излучения за пределами. В таблице честно посчитано что превышает на 16 dB что ли, а в колонке Статус - PASS! Я оценил. А потом начинается огород с фильтрами, понижением мощности... я как Остап Бендер тоже знаю 400 сравнительно честных способов пройти FCC - большая часть из них, конечна, связана с созданием клетки Фарадея внутри устройства. Краска с никелем и алюминиевая москитная сетка (с идеальным шагом ложащаяся на LED панели) - верхушка айсберга. Но в тот раз клиент с китайским партнером куда-то испарились.

справедливости ради, баофенги все и правда лютейшее говно с точки зрения ЭМИ и общего качества.
в той же швейцарии у OFCOM запрет на ввоз, продажу и использование чуть ли не всего подряд на RDA, например.

впрочем, и как принимающий тракт там тоже хрень полная, но это уже FCC вряд ли волнует так сильно.

В целом неплохой материал.

У SoC которые ставят в мобильные устройства, например от Mediatek, Unisoc, Rockchip, упомянутый Qualcomm - много скрытой от программистов периферии (Это не только Baseband, BT, Wifi). А так же не полная документация, не полная карта регистров. Все что можно обложено бинарными блобами (Например настройка DDR-контроллера под определенные "Одобренные" микросхемы памяти)

Подобные SoC для мобильных устройств, чаще всего могут грузиться только с eMMC, и больше ни с чего. Встроенный загрузчик в ПЗУ в отличие от каких-нибудь МК или SoC для промышленного применения, довольно больших размеров, и умеет поднимать целый USB-интерфейс для общения по нему с конкретно утилитой от вендора, которая не всегда позволяет делать все, что хочется (Например медиатек).

Чипы для одноплатников все-таки больше похожи на MPU/MCU, у которых в корне другой подход - продать больше самих чипов и там часто вся документация открыта (Нет чувствительных технологий по типу всего этого Radio и LTE), хотя на MCU например к частям BT (Если он встроен в МК) доступа в плане исходников или полноценной документации тоже нет.

В целом, портировать или запустить какую-то ос не с поставки вендора, весьма трудно т.к. отсутствуют драйвера и т.п., их обычно пишет под андроид сам вендор, потом берет AOSP, слепляет два куска, и получается Андроид на ОЕМ девайсе который потом предлагается всем подряд, часто там какие-нибудь условные Xiaomi обои меняют (Свой личный неповторимый андроид-ui) и позиционируется как "свое" устройство.

Сейчас BootROM, способные поднимать USB-стек, становятся всё более частым явлением даже в микроконтроллерах.

Например, у RP2040 из коробки идёт BootROM с поддержкой UF2 - режима прошивки на основе USB MSD. У STM32 в новых линейках чипов BootROM поддерживает USB DFU. А у ESP32-C3 есть "хардовый" USB-контроллер, на аппаратном уровне реализующий USB-UART и USB-JTAG.

А так же не полная документация, не полная карта регистров

Вот здесь верно. Особенно сильно это касается GPU (не путать с контроллером дисплея и аппаратным 2D-ускорением): почему-то вендоры усиленно прячут плюшки их видеоускорителей. С другой стороны, под VideoCore IV, например, программировать в Bare Metal не так уж и сложно.

Например настройка DDR-контроллера под определенные "Одобренные" микросхемы памяти

А вот это неправда. У МТК в до-бутербродные времена был отдельный csv в системе сборки, который описывал поддерживаемые CID флэш памяти с настройками ддр контроллера. Ничего не мешало свапать прелоадеры с других устройств и даже апгрейдить ОЗУ.

Подобные SoC для мобильных устройств, чаще всего могут грузиться только с eMMC, и больше ни с чего

Тоже неправда. Квалк умеет грузится с сд при наличии фьюза и через юсб, если упал в 9008. У аллвиннера есть FEL, у рокчипа тоже что-то свое, а вот мтк и юнисок грузится с сд действительно не умеет.

Чипы для одноплатников все-таки больше похожи на MPU/MCU

Ну это зависит от самого одноплатника, конечно. Ваш пример хорошо подходит к аллвиннерам и особенно свеженьким v3s и f1c100s/f1c200s. Они не очень шустрые, но достаточно мощные для выполнения многих задач и доки на них свободно распространяются. В некоторой степени это касается и Broadcom.

Странно что Marvel PXA не видно.

Найти бы для последней платформы. Мне (как любителю КПК) было бы очень интересно посмотреть на подобную отладочную плату для коммуникатора под Windows Mobile.

Для PXA когда-то были, сейчас не найдшь. Ссылку на S3C6410 с винсе скинул в лчику в тг

f1c100s/f1c200s

доки на них свободно распространяются

Это те-то "доки" с confidential поперёк документа, где кроме абсолютного минимума ничего нет? Пытался как-то раз запустить больше одного чипселекта на SPI - нифига. В "доках" даже на распиновке его нет, проверить, верные ли адреса в ядре вбиты, просто неоткуда.

Подобные SoC для мобильных устройств, чаще всего могут грузиться только с eMMC, и больше ни с чего

У Mediatek и Unisoc есть загрузка через USB. И у Rockchip есть, но это не просто.

Встроенный загрузчик в ПЗУ

И реализована прямо в ROM чипа. У Rockchip легко доступный загрузчик таки в ПЗУ, а в maskrom (что из ROM чипа) режим сложно зайти, нужно замыкать нужные контакты, которые не всегда найдёшь на постоянно изменяющихся разводках плат.

и умеет поднимать целый USB-интерфейс для общения по нему с конкретно
утилитой от вендора, которая не всегда позволяет делать все, что хочется
(Например медиатек).

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

SD410 не запускали, мимо не пробегал. Для db410c (тот же чип) есть и Debian сборки (https://snapshots.linaro.org/member-builds/qcomlt/debian/arm64/) и Yocto (https://snapshots.linaro.org/member-builds/qcomlt/boards/qcom-armv8a/openembedded/master/94993/). Будет желание запустить что-то новее чем сборка 2016 года, обращайтесь, попробую подсказать. Если там какая-нибудь стандартная панелька, должно быть не особо сложно даже графику поднять.

Про PXA. Мимо меня когда-то пробегал Mainstone (PXA270), мы на нем тестировали сборки Debian. Девкит интересный и красивый, но уж больно со временем стал глючным. В принципе они изредка пробегают на eBay. Если хочется поразвлекаться с Linux на железе того времени, возможно, проще отловить Sharp Zaurus (только не SL5000/5500/5600), на них был нативный Linux от изготовителя и потом их долго поддерживали энтузиасты

У 410 вроде неплохая поддержка в мейнлайне есть.

Так я и дал ссылки на сборки на мейнлайне (вернее на LTS).

Да, шарп мечта. На линуксе есть и n900/n800 и еще много крутых девайсов, включай umpc.

Девкит на pxa пока не видел

n770/n800/n900 как-то мимо меня прошли. Intel MID был в руках, но как-то не впечатлил.

Шарпы есть на авито, но CL-3200 стоит каких-то безумных денег (хотя это действительно раритет и самая сильная модель), а SL-5600 -- это довольно странный девайс. Он работал и довольно приятно, но был с мелкими глюками, например там с полярностью пинов на сериальнике были проблемы.

PXA встречается на просторах мироздания. И даже объявление не снято с продажи. Попробуйте поискать посредника или просто знакомых, кто поможет.

Да, вот еще девкит, на PXA250 (одна из первых вырсий чипа). Если получится получить Mainstone или Lubbock (или мало ли Assabet), пингуйте, у меня от них какая-то документация до сих пор лежит,

И никто не написал про Hexagon: у многих чипов Qualcomm (возможно у всех новых) есть DSP на архитектуре VLIW под названием Hexagon. Причём и не один, для модема, для аудио, на дорогих моделях еще один с HVX (Hexagon Vector eXtension) расширением, в котором 1024-бит вектора (больше чем в AVX-512 у Интела!). Чтобы его программировать - нужен SDK от Qualcomm, можно скачать после бесплатной регистрации на сайте для разработчиков. На старых моделях чипов доступ к DSP закрыт (нужно получать ключ для анлока от Квалкома, который был привязан к серийнику аппарата, а значит работал ровно для одного телефона), но был хак freethedsp для получения доступа.

У меня есть догадки почему доступ к DSP был ограничен, по опыту программирования сложилось впечатление что DSP имеет полный доступ ко всей системе, ошибки в коде для DSP часто приводили к зависанию системы. Возможно DSP не имел MMU и имел прямой доступ к памяти. Что не только неудобства, если разработчик допустил ошибку в коде для DSP, но и лазейка для троянов, для получения полного доступа над устройством. Скорее всего доступ открыли после того как в DSP добавили ограничения доступа к системе для пользовательских программ.

Да, хорошее замечание. Дсп очень интересен.

Скорее всего.

Это как мультипроцессорная система, где мастер DSP, с прямым доступом ко всему полю памяти. Т.е. обычный проц просто указывает там данные и ставит флаг, ДСП блокирует остальные процы в данной части и творит.

410-ый можно до сих пор встретить в дешовых китайских 4G модемах (которые являются хорошо замаскированными Android телефонами). Есть даже некоторое количество альтернативных прошивок для них - в частности с Debian и OpenWRT. Камень неплохо поддерживается современным ядром.

Но, к сожалению, его время давно прошло. Сегодня он почти не интересен. Как Bare Mеtal все так же плохо документирован, как носитель операционной системы по современным меркам не обладает достаточными вычислительными ресурсами. Да и доступность его вызывает некоторые сомнения (как и чипов-компаньонов типа PMIC или классической для тех времен связки в одном корпусе eMMC + DRAM).

У квалков есть один железный аргумент для DIY: Adreno. Даже в относительно бюджетном 410ом, гпу очень шустренький.

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

Еммс еще выпускают Barun и Foresee, КП потенциально меняется на набор DC-DC на VCore, Vio, Ddr и т.п, но вот сам чип... да, проблема найти.

Был у мен проект для квалкома (смарт-часы) И девкит подобный был. От проекта остались ужансые воспоминания. И система сборки и код, и исполнение самого девкита - лютый ужас. К основному чипу идет сопроцессор на котором работает wifi, bt и прочая переферия.

На сопроцессоре своя RTOS и ужаснейший код, и неудобная иситема сборки. В исходниках есть тонны мервого кода, некоторые драйвера прсутствуют 2-3 раза причем один экземпляр рабочий а два других - мертвые. Что такое нормальный HAL они не знают. Если они на девките используют GPIO59 как прерыевание для акселерометра то это будет прибито гвоздями и во всей документации и в коде. Причем это прерывание в принципе можно перенести на ногу 53 или на любую другую но не поменяв одну цифру в device tree или в какой-нибудь таблице, как у нормальных людей, а методом тыка. С андроидом и его чипом не так все печально, хотя андроид разработчик возмущался, как там можно испортить AOSP.

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

Я разрабатываю BSP для новых Pixel смартфонов, у нас дев плата раза в 4 больше и SoC в панельке стоит, которая каких-то бешеных денег стоит.

Нифига се вы крутой. А можете, пожалуйста, побольше деталей рассказать, которые не под NDA? Или может что-то сможете рассказать о смартфонах времен Nexus или прошлых пикселей?

Я с Nexus не работал, начал с SoC которые потом пошли в Pixel 8 и Pixel 9. Для них я делал pre и post silicon bringup. Т.е. я запускал Андроид на SoC которые еще в производство не ушли. Это делается на эмуляторах, где загрузка в Андроид занимает часа 3, а один кадр рендерится минут 10.
Сейчас отвечаю за low speed IO в ядре линукса для SoC который пойдет после Pixel 9. Но рассказать тут действительно практически ничего нельзя :(

Круто! Спасибо

а мне как раз по предыдущим статья стало любопытно: есть ведь девкиты и под китайские кнопочники с 2G и java

Их никогда не видел(

Если девборды есть даже для чипов использующихся в "смарт" браслетах за 200-300р., то и для кнопочных есть.

Например, нагуглил девборду для Mediatek MT6260 (aka Fernvale).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий