Xenomai и real-time Linux

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 13:49

Olej писал(а): P.S. Кстати, там же у голландцев есть образы виртуальных машин под VirtualBox и под VMware (ну, это уже для совсем упоротых приверженцев бодаться с Linux из-под Windows ;D).
- Нужно будет поднять их VM под VirtualBox - голландцев "проверить на вшивость".
- Каждый желающий пощупать пальцами что оно такое realtime - может относительно небольшими затратами сил и времени сделать это в VM.
Делаем...

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

[olej@xenix VirtualBox]$ ls -l xenomai-3.0.2_linux-4.1.18_debian-8.5.7z 
-rw-rw-r-- 1 olej olej 273496920 июн 13 10:04 xenomai-3.0.2_linux-4.1.18_debian-8.5.7z
Разархивирую:

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

[olej@xenix VirtualBox]$ time 7za x xenomai-3.0.2_linux-4.1.18_debian-8.5.7z

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ru_RU.utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU           L5420  @ 2.50GHz (10676),ASM)

Scanning the drive for archives:
1 file, 273496920 bytes (261 MiB)

Extracting archive: xenomai-3.0.2_linux-4.1.18_debian-8.5.7z
--
Path = xenomai-3.0.2_linux-4.1.18_debian-8.5.7z
Type = 7z
Physical Size = 273496920
Headers Size = 246
Method = LZMA2:24
Solid = +
Blocks = 1

Everything is Ok

Folders: 1
Files: 3
Size:       1184904745
Compressed: 273496920

real    0m34,955s
user    0m17,783s
sys     0m1,402s


[olej@xenix VirtualBox]$ ls -l xenomai3_debian
итого 1157128
-rw------- 1 olej olej       7717 июл  8  2016 xenomai3_debian.vbox
-rw------- 1 olej olej 1184890880 июл  7  2016 xenomai3_debian.vdi
Теперь перенесу этот полученный каталог xenomai3_debian в место, где у меня хранятся виртуальные машины VirtualBox ... но это только для единообразия, и делать не обязательно.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 13:57

Olej писал(а):Теперь перенесу этот полученный каталог xenomai3_debian в место, где у меня хранятся виртуальные машины VirtualBox ... но это только для единообразия, и делать не обязательно.
В менеджере VirtualBox делаю не "Создать" (CTRL+N), а "Добавить" (CTRL+A), и указываю путь к файлу xenomai3_debian.vbox в новом каталоге xenomai3_debian ... файл образа диска там же xenomai3_debian.vdi - оно подхватит само.
Всё, VM создана...

Но!
VirtualBox говорит об ошибке образа - в настройках сетевого адаптера - они там намудрячили с выбором "Виртуальный адаптер хоста".
Может им там в Голландии так и удобнее, но мне оно не надо.
Меняем - на "Сетевой мост" (это будет достаточно важным в дальнейшем подключении!).
Вложения
xd1.png
xd2.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 14:15

Olej писал(а): Всё, VM создана...
Запуск...
Через некоторое время:
xd3.png
ОК, мы получили текстовую консоль, CLI, с аавтоматическим логином от root:
xd4.png
Меня всё это не сильно устраивает ... но позволяет сколько угодно подключаться по SSH:

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

[olej@xenix .ssh]$ ssh root@192.168.1.107
Last login: Wed Jun 13 10:31:56 2018
root@xenomai3debian:~# uname -a
Linux xenomai3debian 4.1.18 #3 SMP Wed Jul 6 17:35:07 CDT 2016 x86_64 GNU/Linux
root@xenomai3debian:~# 
...
Всё путём! - мы имеем Linux систему с дополнительным ядром Xenomai 3 (Cobalt).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 14:17

Olej писал(а): Всё путём! - мы имеем Linux систему с дополнительным ядром Xenomai 3 (Cobalt).

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

root@xenomai3debian:/usr/xenomai/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/xenomai/bin

root@xenomai3debian:/usr/xenomai/bin# xeno-config
xeno-config --verbose
        --core=cobalt
        --version="3.0.2"
        --cc="gcc"
        --ccld="/usr/xenomai/bin/wrap-link.sh gcc"
        --arch="x86"
        --prefix="/usr/xenomai"
        --library-dir="/usr/xenomai/lib"
Usage xeno-config OPTIONS
Options :
        --help
        --v,--verbose
        --version
        --cc
        --ccld
        --arch
        --prefix
        --[skin=]posix|vxworks|psos|alchemy|rtdm|smokey|cobalt
        --auto-init|no-auto-init
        --cflags
        --ldflags
        --lib*-dir,--libdir,--user-libdir
        --core
        --info
        --compat
Вот дополнительные имена (точки входа) ядра Linux, которых нет в "настоящем" Linux, и которые реализуют RTDM (realtime driver model):

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

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 15:58

Olej писал(а):

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

root@xenomai3debian:/usr/xenomai/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/xenomai/bin
Всё, в этой среде (в VirtualBox) можно писать и отрабатывать свои realtime приложения.
В Xenomai есть несколько уровней совместимости (опция xeno-config --[skin=]posix|vxworks|psos|alchemy|rtdm|smokey|cobalt ).
Если самый привычный POSIX код приложения собирать с опциями сборки Xenomai - то будет собираться realtime задача. Эти опции определяются так (для Makefile):

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

root@xenomai3debian:/usr/xenomai/bin# xeno-config --posix --cflags
-I/usr/xenomai/include/cobalt -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -D__COBALT__ -D__COBALT_WRAP__

root@xenomai3debian:/usr/xenomai/bin# xeno-config --posix --ldflags
-Wl,@/usr/xenomai/lib/cobalt.wrappers   /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld -L/usr/xenomai/lib -lcobalt -lpthread -lrt   

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 16:17

Здесь же рядом собрана и Ethernet сеть реального времени RTnet:

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

root@xenomai3debian:/usr/xenomai/sbin# pwd
/usr/xenomai/sbin

root@xenomai3debian:/usr/xenomai/sbin# ls -l
total 352
-rwxr-xr-x 1 root root 112552 Jul  6  2016 analogy_calibrate*
-rwxr-xr-x 1 root root  26320 Jul  6  2016 analogy_config*
-rwxr-xr-x 1 root root  17560 Jul  6  2016 autotune*
-rwxr-xr-x 1 root root  11808 Jul  6  2016 corectl*
-rwxr-xr-x 1 root root  12224 Jul  6  2016 hdb*
-rwxr-xr-x 1 root root   8360 Jul  6  2016 nomaccfg*
-rwxr-xr-x 1 root root  13448 Jul  6  2016 rtcanconfig*
-rwxr-xr-x 1 root root  16128 Jul  6  2016 rtcfg*
-rwxr-xr-x 1 root root  14672 Jul  6  2016 rtifconfig*
-rwxr-xr-x 1 root root  12424 Jul  6  2016 rtiwconfig*
-rwxr-xr-x 1 root root   7623 Jul  6  2016 rtnet*
-rwxr-xr-x 1 root root  11064 Jul  6  2016 rtping*
-rwxr-xr-x 1 root root   8712 Jul  6  2016 rtps*
-rwxr-xr-x 1 root root  14600 Jul  6  2016 rtroute*
-rwxr-xr-x 1 root root  17520 Jul  6  2016 slackspot*
-rwxr-xr-x 1 root root  12624 Jul  6  2016 tdmacfg*
-rwxr-xr-x 1 root root   7296 Jul  6  2016 version*

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 16:28

Комплект тестов от kernel.org: index : rt-tests/rt-tests.git.
(скачав вы можете собрать из исходников десяток самых свежих версий тестов ... в числе которых и cyclictest)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 13 июн 2018, 19:47

Olej писал(а):
Olej писал(а):Готовый образ .img, который описывается здесь: Raspberry Pi image for the Pi zero,1,2,3 with Xenomai 3.0.5 on Raspbian linux 4.1.y Debian 8 jessie - голландский университет использует для курсов по embedded & realtime.
Изображение
Institute for Computing and Information Sciences
Visiting address
Toernooiveld 212
6525 EC Nijmegen
Накатал этот образ на SD-карту и пробовал его поднять на Rapsberry Pi 2.
Не могу загрузить.
Причём на точно том же оборудовании какой-то там Raspbian (не я писал SD) грузится "на ура".
Или темнят голландцы что-то ... или нужно ещё как-то пробовать ... может с SD-карточкой что-то не так?
Ещё раз перезаписал на новую SD-карту 8Gb (не пожалел по такому случаю, на совершенно новую потратился, для страховки ;-) ... в последний раз для пробы).
После разархивирования:

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

[olej@dell Raspberry_Pi]$ ls -l raspbian_jessie8_*
-rw-r--r-- 1 olej olej 1852833792 июл 28  2017 raspbian_jessie8_xenomai3.0.5.img
-rw-rw-r-- 1 olej olej  367071559 май 27 15:28 raspbian_jessie8_xenomai3.0.5.img.7z
Вот этот .img накатал на SD-карту ... и он загружается. :-o
И получает IP по DHCP, и подключение по SSH...

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

olej@nvidia ~ $ ssh root@192.168.1.108
The authenticity of host '192.168.1.108 (192.168.1.108)' can't be established.
ECDSA key fingerprint is SHA256:ybkJ5eB+oqonPKk23OyqvtH+1zfv9A+TNtNpiCw4BJQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.108' (ECDSA) to the list of known hosts.
root@192.168.1.108's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Jun 13 16:25:35 2018

model: Raspberry Pi 2 Model B Rev 1.1
compatible: brcm,bcm2709
My IP address is 192.168.1.108 

Xenomai/cobalt v3.0.5
root@raspberrypi:~ # uname -a
Linux raspberrypi 4.1.21-v7+ #4 SMP Sat Jul 15 06:39:14 CEST 2017 armv7l GNU/Linux
Теперь это у нас в руках нативный hard realtime Linux/Xenomai на ARM платформе.
Т.к. это уже относится к одноплатным SBC (single-board computer), то дальше игрища с этим образцом переносятся в другую, новую тему.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Xenomai и real-time Linux

Непрочитанное сообщение Olej » 09 июл 2018, 12:32

Началась какая-то большая возня с реорганизацией материалов Xenomai ... все ссылки поплыли, но гораздо больше новых ресурсой, описаний. В частности, открыт GIT с обновляемыми исходниками патча ядра ipipe (Adeos, Adaptive Domain Environment for Operating Systems). Если это будет работоспособно, то это снимает очень много ограничений на использование Xenomai (ограничение на конкретные версии ядра Linux).

Итак, это: Xenomai real-time system (здесь, кстати, и сам GIT 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
создаст патч идентичный выложенному на ресурсе для загрузки готовых патчей.
Если всё это сработает, то это очень упростит использование Xenomai.

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей