LINUX.ORG.RU

Почему ARM/MIPS настолько проблемные? Или я что-то непонимаю?

 , , , ,


0

1

Технический вопрос: как можно организовать работу с ARM/MIPS устройствами (у меня 8 штук, все разные) без попоболи?

У x86 всё очень просто, совместимо, есть ACPI и другие API между железом и ОС. Всё нормально развивается и работает с полпинка в основном ведре.

У ARM/MIPS мейнлайн-ведром нормально поддерживается только малинка и ещё пара тестовых плат, которые вообще никакого отношения не имеют к реальным устройствам (ну может ещё пара нексусов и то только частично).

В *wrt и роутерами вообще лажа: изменения не переносятся в основное ядро, дрова тоже. В результате максимум можно скомпилять древнее ведро с нужными модулями. С другими устройствами часто тоже так.

Загрузка - тот же гемор: куча своих проприетарных загрузчиков, использующих вместо стандартной grub-схемы каталога с ведром, initrd и конфигом с модулями, какую-то дичь вроде запаковки kernel+initrd в какой-нибудь специфичный контейнер. Uboot тоже хорош: часто в основной ветке конкретное устройство не поддерживается (либо только начальная поддержка) и надо искать патченный uboot на конкретной модели. Но фиг с ним с uboot: один раз поставил и работает (обновление и добавление функций больше загрузки обычно не нужно), основное проблема с ядром.

Про поддержку графического ускорения (если на плате есть графический вывод) я вообще молчу: это просто трэш. В лучшем случае есть кривой opengl, а в худшем - тормозный фреймбуфер, который жопой писали.

С MIPS часто всё ещё хуже.

Ещё больше ситуация осложняется тем, что нигде не выкладывают tgz/контейнер/образ виртуалки с установленными нужными версиями софта, компиляторов, ядра и т.д. для конкретной железки. Если бы была такая практика, то поддерживать ARM/MIPS девайсы было бы куда проще.

С чем связана такая жопа в мире альтернативных процов? Или я что-то не понимаю, существует какой-нибудь форум, где пони, дружба, радуга и вообще ARM рулит?

x86 работает «с полпинка» только потому, что к нему самый большой интерес и патчи на ядро появляются еще до появления железа.

С дровами на видео - все проприетарно. И даже на радужном и понявом x86 открытые дрова часто проигрывают закрытым.

alexru ★★★★
()
Ответ на: комментарий от alexru

x86 работает «с полпинка» только потому, что к нему самый большой интерес и патчи на ядро появляются еще до появления железа.

расскажи мне про intel atom z3580 и atom x3 :)

ktk ★★★★
()
Ответ на: комментарий от ktk

В чём там проблема? На него есть openfirmware и поддержка в мейнлайне. То, что производитель юзает кривой биос - это уже другой вопрос.

mojomojonk
() автор топика
Ответ на: комментарий от alexru

С дровами на видео - все проприетарно. И даже на радужном и понявом x86 открытые дрова часто проигрывают закрытым.

Ну, знаете ли, ТАКОЙ уровень поддержки видео со стороны СПО как на amd/intel/nvidia меня устроил бы на все 100%.

mojomojonk
() автор топика
Ответ на: комментарий от registrant

проприетарщики, сэр

Дык я даже не прошу из бинарные дрова-блобы с говном (хрен с ним, с видео). Почему нельзя внести с мейнлайн говно из их ядер, которые доступны публично?

mojomojonk
() автор топика
Ответ на: комментарий от mojomojonk

Ну, знаете ли, ТАКОЙ уровень поддержки видео со стороны СПО как на amd/intel/nvidia меня устроил бы на все 100%.

Ну вот так когда больше народу будет использовать ARM, тогда и поддержка будет. Не все сразу.

alexru ★★★★
()
Ответ на: комментарий от mojomojonk

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

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

alexru ★★★★
()
Ответ на: комментарий от alexru

Почему линукс фоундейшен не выделят ресурсы на упрощение проталкивания? У них вполне себе есть деньги. Разве они не должен делать продукт лучше? Или проблема в том, что Торвальдс - мудак со своим мнением?

mojomojonk
() автор топика

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

для кучи устройств полная поддержка есть в апстриме тот же Marvell Kirkwood, RPi, etc.

SleepyKoala
()
Ответ на: комментарий от mojomojonk

я думаю продукт в этом случае arm плата и ее пропихиванием в ядро должны заниматься вендоры платы а не Линукса

SleepyKoala
()
Ответ на: комментарий от mojomojonk

Торвальдс следит за тем, чтобы все те маленькие помойки не слились в одну большую кучу. Ну и он лично в этом процессе не участвует.

Само ядро за последние несколько лет сделало огромные усилия по универсализации ядер. Один Device Tree чего стоит. Для многих вещей вполне достаточно подмены одного файлика для порта на новое железо.

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

alexru ★★★★
()
Ответ на: комментарий от mojomojonk

Почему нельзя внести с мейнлайн говно из их ядер

Почему нельзя, можно. Вноси.

t184256 ★★★★★
()

У x86 всё очень просто, совместимо, есть ACPI и другие API между железом и ОС.

Щаз. Если в девайсе с x86 нет привычного BIOS, да ещё и какие-нибудь вычурные мосты используются, или это очередной интелевский недоSoC - то дело обстоит гораздо хуже, чем на ARM'ах/MIPS'ах, на последних, хотя бы RAM и ttyS0 без особого шаманства работать начинают, а вот c x86 придётся долго и упорно разбираться, как же контроллер памяти и хотя бы PCI вообще запустить, если это не распространённый интель, на который доки есть, а какой-нибудь звездец от броадкома. Т.е. на x86 без BIOS можно получить тупо сферический процессор в вакууме, без RAM, без PCI, да вообще без всего, если не знаешь как инициализировать чипсет. Поэтому, кстати, у coreboot очень сильно ограниченный список поддерживаемых девайсов, при всём богатстве и ширпотребности моделей x86 железяк.

Любой ARM/MIPS элементарно заводится на ванильном ядре. Как минимум, RAM, последовательный порт и сеть будут работать без особого шаманства, ибо всё достаточно унифицировано и тщательно описано в документации на SoC.

В итоге, ванильное ядро несложно запустить на ARM/MIPS, даже без всякого u-boot, а вот с x86 всё гораздо хуже. Нет предоставленного производителем платы BIOS'а - ты аццки попал, и попал гораздо хуже чем с любым ARM/MIPS.

Проблемы на ARM/MIPS начинаются со всякой периферией, на которую нет документации, типа WiFi, GPU и прочей шняги. Далее, у конкретного SoC может быть 100500 GPIO ножек, и, например, выяснить без схемы девайса, какой из них и как управляется питание какой-нибудь сраной подсветки экрана может быть затруднительно. Но всё то же самое может быть и на x86, поэтому, тут архитектура вообще роли не играет. Если на x86 тебе понадобится завести какой-нибудь девайс, для которого есть только блоб под ядро 2.4, то с 2.4 ты и останешься даже на распрекрасном x86.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Эммм... Я не совсем понял, как так получается, что у x86 может не быть биоса, который инициализирует всё оборудование и передают ведру систему во взрослом состоянии. Насколько я помню, даже промышленное говно имеет хоть какой-то биос. То, что потом могут быть проблемы с дровами - да. Но ОСь то загрузится.

mojomojonk
() автор топика
Ответ на: комментарий от mojomojonk

Я не совсем понял, как так получается, что у x86 может не быть биоса,

На практике BIOS всегда есть, но это эквивалентно стандартным демо платам от производителя, для которых поддержка тоже всегда есть.

Но ОСь то загрузится.

Если сильно повезет.

alexru ★★★★
()
Последнее исправление: alexru (всего исправлений: 1)
Ответ на: комментарий от Stanson

Любой ARM/MIPS элементарно заводится на ванильном ядре.

Особенно когда сначала всё грузится видяхой, а потом уже управление на ARM передаётся.

devl547 ★★★★★
()

Потому что заточка под задачу и никакой стандартизации между производителями.

Плюс на x86 тебе не надо париться за DRAM-контроллер, за тебя это биос сделает.

А на арм/мипс всё ручками с матом и чтением шитодатов.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от mojomojonk

Мейнтейнер любой подсистемы - хрен со своим мнением, которое хрен оспоришь. Что приводит к более-менее приличному качеству кода.

Можешь попробовать написать патч, заслать в список рассылки, послушать как тебе расскажут что ты всё делаешь не тру, а надо по-другому, итерации на пятой может быть зайдёт. А может не зайдёт по религиозным причинам и дальше вроде и код нормальный, а вроде и непонятно. Чситай историю про Коливаса с BFS и например android binder/ION memory manager.

Короче, там «своя атмосфера».

Ну и время. У меня вот есть десяток патчей на опенврт которые мне занести в mainline не даёт только лень и нехватка времени.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от mojomojonk

считай что бивис это аналог u-boot идущий из коробки.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от mojomojonk

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

anonymous
()
Ответ на: комментарий от Dark_SavanT

суть та же

и у coreboot, redboot и u-boot'a тоже суть та же. инициализировать память и базовые подсистемы и запустить загрузчик.

ktk ★★★★
()
Ответ на: комментарий от CYB3R

Ну, тогда какие вопросы? На роутерах всё отвратительным образом анально огорожено.

как и везде.

ktk ★★★★
()
Ответ на: комментарий от mojomojonk

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

Видимо биосы нынче самозарождаются, да? Типа сделал материнку - опа, и возник сразу биос в ПЗУ.

Stanson ★★★★★
()
Ответ на: комментарий от devl547

Особенно когда сначала всё грузится видяхой, а потом уже управление на ARM передаётся.

Ну малинка - очень особенный уродец для мира ARM. Broadcom вообще извращенцы.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Видимо биосы нынче самозарождаются, да? Типа сделал материнку - опа, и возник сразу биос в ПЗУ.

Для пользователей пекарней и серверов всегда так было.

mojomojonk
() автор топика
Ответ на: комментарий от devl547

Особенно когда сначала всё грузится видяхой, а потом уже управление на ARM передаётся.

Реквестирую малиновые подробности.

mojomojonk
() автор топика
Ответ на: комментарий от mojomojonk

Для пользователей пекарней и серверов всегда так было.

Биос самозарождался в ПЗУ? Хрен там. Производитель материнки платил немеряные бабки производителю чипсета, производитель чипсета вставлял производителю мамки NDA по самое небалуйся и в итоге производитель материнки создавал BIOS/EFI для своей конкретной материнки. Если вдруг захочется кому-то на эту мамку возрузить coreboot (который фактически и есть укушенное линуксячье ядро), то у него нихрена не получится, потому как надо либо декомпилировать BIOS и разбираться что там за колдунство происходит, либо спереть исходники оного. Первое занимает очень много времени, второе затруднительно из-за тварей дрожащих подписавших сраное NDA и трясущихся за своё место работы.

Для ARM/MIPS же, обычно, достаточно просто прочесть документацию, чтобы правильно проинициализировать SoC и в самом худшем случае дописать несколько строк в u-boot или ядро, если u-boot не нужен.

Stanson ★★★★★
()

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

alt-x ★★★★★
()

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

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от mojomojonk

Может и не быть, а может быть и чудо производитель может заново изобрести PCI на своих костылях. Почитай про загрузку линукса на PS4.

Deleted
()

...как можно организовать работу с ARM/MIPS устройствами.... без попоболи?

Опыт, сударь, только опыт. Попробуй вспомнить свой первый опыт установки Линукса на свой родной десктоп. Куча проблем вроде «здесь не ставится», «там не пишется», «тут не запускается» и случайный снос таблицы разделов с последующим мучительным восстановлением в Norton Disk Destroyer.

Только начинать щупать ARM'ы с Малинки, наверное, не буду советовать — уж слишком это специфичная вещь, где многое упрощено и потому что-то делается нестандартно. Купи за полтинник у китайцев смартбук на проце от Вандермедиа — там всё стандартно: NOR, NAND, u-boot, возможна паршивка с SD-карты. И дисплей штатный имеется — не надо будет кабеля каждый раз перетыкать. Только там ttyS0 не распаян — придётся разобрать и подпаяться к нужным дыркам на плате. Разберёшься с одним ARM-ом, вкуришь — с другими станет легче. Да, под WM8650/8850/8880 Gentoo есть.

Потом, как наиграешься, смартбук можно будет использовать как алфавитно-цифровой терминал.

Uboot тоже хорош: часто в основной ветке конкретное устройство
не поддерживается (либо только начальная поддержка) и надо искать
патченный uboot на конкретной модели.

Ну так сходи на сайт производителя. Хотя что и где может не поддерживаться — обычно производители заинтересованы в том, чтобы всё поддерживалось. Или у тебя какая-то узкоспецифичная древняя обсолетная железка? Так подари её соседу по гаражу! :-)

Вообще, u-boot — это что-то гибридное, каГбэ lilo+BIOS в одном флаконе. Он инициализирует устройства, обеспечивает загрузку ОС, но при смене ядра его каждый раз надо переписывать. При загрузке с внешнего носителя (SD-карты) переписывать ничего не нужно, он ищет ядро на первом FAT-разделе.

Про поддержку графического ускорения (если на плате есть графический
вывод) я вообще молчу: это просто трэш.

На х86 15 лет назад был точно такой же трэш. Generic_VGA/VESA драйверы для XFree86 «видели» только заданное количество памяти, по дефолту 256кБ. Лечилось это или установкой поддерживаемой видеокарты, или пересборкой с правкой исходников. Вопрос о том, как всё это «быстро» работало, оставим за кадром. А сколько тогда видеокарт вообще работало в XFree86?

С MIPS часто всё ещё хуже.

А захерам оно тебе? Если, конечно, ты не собираешься проектировать маршрутизаторы или юзаешь какую-то китайчатину на этой архитектуре.

MIPS изначально кривая и убогая архитектура, в отличие от ARM, который начался как раз с десктопов (Acorn RISC PC). С тупейшим набором команд. Преимущество её в том, что она проста как две копейки и легко параллелится, поэтому у неё есть специфический узкий круг задач. Например, распихивать между портами сетевые пакеты. Её отдали китайцам — так ведь не жалко, пусть играются.

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

Вообще-то многие производители в DevKit'ах распространяют и тулчейны, и средства разработки, и дебаггеры.

С чем связана такая жопа в мире альтернативных процов?

Со свободой. Для лицензирования x86 существует куча жёстких требований, обусловленных большей частью запускаемостью Маздая. И лицензионными отчислениями Интелю, да. Для ARM таких жёстких требований нет. Для MIPS требования вообще почти отсутствуют, процы мипсовые делаются по принципу «как хошь — так и лепи».

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.