Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Общие знания по Linux/ARM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > Образование в области электроники
RadiatoR
Всем доброго дня.
Около года назад вооружился платкой DE0-nano-SOC с cortex-a9 на борту. С тех пор при не особо резвом курении платки удалось помигать светодиодом на HPS, потестить периферию.
В процессе курения у меня вылезла куча вопросов, аля:
  1. Линукс, работа в нем, его сборка и прочее
  2. Компиляторы, линковщики и прочие утилиты которые я знаю только по названию и тому, зачем они нужны
  3. Make файлы, scatter файлы и прочие файлы, необходимые для сборки чего-либо.
  4. Процесс создания ПО на такого рода ядра (cortex-axx) в большинстве случаев выглядит как "скачиваем -> make -> заливаем бинарник на флешку -> вуаля, линукс забутился". Не совсем ясен процесс создания например чистого baremetal приложения (с помощью него я уже помигал светиком, но за основу брался GoldRef) с нуля.
  5. Заливку бинарника на флешку, файловые системы, благо более менее понял.
  6. Какое-то время назад узнал, что, например андроид можно собрать только под линуксом - непонятно почему.
Пытаясь разобраться в чем-то одном - всё начинает ссылаться друг на друга и получается туда-сюда, в голове все сразу не укладывается, да и тяжело скакать по темам.

В общем есть большая пропасть, а вместе с ней есть вопрос - есть ли какая-то общая точка входа по изучению этих вопросов (полагаю все крутится именно вокруг самого линкуса)? Или какого-то общего описания нету и придется все по кусочкам изучать?

Спасибо.
Jury093
Цитата(RadiatoR @ Mar 13 2018, 22:21) *
В процессе курения у меня вылезла куча вопросов, аля:

https://habrahabr.ru/company/metrotek/blog/235707/
по ссылке накрываете пункты 1 и 2

3. без понятия зачем это нужно
4. тут изредка выплывают бареметалщики, видимо чего-то пилят
5. это по ссылке выше
6. а под чем же его еще собирать? и главное зачем? да, существуют коммерческие предложения сборки андроида для SoC, там основная фишка даже не видеоинтерфейс (а в SoC его просто нет), а графическая турбина + поддержка в драйвере. иначе андроид превратится просто в слайдшоу при процовой отрисовке

Цитата
Или какого-то общего описания нету и придется все по кусочкам изучать?

а там по другому и не бывает, тихо радуйтесь, если дока найдется, и просто праздник, если не стухла и подойдет..
RadiatoR
6. Так в том то и вопрос - почему его нельзя собрать, например в винде. Компилятор есть, что не так то...
(кстати по поводу для чего - у нас на работе для некоторых целей используется в данный момент обычный китайский планшет к которому приделан переходник SPI->CAN, так как хардварного CAN нету в проце (rockchip какой-то). Работа самого SPI осуществляется из операционки, что тормознуто. Вот и хочется сделать нормальную оболочку (драйвер) для переходника и, более того, собрать свою платформу на одной плате в нормальном корпусе, а не сопливую железяку, как сейчас).

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

Вообще из всего этого непонятным больше всего остается даже не сама ось и работа в ней и не ее сборка, а все те makefile, scatter file и подобные + настройки среды для компиляции какого-либо кода
Эдди
Все в линуксе понятно, есть гайды для разработчиков ядра. Единственный косяк — Линуса последнее время как будто бы терзает что-то, и он версии ядра уж совсем зачастил обновлять. Эдак психанут разработчики железа и перестанут линукс поддерживать!
Насчет ондроеда — это не совсем линукс! Там есть базовый огрызок от линуксового ядра, но подавляющая часть модулей — проприетарщина, исходных кодов которой вы не увидите. Да и сам принцип ондроеда: натянуть на нижний уровень жабу и в ней все делать — тупиковый путь, это только для игрушек годится.
Лучше вместо планшета возьмите полноценный ноутбук, куда поставьте полноценный линукс. Ондроед — удел игрушек, ничего серьезного с его помощью не сделать.
Цитата
все те makefile

Понять, как писать Makefile, можно буквально за пару дней. Читайте литературу. Но писать Makefile руками стоит лишь для всякой примитивщины. Для более сложных вещей уже руками не попишешь. То же ядро использует свою систему; кому-то нравятся тормозные автотулсы, мне лично нравится cmake, есть еще более новые системы для генерирования Makefile'ов.
Jury093
Цитата(RadiatoR @ Mar 14 2018, 08:19) *
6. Так в том то и вопрос - почему его нельзя собрать, например в винде. Компилятор есть, что не так то...

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

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

к вопросу о вышеупомянутом SoC, если я правильно помню, то в среде Quartus и Co под винду можно сгенерить вплоть до u-boot без всяких линуксов, т.е. ваш стендалоне вполне тоже можно сделать не погружаясь в линуксы

(чуть в сторону) если честно, я не очень понимаю тенденцию брать FPGA+ARM в одном кузове и пилить туда бареметал, делая восход солнца вручную..
aaarrr
Цитата(Jury093 @ Mar 14 2018, 14:48) *
...под виндой ставиться виртуалка, в качестве гостевой любой простецкий линукс и вперед, на сборку в нативной среде..

16Гбайт оперативки нужно для сборки седьмого андроида. Под виртуалкой я бы не советовал
Jury093
Цитата(aaarrr @ Mar 14 2018, 14:58) *
16Гбайт оперативки нужно для сборки седьмого андроида. Под виртуалкой я бы не советовал

16Г на текущий момент невелика цифра, доставить памяти много денег не потребуется
в свое время собирал 4.3 jelly из спортивного интереса под виртуалкой, 4Г памяти.. пару раз падало из-за выедаемой оперативки, но таки собралось, для imx6:



сборка андроида, занятие скучное и неинтересное, да и бессмысленное..
RadiatoR
Цитата(Jury093 @ Mar 14 2018, 14:48) *
на мой взгляд, это нормально - с какого перепугу линуксовые проги должны собираться в чуждой операционке-конкуренте?
достаточно того, что существуют порты приложений для запуска в венде..

просто не ясно что именно является препятствием...

Цитата(Jury093 @ Mar 14 2018, 14:48) *
к вопросу о вышеупомянутом SoC, если я правильно помню, то в среде Quartus и Co под винду можно сгенерить вплоть до u-boot без всяких линуксов, т.е. ваш стендалоне вполне тоже можно сделать не погружаясь в линуксы

(чуть в сторону) если честно, я не очень понимаю тенденцию брать FPGA+ARM в одном кузове и пилить туда бареметал, делая восход солнца вручную..

Так я выше написал, что на HPS сделал бареметал, но он был по голдрефу.
Не придерживаюсь какой-либо тенденции. Просто хочу изучить и ПЛИС и ARM процы и их связку. Если с ПЛИС порядком попроще и порог входа поменьше (в сети достаточно много примеров всех мастей), то с микропроцессорами обстоит дело сложнее. По крайней мере для меня, т.к. в основном работа связана только с программированием либо на микроконтроллерах (опять же из готовой, настроенной среды), либо для десктопа (утилиты для работы с девайсами на C#). Так и выходит, что процессоры никогда не затрагивал. Для саморазвития, тем более в наше время с их тотальным заполнением считаю необходимым. При этом не просто уметь скомпилить и залить что-то готовое, но и самому разобраться в недрах процесса создания ПО с 0, его граблей и прочего...

В общем я понял - начну курить про сборку + использование линукса, а там по дороге зацеплю и всякие makefile...
andrew_b
Цитата(RadiatoR @ Mar 14 2018, 16:37) *
просто не ясно что именно является препятствием...
Одним из препятствий является использование символических ссылок, отсутствующих в NTFS.
Эдди
Цитата(andrew_b @ Mar 14 2018, 16:44) *
Одним из препятствий является использование символических ссылок, отсутствующих в NTFS.

Нет, в NTFS симлинки есть (вот насчет хардлинков не скажу). Проблема не в симлинках, а в правах доступа! Точнее, даже так: проблема в том, что в линуксе нет официальной поддержки NTFS — либо readonly, либо через fuse на свой страх и риск. И не факт, что все возможности NTFS этот fuse-модуль реализует (не проверял, мне это нафиг не нужно).
Jury093
Цитата(RadiatoR @ Mar 14 2018, 16:37) *
просто не ясно что именно является препятствием...

неохота влезать в эти бессмысленные войны, но кто будет этим заниматься? майкрософт - ей это не нужно, чистая поддержка конкурента.. линуксоиды? а кто им даст исходники платной операционки? а под какую версию делать 7, 8, 10, 15?
как выше написали, даже поддержать NTFS венды не могут полноценно, видимо нет полноценной доки..

Цитата
Не придерживаюсь какой-либо тенденции. Просто хочу изучить и ПЛИС и ARM процы и их связку. Если с ПЛИС порядком попроще и порог входа поменьше (в сети достаточно много примеров всех мастей), то с микропроцессорами обстоит дело сложнее. По крайней мере для меня, т.к. в основном работа связана только с программированием либо на микроконтроллерах (опять же из готовой, настроенной среды), либо для десктопа (утилиты для работы с девайсами на C#). Так и выходит, что процессоры никогда не затрагивал. Для саморазвития, тем более в наше время с их тотальным заполнением считаю необходимым. При этом не просто уметь скомпилить и залить что-то готовое, но и самому разобраться в недрах процесса создания ПО с 0, его граблей и прочего...

всегда полезно почитать и поизучать, особенно если в дальнейшем пригодится..
я стараюсь получить ключевые бинарники из исходников, начиная от прелоадера и до драйвером, ну и рутовую свою сгенеренную, чоуж мелочиться..
в бареметал на SoC должен быть какой-то скрытый смысл, иначе проще взять обычную ФПГА и к ней прикруть хоть stm32, благо их дофига разных.. но сильной стороной HPS под линукс будет коммуникативные возможности (терминалы, сеть, юсб) и шустрый интерфейс с фпга
успехов в освоение!

PS у бареметал, в силу закрытости разработки, есть очевидные минусы, помимо потраченных сил - изобретение велосипедов с нуля (для поддержки стандартных протоколов и интерфейсов) и куча багов, которые в опенсорс вылавливает сообщество..
andrew_b
Цитата(Эдди @ Mar 14 2018, 17:52) *
Нет, в NTFS симлинки есть (вот насчет хардлинков не скажу).
Одной из проблем кросс-компиляции ядра Линукса в Венде было (наверное, до сих пор и есть) как раз использование в дереве исходников ядра символических ссылок. И это не то же самое, что ссылки в NTFS.
Или нет, не ссылок, а файлов с именами в разном регистре. Не помню уже, давно, славабогу, было.

Цитата
проблема в том, что в линуксе нет официальной поддержки NTFS
При чём тут поддержка NTFS в Линуксе, если речь идёт о компиляции софта в Венде.
Эдди
При чем здесь регистры? Это в NTFS тоже нормально работает. Единственная проблема — разные типы прав доступа. Ну как в мастдайке сделать chmod 755?
Но есть другой вариант размещения линукса на чужеродных ФС: загоняем все в архив, который на стадии загрузки разворачивается в оперативку, и в /dev/shm получаем нормальный нативный корень. Понятно, что компиляции это тоже никак не поможет.

Кстати, а зачем вообще может возникнуть мысль компилировать хоть тот же андроид из-под венды? Вы еще попробуйте игровую приставку в сервер превратить...
RadiatoR
Да нету необходимости =). Просто коллега озвучил это и мне стало интересно что такого может препятствовать.
andrew_b
Цитата(Эдди @ Mar 15 2018, 08:04) *
При чем здесь регистры? Это в NTFS тоже нормально работает.
Ну создайте в одном каталоге файлы ZZZZ и zzzz и доложите о результате.
Эдди
Проверить не могу, к сожалению:
Код
dd if=/dev/zero of=/tmp/fs bs=4k count=100
mkfs.ntfs /tmp/fs
/tmp/fs is not a block device.
Refusing to make a filesystem here!

Читайте: NTFS чувствительна к регистру, т.е. можно создать файлы xXXx, XxxX и XXxx — и это будут разные файлы! Выкиньте уже свою мастдайку!
mantech
Цитата(Jury093 @ Mar 14 2018, 19:24) *
PS у бареметал, в силу закрытости разработки, есть очевидные минусы, помимо потраченных сил - изобретение велосипедов с нуля (для поддержки стандартных протоколов и интерфейсов) и куча багов, которые в опенсорс вылавливает сообщество..


Скажем так, с нуля тут тоже никто не изобретает, ибо на "правильные" чипы идет planform SDK, где уже практически на все железо есть драйвера, да, протоколы надо реализовывать, но большой сложности в этом нет.
А насчет кучи багов, которые якобы отлавливаются кем-то... Во первых, отлавливается то, что использует большинство, например сетевые стеки, ФС и т.д. Но в задачах, особенно нетривиальных, приходится писать свои драйвера, возможно протоколы и программы, и не на баше и пр. скриптах, а на чистом Си, как правило, и вот тут все куда хуже, надо знать все закоулки ОС, в которой будет работать программа, отлавливать те же глюки и никакое сообщество тут не поможет...
Просто в большинстве своем, на том же линуксе сделают какой-то скрипт, подсунут стандартный драйвер и ба, заработало...Так это типичный подход ардуинщика... А реально программировать на нем умеют единицы.

ЗЫ. Ну и сам столкнулся в свое время с проблемой. На сд-карте, кде была основная часть линуксовых файлов, с корневой ФС и т.д. У клиента слетела ФС, то-ли при отключении питания и происходила запись логов, то=ли еще что, но перестала загружаться система, клиент полный дуб в линуксе и вообще неуверенный пользователь ПК. Вот как мне ему объяснить все процессы восстановления линуксовой системы??? Проще приехать через пол-страны и сделать самому... Вот тогда и решил, что на сд-карте будет только бинарь программы, конфиг и все под фат32, которую можно использовать на любом компе. Проблема исчезла сама собой rolleyes.gif
aaarrr
Цитата(Эдди @ Mar 15 2018, 08:38) *
Проверить не могу, к сожалению:

Так loop device в помощь, только размер NTFS-раздела должен быть больше 1Мбайт.
Создает разные файлы. Как их видит и как работает с ними винда - не в курсе.
RadiatoR
Цитата(mantech @ Mar 15 2018, 11:24) *
Но в задачах, особенно нетривиальных, приходится писать свои драйвера, возможно протоколы и программы, и не на баше и пр. скриптах, а на чистом Си, как правило, и вот тут все куда хуже, надо знать все закоулки ОС, в которой будет работать программа, отлавливать те же глюки и никакое сообщество тут не поможет...
Просто в большинстве своем, на том же линуксе сделают какой-то скрипт, подсунут стандартный драйвер и ба, заработало...Так это типичный подход ардуинщика... А реально программировать на нем умеют единицы.


Я вот не умею пока что писать ни дрове, ни скрипты на ось (в данном случае у меня андроид и врядли это изменится). Поэтому и смотрю в сторону добавления обработки CAN шины внутри оси, более того реализовать наш протокол поднятый на шине и наверх уже давать удобный интерфейс по самому протоколу.
Возможно скриптами или чем-то еще это сделать гораздо проще, но я пока слабо разбираюсь в этом деле и не вижу решения.
Эдди
Цитата(aaarrr @ Mar 15 2018, 11:28) *
Так loop device в помощь, только размер NTFS-раздела должен быть больше 1Мбайт.

При чем здесь loop? Все остальные mkfs работают с файлами, а ntfs файл не хочет форматировать, сделал 2МБ, та же песня:
Код
dd if=/dev/zero of=mdtest bs=1k count=2048
mkfs.ntfs mdtest
mdtest is not a block device.
Refusing to make a filesystem here!


А, дурак я! Опцию '-F' надо было указать!
Код
mkfs.ntfs -F mdtest
...
mount -o loop mdtest 1
cd 1
>> Xxx
>> XxX
>> XXX
>> xxx
ls
xxx  Xxx  XxX  XXX

На всякий случай еще так:
Код
cd ..
umount 1
mount -o loop mdtest 1
ls 1
xxx  Xxx  XxX  XXX


Что и требовалось доказать! Но, как я говорил уже, даже в вики написано, что регистрозависимые имена!
andrew_b
Цитата(Эдди @ Mar 15 2018, 16:02) *
Что и требовалось доказать! Но, как я говорил уже, даже в вики написано, что регистрозависимые имена!
Если вы внимательно прочитаете то, что написано по вашей же ссылке на stackoverflow, то увидите:
Цитата
the case sensitivity of file opening or creation is mediated by the FILE_FLAG_POSIX_SEMANTICS flag passed to CreateFile.

Ну и кто тут у нас выставляет FILE_FLAG_POSIX_SEMANTICS?

Для чистоты эксперимента создайте в Линуксе tar с файлами с отличающимися регистром именами, и распакуйте его в Венде. Не на ntfs через fuse в Линуксе, а в самой что ни на есть нативной Венде.

Эдди
А нафиг мне эта ваша мастдайка сдалась?
Вопрос был о регистрозависимости имен файлов в NTFS, это так. А то, что вы пользуетесь каким-нибудь древним хрюнделем, где не поддерживается регистрозависимость имен файлов, — исключительно ваши проблемы!
Quasar
Цитата(Эдди @ Mar 15 2018, 16:28) *
А нафиг мне эта ваша мастдайка сдалась?
Вопрос был о регистрозависимости имен файлов в NTFS, это так. А то, что вы пользуетесь каким-нибудь древним хрюнделем, где не поддерживается регистрозависимость имен файлов, — исключительно ваши проблемы!


Такое ощущение, порой что с 16 летней школотой тут общаешься. Мастдайка...

Не поддерживает Windows разные регистры в названиях. NTFS поддерживает, а Win нет. Специально запустил вируталку чтобы заскриншотить.

Основная проблема в сборке ядра на Windows это регистрозависимые имена файлов.

Цитата(Quasar @ Mar 25 2018, 15:14) *
Специально запустил вируталку чтобы заскриншотить.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.