Xenomai + LinuxCNC, EVL + LinuxCNC из исходников

Общие вопросы по операционным системам семейства Linux.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):RTPREEMPT и Xenomai могут использоваться одновременно
:thinking:

Как дела? Ошибки побороть удалось?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение Olej »

going писал(а):Как дела? Ошибки побороть удалось?
У меня, в силу личных обстоятельств, не было совершенно времени чем-либо вообще заниматься...
Но как только что новое проясниться, я тут же отпишу что и как.
Есть определённые соображения ... план:
- не указывать BuildRoot версию ядра для загрузки...
- а загрузить эту версию вручную + пропатчить её скриптом из Xenomai
- а для BuildRoot указать что ядро custom (есть у них такая альтернатива), без всякого патченья и т.д. - только вот взять по такому указанному пути.
Это должно сработать (потому что ARM вариант Xenomai Mercury таким образом безукоризненно собирается).
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):Это должно сработать
Интересно на ошибки в логе посмотреть и что там во время загузки на плате.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, arm64

Сообщение going »

Olej писал(а):Есть определённые соображения ... план:
План которого я придерживаюсь:
1. Собрать всё с ядром нужной версии (скажем 4.14.10).

2 Проверить загрузку платы, зафиксировать то что содержиться в собранном дереве объектов.
- На этом этапе ОС должна работать на плате.
- Весь функционал прописан в dtb и он должен соответсвовать коду ядра.

3 Попытаться собрать ядро ipipe
и библиотеки xenomai
https://xenomai.org/documentation/xenomai-3/html/man1/,
https://xenomai.org/documentation/xenom ... index.html,
анализируем ошибки лога сборки,
добавляем недостающие библиотеки, утилиты
(необходимые как для процесса сборки в систему, так и для работы xenomai на ARM)
и заголовочные файлы в пространство в котором работает тулчайн.
На этом этапе всё должно собираться без ошибок и предупреждений.

4 Далее открываем буквари для нашей платы, процессора,
руководство от Xenomai по портированию кода на новый ARM SOC (https://gitlab.denx.de/Xenomai/xenomai/ ... ew_Arm_SOC),
руководство по написанию кода дерева объектов и проверяем, исправляем дописываем.
(Т.е. править исходный код придётся однозначно)

while(true)
На этом этапе задаём глупые вопросы на форумах,
анализируем глупые ответы, кучкуемся в сообщеста по интересам.
Принимаем правильное решение и пытаемся загрузить плату.

Т.е. собрать какое либо ядро без ошибок и загрузить его - это две большие разницы.

5 Самый интересный этап - тестируем ядро реального времени.

Желаю всем, кто экспериментирует с этим железом успеха,
и все глупые вопросы пишите сюда.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение Olej »

going писал(а): План которого я придерживаюсь:
1. Собрать всё с ядром нужной версии (скажем 4.14.10).

2 Проверить загрузку платы, зафиксировать то что содержиться в собранном дереве объектов.
- На этом этапе ОС должна работать на плате.
- Весь функционал прописан в dtb и он должен соответсвовать коду ядра.
Всё это сделано и неоднократно, и для разных SBC (те что у меня есть под рукой: Papsberry Pi 2, Orange Pi One) + проверено по загрузке и выполнению (в shell, многочисленными командами).
going писал(а): 3 Попытаться собрать ядро ipipe
и библиотеки xenomai
https://xenomai.org/documentation/xenomai-3/html/man1/,
https://xenomai.org/documentation/xenom ... index.html,
анализируем ошибки лога сборки,
добавляем недостающие библиотеки, утилиты
(необходимые как для процесса сборки в систему, так и для работы xenomai на ARM)
В тех архитектурах, где это всё собрано и проверено - x86 (по инструкции Xenomai), всё это работает ... и написано достаточно много собственных приложений и тестов realtime. Единственное предупреждение для тех, кто станет экспериментировать с x86: для этой архитектуры нет ни единого поддерживаемого в realtime типа GPIO. Это не значит, что не работает подсистема GPIO, но работает она через стандартное ядро Linux, sysfs. Но не работает через /dev/rtdm (realtime).
Описания по ссылкам к вопросу мало добавляют - это всё имеет отношение к уже собранному окружению Xenomai, для его использованию и работы ... тот же xeno-config - для написания Makefile сборки собственных realtime приложений.
going писал(а): 4 Далее открываем буквари для нашей платы, процессора,
руководство от Xenomai по портированию кода на новый ARM SOC (https://gitlab.denx.de/Xenomai/xenomai/ ... ew_Arm_SOC),
руководство по написанию кода дерева объектов и проверяем, исправляем дописываем.
(Т.е. править исходный код придётся однозначно)
Это руководство "Porting ..." написано максимум по примерам ядра 3.9 или боле раннего ... по состоянию лет 5-7 назад, когда Xenomai 3.0.X ещё не было в природе (был принципиально отличающийся 2.6.Х) ... и где в исходниках ядра за эти 5-7 лет всё радикально поменялось.
Но самое главное, обнадёживающее - собранные образы реалтайм систем, тот же для Rapsberry Pi от голландского университета, который я показывал раньше, и который можно взять и использовать - они все собраны без правки исходников относящихся к Xenomai (как утверждают авторы сборок). И Devicetree для самых распространённых моделей (Rapsberry, Orange и т.п.) - сформированы и известны, готовы для использования.
С другой стороны, правка исходников Xenomai, на уровне кода обработчиков прерываний таймеров - это дело дурное, это годится для радиолюбительства, для домашних экспериментов, когда руки чешутся ... но заложить такое в серийное изделие с непредсказуемыми последствиями - это преступление в отношении своей компании, в смысле рекламаций и последствий. Код Xenomai нарабатывается 15 лет, а изменения, если они радикально необходимы, требуются даже не в части Xenomai, а базового проекта Adeos, ещё более продолжительного - проекты, которые только этим непрерывно занимаются и тестируют код.
going писал(а): 5 Самый интересный этап - тестируем ядро реального времени.
Это всё многократно проделано и описано в публикациях за >10 лет.
И это всё проделано и проверено (мной с сотоварищи) на тех образах (x86, VM VirtualBox, Rapsberry Pi), которые собраны (или другим способом) имеются под рукой.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):VM VirtualBox
А что можно потестить в виртуальной машине применительно к режиму реального времени?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):Это всё многократно проделано
Может покажете публике на что способен чип Н3 на апельсинке под управлением ipipe - xenomai.
Интересно же.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):Это руководство "Porting ..." написано максимум по примерам ядра 3.9 или боле раннего ... по состоянию лет 5-7 назад,
..... правка исходников Xenomai, на уровне кода обработчиков прерываний таймеров - ... это годится для радиолюбительства
Другого руководсва вроде и не имеется, а здесь как раз радиолюбители (современные Кулибины) и собрались.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение Olej »

going писал(а):
Olej писал(а):VM VirtualBox
А что можно потестить в виртуальной машине применительно к режиму реального времени?
Сами авторы Xenomai очень многие вещи проверяли и тестировали (в предыдущие версии, по крайней мере) в виртуальной машине. И так же делают многие по миру, кто работает с Xenomai.
А тестировать в виртуальной машине можно очень многое: написание драйверов в новой модели RTDM, использование Ethernet реального времени RTnet (с TDMA доступом к каналу) ... вообще написание и сборка программного кода в Xenomai API, что гораздо объёмнее и сложнее, чем сама сборка среды.
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение Olej »

going писал(а):
Olej писал(а):Это всё многократно проделано
Может покажете публике на что способен чип Н3 на апельсинке под управлением ipipe - xenomai.
Для H3 не могу показать, пока.
А вот для Rapsberry Pi можно показать - когда гарантированная латентность на этой игрушке лучше, чем на x86 с бенчмарками лучшими, чем у Rapsberry Pi, на 2 порядка. Да ещё всё это при хороших нагрузках стрес-теста.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):А тестировать в виртуальной машине можно очень многое: написание драйверов в новой модели RTDM, использование Ethernet реального времени RTnet (с TDMA доступом к каналу) ... вообще написание и сборка программного кода в Xenomai API, что гораздо объёмнее и сложнее, чем сама сборка среды.
Более правильно - это всё же только
Olej писал(а):написание и сборка программного кода в Xenomai API
Работу в режиме реального времени в виртуалке проверить всё равно не получиться, отловить ошибки программного кода - да. Удобно.
Если Вы только пишите програмный код под конкретную архитектуру, скажем для armv7-a.
А если конкретная плата лежит на столе, большого смысла заводить виртуалку я не вижу.

Хотя всё от лукавого. Виртуалка имеется. Ядро в ней адаптировано для QEMU,
и использую для сборки пакетов нативно в родной среде. Иногда это более правильно и проще, чем кросскомпиляция.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):Для H3 не могу показать, пока.
У Вас плата на руках. Среда сборки готова.
Покажите пожалуйста тот этап, где всё рушиться и ошибки.
Это будет очень полезно.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение Olej »

going писал(а):
Olej писал(а):Для H3 не могу показать, пока.
У Вас плата на руках. Среда сборки готова.
Покажите пожалуйста тот этап, где всё рушиться и ошибки.
Мне некогда (сейчас) делать это детально (есть другие срочные вопросы и есть обязательства перед работодателем, с тем же Xenomai). Но обязательно вернусь к этому позже.
А показывать? Что там показывать? Укрупнённо картина понятная:
- скрипт prepare-kernel.sh от авторов Xenomai делает кучу ссылок в новых каталогах в дереве исходников kernel, каталоги вида:cobalt/include/linux/xenomai, cobalt/posix kernel/xenomai/posix, cobalt/rtdm, xenomai/rtdm, drivers/xenomai и т.д. и т.п.
- если патчить ядро без собственного скрипта от Xenomai, то ядро нормально патчится ... загружается и т.д.
- но при сборка дистрибутива Xenomai (библиотеки, утилиты, драйвера, kernel skin-ы и др.) - этих ссылок нет, нет #include ... по этим ссылкам, и оно всё сыпется по ошибкам компиляции "не определено имя".
Ничего особо "военного". ;)
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

Olej писал(а):Но обязательно вернусь к этому позже.
Хорошо обсуждение перенесём на позже. Больше не буду докучать этим вопросом.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
donvictorio
Мастер
Сообщения: 2449
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 682
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение donvictorio »

нашёл кое чо по теме, но для beaglebone
http://brunosmartins.info/xenomai-on-th ... asy-steps/
https://randomlinuxhacks.wordpress.com/ ... tribution/
может ли ктонить составить краткую инструкцию, как накатить образ для апельсинки, пропатчить его xenomai и установить машинокит? для нубов. а то плата простаивает.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение solo »

так для апельсинки вроде образ есть,
LinuxCNC + Orange Pi #1
а для малинки и других (x86, x86_64, arm, arm64) было бы интересно если б кто помог с инструкцией ( для чайниковатых пользователей ) , а то я смотрю в книгу и вижу фигу , сколько не пытался понять, что за чем делать , не как , все, что находил в интернете все на инглыше , и во всех инструкциях звучит страшное слово ( для меня ) "сборка " :thinking: , и еще много разных ругательных слов...???. Может кто сможет помочь с инструкцией по малинке в доступной форма , по аналогии как на апельсинку :good: :beer:
P.S.
да лично я так и не понял какую мах частоту степ мона получить на малинке
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

donvictorio писал(а):нашёл кое чо по теме, но для beaglebone
http://brunosmartins.info/xenomai-on-th ... asy-steps/
https://randomlinuxhacks.wordpress.com/ ... tribution/
может ли ктонить составить краткую инструкцию, как накатить образ для апельсинки, пропатчить его xenomai и установить машинокит? для нубов. а то плата простаивает.
Готовый образ для одной платы не подойдёт для другой!
Аналогично, инструкция для beaglebone подойдёт только для этой платы.
Если имеется готовый образ для конкретной платы и эта плата на руках, то
Из windows окружения можно воспользоваться утилитой ROSA Image Writer для записи установочных флэшек
http://wiki.rosalab.ru/ru/index.php/Бло ... ных_флэшек
http://wiki.rosalab.ru/ru/images/6/65/R ... .1-win.zip

А название платы, которая простаивает?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
donvictorio
Мастер
Сообщения: 2449
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 682
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение donvictorio »

orange pi pc.
я пробовал собрать для него образ из armbian-build, но затупил на конфигурации ядра, там миллиард переменных, и большую часть я вообще не понимаю, даже с манами. хотел сделать образ с нужным для xenomai ядром. но чото сложно.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

solo писал(а):а для малинки и других (x86, x86_64, arm, arm64) было бы интересно если б кто помог с инструкцией
Вот здесь, правда устаревшая, инструкция по сборке для малины:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... nomaiBuild
Ещё, довольно подробная на китайском:
http://wiki.csie.ncku.edu.tw/embedded/xenomai Скормите адрес гуглепереводчику. Перевод довольно хороший.
Инструкцию, в той части, в которой я делаю, планирую написать позднее, когда всё получиться.
Т.е. получиться собрать рабочий и не глючный образ с РТ и linuxcnc на борту.

Полнота инструкции будет зависеть от колличества "глупых" вопросов.
Прошу всех. Задавайте их здесь.

Можно даже так для примера:
Я пытаюсь собрать образ для "название платы"
Пользуюсь инструкцией "URL"
На этапе "цитата" что то "идёт не так"
Вывод в консоли, если имеется.
Последний раз редактировалось going 18 июл 2018, 14:01, всего редактировалось 2 раза.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar

Сообщение going »

donvictorio писал(а):я пробовал собрать для него образ из armbian-build,......
хотел сделать образ с нужным для xenomai ядром. но чото сложно
Что бы собрать xenomai в среде armbian-build необходимо сначала переопределить поведение
системы сборки. Приспособить её для этого.
Это можно сделать двумя способами.
1) В файле /armbian_build/lib/compilation.sh переписать функцию compile_kernel()
2) В файле /armbian_build/userpatches/customize-image.sh написать то что требуется сделать.
У меня комбинация этих двух методов.

А просто собрать образ с обычным ядром, т.е. тот который по умолчанию, собирается?
Платы: BPI-M3, BPI-A64, OPI-PC2
Ответить

Вернуться в «Прочие вопросы Linux»