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

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

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

Сообщение going »

Тема создана для того, что бы поделиться опытом по сборке из исходников связки:
ядро XENOMAI + LinuxCNC и ядро EVL + LinuxCNC на различных архитектурах
Предлагаю обсудить варианты для различных Linux, например OpenSUSE, debian, ubuntu и др..
Какие системы сборки использовались для arm arm64 архитектур, их преимущества и недостатки.

Ресурсы:
Xenomai
https://source.denx.de/Xenomai/xenomai/-/wikis/home
https://source.denx.de/Xenomai
https://xenomai.org/downloads/ipipe
EVL сегодня это Xenomai 4
https://evlproject.org/
https://git.xenomai.org/xenomai4/linux-evl.git
https://git.xenomai.org/xenomai4/libevl.git
LinuxCNC
http://linuxcnc.org/
https://github.com/LinuxCNC/linuxcnc
http://linuxcnc.org/docs/devel/html/cod ... uxcnc.html
Armbian
https://docs.armbian.com/
https://github.com/armbian/build


Сылка на старый образ для OPI-PC2. + набор пакетов ядра xenomai и библиотеки.
https://yadi.sk/d/uXABC7CLsHzd8A
годится только для тестов и пробной сборки LinuxCNC.
Первый вход стандартный для Armbian. Пользователь: root, пароль: 1234.
Система предложит поменять пароль для root, создать пользователя и пароль.
Всё это работат в консоли (через UART) при первой загрузке.
Графическое окружение openbox. (правая клавиша мышки, меню, терминал)

Для хорошего прохождения тестов надо выделить для со-ядра xenomai и
РТ задач отдельные цпу. Для начала прочтите:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar #126

В файл /boot/ArmbianEnv.txt. добавить строчку extraargs=isolcpus=2,3 примерно так:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

verbosity=8        #  нужен при первых стартах для получения доп. информации. Затем [ 0 ].
overlay_prefix=sun50i-a64
extraargs=isolcpus=2,3
rootdev=UUID=9a71558f-8ec9-437f-b7d3-f70b5a70d88f
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
Последний раз редактировалось going 14 мар 2022, 20:00, всего редактировалось 9 раз.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Olej писал(а):
Там нет исходников. Там есть готовые патчи, которые готовят сами Xenomai. И в руководствах Xenomai рекомендуют использовать именно их, и нет ни слова о том, откуда и как собрать патч.

Патчи "готовятся" просто.

Код: Выделить всё

git diff <index> HEAD >filename.patch 
git diff <teg> HEAD >filename.patch
git diff <index> <teg> >filename.patch 
например

Код: Выделить всё

git clone https://xenomai.org/gitlab/ipipe-arm
cd ipipe-arm
git diff d6949f48093c2d862d9bc39a7a89f2825c55edc4 HEAD >~/tmp/patch-ipipe-arm-v4.14.36.patch
Создаст патч между версией ядра linux-stable v4.14.36 и последним коммитом ipipe в папке tmp домашней директории.
А команда

Код: Выделить всё

git diff d6949f48093c2d862d9bc39a7a89f2825c55edc4 ipipe-core-4.14.36-arm-1 >~/tmp/patch-ipipe-core-4.14.36-arm-1.patch
создаст патч идентичный выложенному на ресурсе для загрузки готовых патчей.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а): Патчи "готовятся" просто.

Код: Выделить всё

git diff <index> HEAD >filename.patch 
git diff <teg> HEAD >filename.patch
git diff <index> <teg> >filename.patch 
например

Код: Выделить всё

git clone https://xenomai.org/gitlab/ipipe-arm
cd ipipe-arm
git diff d6949f48093c2d862d9bc39a7a89f2825c55edc4 HEAD >~/tmp/patch-ipipe-arm-v4.14.36.patch
Создаст патч между версией ядра linux-stable v4.14.36 и последним коммитом ipipe в папке tmp домашней директории.
А команда

Код: Выделить всё

git diff d6949f48093c2d862d9bc39a7a89f2825c55edc4 ipipe-core-4.14.36-arm-1 >~/tmp/patch-ipipe-core-4.14.36-arm-1.patch
создаст патч идентичный выложенному на ресурсе для загрузки готовых патчей.
Вот за эту информацию, а особенно за ссылку GIT, большое спасибо.
В самом общем виде (для разных архитектур) - это будет: https://gitlab.denx.de/Xenomai/.
Ещё недавно (2-3 месяца назад ... из 15 лет истории проекта Xenomai) этих всех ресурсов не было. Philippe Gerum (основной разработчик Xenomai из 2-3-х оставшихся активными) перекроил (в лучшую сторону) все ресурсы, между версиями 3.0.6 и 3.0.7 (которая 3.0.7 на сегодня и существует только для архитектур ARM, для небольшого числа, по драйверам RTDM, периферийного оборудования).

P.S. Если рассмотреть (интересно) саму историю этого GIT-сервера Xenomai, то присоединения новых разработчиков к нему началось:
4 months ago
До этого это был не публичный (не открытый для доступа) собственный ресурс Philippe Gerum (который ведёт, давно, и майлинг-лист Xenomai).
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а):ядро XENOMAI + LinuxCNC на архитектурах 1) x86, x86_64 2) arm, arm64.
Предлагаю обсудить варианты для различных Linux, например OpenSUSE, debian, ubuntu и др..
Какие системы сборки использовались для arm arm64 архитектур, их преимущества и недостатки.
Я собирал (успешно) Xenomai 3.06 для архитектуры x86_64. Собирал в дистрибутиве Mint 18.3 ... но вид дистрибутива для этого дела не имеет абсолютно никакого значения (я проделывал такую сборку ... не совсем до конца :oops: ... в Fedora 27).
Эта сборка не сейчас используется как рабочий инструмент (десктоп, среда разработки) в крупном проекте реального предприятия производителя электронного оборудования, проект продолжается, даже в стартовой фазе ... собственно, это обстоятельный проект из области робототехники, рассчитанный на 3-5 лет. Эта сборка, которая упоминается - это только предварительный "первый ком", и для встраивания в конечное изделие будет (должна, надлежит) ещё не раз пересобираться.

Я собирал (почти до конца, но пока безуспешно) сборку под ARM Orange Pi One. Сборка делалась (делается и будет делаться :D ) в системе сборки BuildRoot (самой последней версии, с GIT проекта, там есть уже дерево устройств, дефаулт, для моделей линейки Orange Pi).
Проблема сборки - в синтаксических ошибках имеенно при финальной сборке самого проекта Xenomai - очень неаккуратно и быстро подготавливаемые, сменяемые изменения на исходниках Xenomai ... такие вещи как пропущено, не указано #include и т.п.
(в чём там фича-баг сборки? ... а она в том, что Xenomai предлагают и предполагают не стандартную утилиту patch для наложения патча ядра, а свой собственный ручной скрипт в составе дистрибутива Xenomai ... если кого заинтересует - расскажу то, до чего я уже смог доискаться).

Я устанавливал, испытывал и использовал готовую сборку с Xenomai 3.0.5, которую собрали и используют (свободно выложена) в одном из голландских университетов (я где-то показывал ссылки, но если надо - повторю).
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а): Патчи "готовятся" просто.

Код: Выделить всё

git diff <index> HEAD >filename.patch 
git diff <teg> HEAD >filename.patch
git diff <index> <teg> >filename.patch 
например

Код: Выделить всё

git clone https://xenomai.org/gitlab/ipipe-arm
cd ipipe-arm
git diff d6949f48093c2d862d9bc39a7a89f2825c55edc4 HEAD >~/tmp/patch-ipipe-arm-v4.14.36.patch
Создаст патч между версией ядра linux-stable v4.14.36 и последним коммитом ipipe в папке tmp домашней директории.
А команда

Код: Выделить всё

git diff d6949f48093c2d862d9bc39a7a89f2825c55edc4 ipipe-core-4.14.36-arm-1 >~/tmp/patch-ipipe-core-4.14.36-arm-1.patch
создаст патч идентичный выложенному на ресурсе для загрузки готовых патчей.
Подскажите-растолкуйте: что это за <index> которым вы так легко распоряжаетесь в git diff ... что это? откуда эти странные значения?
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

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

1. Имеет смысл смотреть только в сторону версий 3.0.Х ... всё предыдущее (последние - это версии 2.6.Х) отбросить как страшный сон - оно всё почти абсолютно несовместимо - чтоб не путалось под ногами ... никаких migrating-from ;)

2. В Xenomai 3.0.X появились 2 ... "окружения" :thinking: : Cobalt (dual-kernel) и Mercury (single-kernel). Mercury - это вообще непонятно какой и куда занос ... это у Philippe Gerum, скорее всего, просто крыша чуть поехала - это использование API Xenomai без какого-либо реалтайма вообще, со стандартным Linux ядром. Это, возможно, годится только для отладки синтаксиса будущих пользовательских приложений когда Cobalt (realtime) системы нет под рукой.
P.S. То что я написал - это не моя выдумка, это - прямые ответы Philippe Gerum в майлинг-лист (могу URL поискать), когда появление Mercury вызвало у меня недоумение (сохранившееся до сейчас :hehehe: ).
Поэтому в сторону ресурсов касающихся Mercury (или single-kernel) - даже не смотрим.

Итого, из названных ресурсов уже ~50% отпадает ... что облегчает картину.
P.S. А вообще ... за 15 лет существования проекта Xenomai, документацию, техописания они так и не удосужились написать ... техдокументация - ужасная :?
И только в последние 3-4 месяцев что-то начинают подписывать (и с этого времени происходит полная реорганизация ресурсов по Xenomai, и годами стоявшие ссылки поплыли ... или это так обычно выглядит не реорганизация, а делёжка? :hehehe: ).
Последний раз редактировалось Olej 09 июл 2018, 12:59, всего редактировалось 1 раз.
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а): Патчи "готовятся" просто.
Это патчи, реализующие проект Adeos (Adaptive Domain Environment for Operating Systems).
Для понимания откуда hard realtime, и работы с Xenomai - это очень важно.
Очень полезно почитать Adeos (Adaptive Domain Environment for Operating Systems) на сайте Национальная библиотека им. Н. Э. Баумана.
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

Olej писал(а): Поэтому в сторону ресурсов касающихся Mercury (или single-kernel) - даже не смотрим.
Для realtime использования у вас должен получиться образ системы (патченый ipipe / Adeos), в котором можно сразу посмотреть (это такой хороший простой тест) символы ядра, появившиеся вновь от Xenomai:

Код: Выделить всё

root@xenomai3debian:~# cat /proc/kallsyms | grep " T rtdm_"
ffffffff81158e40 T rtdm_dev_unregister
ffffffff81158f80 T rtdm_dev_register
ffffffff81159620 T rtdm_cleanup
ffffffff811596d0 T rtdm_task_join
ffffffff81159730 T rtdm_task_busy_sleep
ffffffff81159770 T rtdm_toseq_init
ffffffff811597a0 T rtdm_nrtsig_pend
ffffffff811598a0 T rtdm_mmap_to_user
ffffffff81159900 T rtdm_iomap_to_user
ffffffff811599e0 T rtdm_mmap_iomem
ffffffff81159b50 T rtdm_mmap_kmem
ffffffff81159b70 T rtdm_mmap_vmem
ffffffff81159b90 T rtdm_munmap
ffffffff81159cc0 T rtdm_task_init
ffffffff81159d80 T rtdm_irq_request
ffffffff81159df0 T rtdm_schedule_nrt_work
ffffffff81159e70 T rtdm_ratelimit
ffffffff81159fe0 T rtdm_mutex_timedlock
ffffffff8115a1c0 T rtdm_mutex_lock
ffffffff8115a1e0 T rtdm_timer_stop
ffffffff8115a2d0 T rtdm_timer_destroy
ffffffff8115a3b0 T rtdm_mutex_init
ffffffff8115a4a0 T rtdm_timer_start
ffffffff8115a6e0 T rtdm_event_pulse
ffffffff8115a750 T rtdm_mutex_destroy
ffffffff8115a7b0 T rtdm_event_destroy
ffffffff8115a810 T rtdm_sem_destroy
ffffffff8115a870 T rtdm_event_select
ffffffff8115aa10 T rtdm_sem_select
ffffffff8115abd0 T rtdm_event_clear
ffffffff8115ad10 T rtdm_sem_up
ffffffff8115aec0 T rtdm_event_timedwait
ffffffff8115b0e0 T rtdm_event_wait
ffffffff8115b100 T rtdm_sem_init
ffffffff8115b270 T rtdm_sem_timeddown
ffffffff8115b490 T rtdm_sem_down
ffffffff8115b4b0 T rtdm_event_init
ffffffff8115b640 T rtdm_event_signal
ffffffff8115b7f0 T rtdm_mutex_unlock
ffffffff8115baf0 T rtdm_fd_get
ffffffff8115bf80 T rtdm_fd_put
ffffffff8115c020 T rtdm_fd_fcntl
ffffffff8115c0a0 T rtdm_fd_unlock
ffffffff8115c1e0 T rtdm_fd_lock
ffffffff8115c310 T rtdm_fd_close
ffffffff8115c5d0 T rtdm_fd_write
ffffffff8115c7a0 T rtdm_fd_sendmsg
ffffffff8115c960 T rtdm_fd_recvmsg
ffffffff8115cb20 T rtdm_fd_read
ffffffff8115ccf0 T rtdm_fd_ioctl
ffffffff8115cf00 T rtdm_fd_enter
ffffffff8115d360 T rtdm_fd_mmap
ffffffff8115d500 T rtdm_fd_valid_p
ffffffff8115d640 T rtdm_fd_select
ffffffff8115d700 T rtdm_fd_cleanup
ffffffff8115d730 T rtdm_fd_init
ffffffff819ce36d T rtdm_init
Это вот такой новый API написания драйверов устройств в модели RTDM (Real Time Driver Model).
Это, казалось бы, символы ядра (по команде судя привычно) ... но это символы совсем другого ядра, не Linux, а микроядра Xenomai. Которое лежит в той же привилегированной адресной области RAM (кольцо защиты 0) что и ядро Linux, но это другое ядро ОС, которое перехватывает запросы к ядру, требующие realtime обслуживания, раньше ядра Linux (как раз за счёт перераспределтеля прерываний Adeos, ipipe).
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

Olej писал(а): Проблема сборки - в синтаксических ошибках имеенно при финальной сборке самого проекта Xenomai - очень неаккуратно и быстро подготавливаемые, сменяемые изменения на исходниках Xenomai ... такие вещи как пропущено, не указано #include и т.п.
(в чём там фича-баг сборки? ... а она в том, что Xenomai предлагают и предполагают не стандартную утилиту patch для наложения патча ядра, а свой собственный ручной скрипт в составе дистрибутива Xenomai ... если кого заинтересует - расскажу то, до чего я уже смог доискаться).
Вот что говорится по этому поводу в ... единственном, пожалуй, компетентном источнике - Installing Xenomai 3.x:
Preparing the Cobalt kernel

Xenomai/cobalt provides a real-time extension kernel seamlessly integrated to Linux, therefore the first step is to build it as part of the target kernel. To this end, scripts/prepare-kernel.sh is a shell script which sets up the target kernel properly. The syntax is as follows:

Код: Выделить всё

$ scripts/prepare-kernel.sh [--linux=<linux-srctree>]
[--ipipe=<ipipe-patch>] [--arch=<target-arch>]
For instance, the following command would prepare the Linux tree located at /home/me/linux-3.10-ipipe in order to patch the Xenomai support in:

Код: Выделить всё

$ cd xenomai-3
$ scripts/prepare-kernel.sh --linux=/home/me/linux-3.10
Note: The script will infer the location of the Xenomai kernel code from its own location within the Xenomai source tree. For instance, if /home/me/xenomai-3/scripts/prepare-kernel.sh is executing, then the Xenomai kernel code available from /home/me/xenomai-3/kernel/cobalt will be patched in the target
Linux kernel.
Т.е. их нормальный Linux patch (команда, утилита) и они патчат ядро своим патчем при помощи своего патч-скрипта.
И это не shell-обёртка к системному patch на 2-3 сточки:

Код: Выделить всё

[olej@dell scripts]$ cat prepare-kernel.sh | wc -l
453
Чего они там намудрили в патче на 453 строки?
Последний раз редактировалось Olej 09 июл 2018, 17:47, всего редактировалось 1 раз.
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Olej писал(а):Подскажите-растолкуйте: что это за <index> которым вы так легко распоряжаетесь в git diff ... что это?
Xm... Дык почитать, документацию GIT надобно.
В интернете полно на родном языке. googl & yandex поможет.
<index> - это 16-ричное уникальное число "d6949f48093c2d862d9bc39a7a89f2825c55edc4" коммита.
Именно этот коммит соответсвует тегу v4.14.4 в git linux-stable,
[url]git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git[/url]
т.е. между этим коммитом и заголовком ветки добавлен код ipipe
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а):
Olej писал(а):Подскажите-растолкуйте: что это за <index> которым вы так легко распоряжаетесь в git diff ... что это?
Xm... Дык почитать, документацию GIT надобно.
<index> - это 16-ричное уникальное число "d6949f48093c2d862d9bc39a7a89f2825c55edc4" коммита.
В интернете полно на родном языке. googl & yandex поможет.
С индексом я как-то по документации разберусь ... но как вот таким манером изготовить патч для произвольного ядра? Скажем ... 4.13 ... или 4.15.
По приводимым примерам, синтаксису - этого никак не видно.
Или этот приём позволяет оформить патч (как файл) только для той, единой и исключительной версии ядра (меняемой время от времени, 1-2 раза в год), который использовали для сборки патча авторы Xenomai?
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а): Именно этот коммит соответсвует тегу v4.14.4 в git linux-stable,
[url]git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git[/url]
т.е. между этим коммитом и заголовком ветки добавлен код ipipe
А вот если это патч к только избранному ядру, которое выбрали в качестве "подопытного" авторы Xenomai, то тогда и нет просто никакого смысла собирать эти патчи из этого исходника.
А проще взять готовые патчи здесь: Index of /downloads/ipipe/v4.x:
[DIR] arm/ 12-Jun-2018 19:15 -
[DIR] arm64/ 08-Apr-2018 16:47 -
[DIR] blackfin/ 26-Mar-2018 09:31 -
[DIR] powerpc/ 26-Mar-2018 09:31 -
[DIR] ppc32/ 03-Jul-2018 13:10 -
[DIR] x86/ 26-Mar-2018 17:54 -
Где, кстати, собраны последние патчи для очень разных версий ядра, в зависимости от выбранной платформы. Например, 4.14.36 для ARM (собранный всего только 12-Jun-2018), но для x86 - только 4.9.90.
О чём, о использовании этих патчей и из этого URL и рекомендуют Xenomai в документации, в инструкции по сборке.

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

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

Сообщение going »

Olej писал(а):Я собирал (почти до конца, но пока безуспешно) сборку под ARM Orange Pi One. Сборка делалась (делается и будет делаться ) в системе сборки BuildRoot (самой последней версии, с GIT проекта, там есть уже дерево устройств, дефаулт, для моделей линейки Orange Pi).
Проблема сборки - в синтаксических ошибках имеенно при финальной сборке самого проекта Xenomai - очень неаккуратно и быстро подготавливаемые, сменяемые изменения на исходниках Xenomai ... такие вещи как пропущено, не указано #include и т.п.
(в чём там фича-баг сборки? ... а она в том, что Xenomai предлагают и предполагают не стандартную утилиту patch для наложения патча ядра, а свой собственный ручной скрипт в составе дистрибутива Xenomai ... если кого заинтересует - расскажу то, до чего я уже смог доискаться).
Если честно, то я ничего не понял из сказанного.

Предлагаю разобраться по порядку.
1) Этап сборки, на котором ошибка. Сама ошибка.
2) Обсуждение
3) Двигаемся дальше

P.S.
По шагам изложенным в
Olej писал(а):компетентном источнике - Installing Xenomai 3.x:
я написал небольшой скрипт, который собирает и ядро и библиотеки для доступных архитектур.
Собирал, как из ГИТ источников, так и патчил исходники ядра.
Сборка проходит без ошибок. Из этого делаю вывод: в коде Xenomai ошибок нет.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

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

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

Сообщение Olej »

К этим ресурсам можно добавить:
Overzicht voorbeelden - это какой-то сайт на нидерландском языке :hehehe: с кучей примеров кода под Xenomai, особенно учитывая, что в Xenomai, кроме библиотек и API включены: а). модель написания драйверов realtime в параллель к существующим драйверам Linux, б). сторонний проект Ethernet сети realtime - RTnet, в). ещё пару-тройку интегрированных сторонних проектов за последние 4-5 лет.
Периодическая нить не работает в режиме реального времени в Xenomai - пример кода и объяснение вопроса, связанные с ещё одним таким интегрированным недавно проектом Analogy (скин Analogy).
(Beta) Xenomai 3.0.5 on Ubuntu 14.04/16.04 - ещё один какой-то университетский сайт, содержащий подробности по Xenomai и RTnet, которых нет даже на сайте Xenomai, относительно деталей установки и доведения до работоспособности.
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а):
Olej писал(а):С индексом я как-то по документации разберусь ... но как вот таким манером изготовить патч для произвольного ядра?
Ответ содержиться в вопросе.
Да нет там никакого ответа!
Не нужно становиться в позу и что-то там изображать ... Xenomai можно собрать только для крайне ограниченного числа версия ядер, которые предлагают авторы Xenomai.
И только для крайне ограниченного набора периферийных чипов ... например, RT-драйверы GPIO доступны только для нескольких образцов под ARM, и ни для одной модели под x86.
Это информация, подтверждённая (хоть и с кривлянием и неудовольствием) в переписке Philippe Gerum <rpm@xenomai.org>.
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а):
Olej писал(а):Я собирал (почти до конца, но пока безуспешно) сборку под ARM Orange Pi One. Сборка делалась (делается и будет делаться ) в системе сборки BuildRoot (самой последней версии, с GIT проекта, там есть уже дерево устройств, дефаулт, для моделей линейки Orange Pi).
Проблема сборки - в синтаксических ошибках имеенно при финальной сборке самого проекта Xenomai - очень неаккуратно и быстро подготавливаемые, сменяемые изменения на исходниках Xenomai ... такие вещи как пропущено, не указано #include и т.п.
(в чём там фича-баг сборки? ... а она в том, что Xenomai предлагают и предполагают не стандартную утилиту patch для наложения патча ядра, а свой собственный ручной скрипт в составе дистрибутива Xenomai ... если кого заинтересует - расскажу то, до чего я уже смог доискаться).

Если честно, то я ничего не понял из сказанного.
Это только если сильно в облом читать и понимать...
- Чукча ж писатель! Чукча не читатель!
:wik:
going писал(а): P.S.
По шагам изложенным в
Olej писал(а):компетентном источнике - Installing Xenomai 3.x:
я написал небольшой скрипт, который собирает и ядро и библиотеки для доступных архитектур.
Собирал, как из ГИТ источников, так и патчил исходники ядра.
Сборка проходит без ошибок. Из этого делаю вывод: в коде Xenomai ошибок нет.
Чтоб быть конкретным:
- Для каких архитектур? x86? Для x86 и я собирал.
- Или для ARM (потому как архитектуры во множественном числе)? (вот голландцы собрали 3.05 под Rapsbery Pi, я собирал под Orange Pi, ... а вы? :hehehe: )
- Если для ARM, то для какой конкретно конфигурации машины?
Потому что ARM без DeviceTree, без файлов .dts (или на худой конец .dtb) не соберётся ... даже если систему соберёте, то модули ядра Xenomai не соберёте, потому что Xenomai могут собирать свои модули ядра только на основе DeviceTree

И далее...
Собирали по инструкции от Xenomai?
С патченьем ядра их скриптом, как они пишут?
Т.е. это - ручная сборка, полностью повторяющая тот единственный способ, который обкатали Xenomai.
А интересовала бы сборка инструментом сборки BuildRoot (как и было указано) ... которым Xenomai Mercury (под ARM) собирается "на ура", а Xenomai Cobalt валится по ошибкам, ошибкам глупым, типа "... не найден #include ..." и т.п.
Причём, что характерно, ошибки разные при сборке Xenomai 3.05, 3.06, 3.07.
И от людей, кто собирал (успешно в конечном итоге!) сообщается, что версия 3.06 с GIT (пока она была последней, месяц назад) то собиралась, то не собиралась ... по ходу правки авторами GIT. И заинтересованные лица откатывались к 3.05 временно, чтобы не играться в эти игры:
... здесь играем ... здесь не играем - здесь селёдку заворачивали.
:wik:
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Olej писал(а):Xenomai можно собрать только для крайне ограниченного числа версия ядер, которые предлагают авторы Xenomai.
А кто бы спорил.
Вы, как мне кажется, человек сведующий, но стиль изложения мыслей немного путанный и местами вводит меня в заблуждение.
Догадываться из контекста, что требуется?
Попробуйте формулировать более конкретно и по одному вопросу.
Olej писал(а):например, RT-драйверы GPIO доступны только для нескольких образцов под ARM,
В документации изложено, как написать дополнительный код для нового Soc.

Для того, чтобы продвинуть код ipipe из GIT в верх по течению (git merge) придётся "погрузиться в этот код с головой",
понять как он работает, и как его можно изменить, если изменился код в ядре.
Olej писал(а):- Для каких архитектур?
-> x86, x86_64, arm, arm64
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Maxekb77
Мастер
Сообщения: 1658
Зарегистрирован: 05 окт 2013, 00:04
Репутация: 285
Настоящее имя: Максим
Откуда: Екатеринбург
Контактная информация:

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

Сообщение Maxekb77 »

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

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

Сообщение Olej »

going писал(а):
Olej писал(а):- Для каких архитектур?
-> x86, x86_64, arm, arm64
Про ARM - не верю.
ARM можно собрать только под конкретный SoC, а не "ARM-вообще".
Откуда брали .dts, DeviceTree ... а ещё хуже - оверлеи DeviceTree, как для Rapsbery Pi.
Ответить

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