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

Общие вопросы по операционным системам семейства Linux.
Аватара пользователя
ua3nbw
Кандидат
Сообщения: 44
Зарегистрирован: 18 окт 2017, 18:03
Репутация: 26
Контактная информация:

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

Сообщение ua3nbw »

На Raspberry Pi 2 linuxcnc с Xenomai/cobalt v3.0.7 с наскока не собирается.
пакет machinekit-xenomai устанавливается, но тоже не работает.

запуск /usr/xenomai/sbin/autotune на результаты тестов не повлиял.
результаты тестов:

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

model: Raspberry Pi 2 Model B Rev 1.1
compatible: brcm,bcm2836
My IP address is 192.168.0.6
Xenomai/cobalt v3.0.7
root@raspberrypi:~ # uname -a
Linux raspberrypi 4.9.80-v7-xeno3+ #2 SMP PREEMPT Fri Aug 10 15:04:48 KST 2018 armv7l GNU/Linux
root@raspberrypi:~ # /usr/xenomai/demo/cyclictest -t -p80 -i10000
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.20 0.06 0.02 1/125 12025

T: 0 (11995) P:80 I:10000 C:   4963 Min:      4 Act:    8 Avg:   10 Max:      40
T: 1 (11996) P:80 I:10500 C:   4726 Min:      0 Act:    7 Avg:    9 Max:      35
T: 2 (11997) P:80 I:11000 C:   4511 Min:      4 Act:   13 Avg:    9 Max:      35
T: 3 (11998) P:80 I:11500 C:   4315 Min:      1 Act:    8 Avg:    9 Max:      37
Без нагрузки на общем CPU 900MHz в консоли:

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

root@raspberrypi:~ # /usr/xenomai/bin/latency
== Sampling period: 1000 us
== Test mode: periodic user-mode task
== All results in microseconds
warming up...
RTT|  00:00:01  (periodic user-mode task, 1000 us period, priority 99)
RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
RTD|      2.447|      3.210|     12.082|       0|     0|      2.447|     12.082
RTD|      2.498|      3.174|     18.124|       0|     0|      2.447|     18.124
RTD|      2.446|      3.127|     10.207|       0|     0|      2.446|     18.124
RTD|      2.393|      3.161|      9.842|       0|     0|      2.393|     18.124
RTD|      2.393|      3.133|      9.529|       0|     0|      2.393|     18.124
RTD|      2.445|      3.180|     13.278|       0|     0|      2.393|     18.124
RTD|      2.393|      3.130|     10.674|       0|     0|      2.393|     18.124
RTD|      2.444|      3.150|      8.851|       0|     0|      2.393|     18.124
RTD|      2.444|      3.118|     10.517|       0|     0|      2.393|     18.124
RTD|      2.443|      3.146|      9.267|       0|     0|      2.393|     18.124
RTD|      2.443|      3.130|      9.579|       0|     0|      2.393|     18.124
RTD|      2.443|      3.144|      8.068|       0|     0|      2.393|     18.124
RTD|      2.390|      3.127|      9.734|       0|     0|      2.390|     18.124
RTD|      2.442|      3.152|      9.109|       0|     0|      2.390|     18.124
RTD|      2.442|      3.137|     10.202|       0|     0|      2.390|     18.124
RTD|      2.493|      3.174|     10.202|       0|     0|      2.390|     18.124
RTD|      2.441|      3.124|      9.628|       0|     0|      2.390|     18.124
RTD|      2.492|      3.142|      9.680|       0|     0|      2.390|     18.124
RTD|      2.440|      3.150|     14.523|       0|     0|      2.390|     18.124
RTD|      2.388|      3.162|     11.971|       0|     0|      2.388|     18.124
RTD|      2.439|      3.136|      9.991|       0|     0|      2.388|     18.124
RTT|  00:00:22  (periodic user-mode task, 1000 us period, priority 99)
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

ua3nbw писал(а):запуск /usr/xenomai/sbin/autotune на результаты тестов не повлиял.
Ежели xenomai собрано по "фен шуй" тогда autotune должен запускаться при старте системы.
Это прописано в скрипте инициализации.

Там ещё имеется xeno-test, который нагружает систему и запускает другие тесты в это время.
Он длится 15 минут и требует вентилятора. На его результаты хотелось бы посмотреть.
Его вывод можно продублировать и отправить в файл:
sudo xeno-test | tee -a ~/test.txt
ua3nbw писал(а):linuxcnc с Xenomai/cobalt v3.0.7 с наскока не собирается.
пакет machinekit-xenomai устанавливается, но тоже не работает.
В linuxcnc src/rtapi придётся заново переписывать. Там всё заточено под xenomai v2.
В machinekit на уровне конфигурации идёт отказ от сборки частей поддерживающих работу в пространстве ядра
для архитектуры arm, arm64.
Т.е. всё правильно ничего и не должно работать.

На этой грустной ноте уезжаю в деревню на две недели, где не только интернета нет,
а сотовая связь только на соседней горке.

П.С.

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

sudo latency         # ( -t 0 )  в пространстве пользователя
sudo latency -t 1    # в пространстве ядра linux
sudo latency -t 2    # в пространстве IRQ or timer
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
ua3nbw
Кандидат
Сообщения: 44
Зарегистрирован: 18 окт 2017, 18:03
Репутация: 26
Контактная информация:

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

Сообщение ua3nbw »

going писал(а):Там ещё имеется xeno-test, который нагружает систему и запускает другие тесты в это время.Он длится 15 минут и требует вентилятора. На его результаты хотелось бы посмотреть.Его вывод можно продублировать и отправить в файл:sudo xeno-test | tee -a ~/test.txt
Вот результаты xeno-test на Raspberry Pi 2 без радиатора и вентилятора (палец терпит)
v3.0.5-1g.txt
ядро jessie 4.1.21 Xenomai/cobalt v3.0.5
(117.53 КБ) 687 скачиваний

после апгрейда https://github.com/thanhtam-h/rpi23-4.9 ... r/prebuilt
v3.0.7-1g.txt
ядро jessie 4.9.80 Xenomai/cobalt v3.0.7
(117.54 КБ) 1093 скачивания
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

ua3nbw писал(а):после апгрейда https://github.com/thanhtam-h/rpi23-4.9 ... r/prebuilt

v3.0.7-1g.txt
ядро jessie 4.9.80 Xenomai/cobalt v3.0.7
Довольно неплохо для 900 МГц в пространстве пользователя. Интересно, а в параметрах командной строки ядра,
рекомендованная строчка

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

isolcpus=0,1,2,3 xenomai.supported_cpus=0xF
присутствовала?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
ua3nbw
Кандидат
Сообщения: 44
Зарегистрирован: 18 окт 2017, 18:03
Репутация: 26
Контактная информация:

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

Сообщение ua3nbw »

going писал(а):isolcpus=0,1,2,3 xenomai.supported_cpus=0xFприсутствовала?
Да, в файле /boot/cmdline.txt
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

going писал(а):рекомендованная строчка

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

    isolcpus=0,1,2,3 xenomai.supported_cpus=0xF
присутствовала?
Довольно странная строчка. Сегодня проверил её.
isolcpus=0,1,2,3 - Этим сообщаем ядру Linux, что изолируем все четыре ЦПУ для него. :thinking:
Т.е. запрещаем ему работать на всех ЦПУ, но оно узнаёт об этом, когда уже работает на ЦПУ-0.
Поэтому все процессы Linux трудятся на ЦПУ-0. Нельзя "отжать" у ядра Linux cpu-0.
isolcpus=0 не имеет смысла.

xenomai.supported_cpus=0xF соответствует маске 1111 и разрешает запускать приложения Xenomai
на всех четырёх ЦПУ. Это параметр по умолчанию. Можно было не указывать.
Какая маска была применена видно в файле:

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

cat /proc/xenomai/affinity
Младший разряд соответствует младшему номеру ЦПУ. Т.е.
1100 - xenomai.supported_cpus=0xС
3,2,1,0 - разрешает работать на 3 и 2 ЦПУ.

Корректная строчка, которая отнимает у Linux два последних ядра и отдаёт их Xenomai выглядит:

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

 isolcpus=2,3 xenomai.supported_cpus=0xC
Если отнимаем у Linux три последних ядра и отдаём их Xenomai надо:

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

isolcpus=1,2,3 xenomai.supported_cpus=0xE
При этом xeno-test сообщит:
.....
cpu_affinity OK
.....

Но утилите latensy необходимо явно передать параметр --cpu-affinity=2,3 иначе он будет пытаться
запустится на ЦПУ-0 и вывалится с ошибкой. Таким образом тест в пространстве ядра на ЦПУ-2:

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

sudo xeno-test -t 1 --cpu-affinity=2
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

going писал(а): linuxcnc с Xenomai/cobalt v3.0.7 с наскока не собирается.
пакет machinekit-xenomai устанавливается, но тоже не работает.


В linuxcnc src/rtapi придётся заново переписывать. Там всё заточено под xenomai v2.
В machinekit на уровне конфигурации идёт отказ от сборки частей поддерживающих работу в пространстве ядра
для архитектуры arm, arm64.
Немного поправлю сам себя:
В linuxcnc возможно собрать с библиотеками xenomai только для работы в пространстве пользователя.
Используется унифицированный API POSIX. В этом случае версия xenomai (2-3) диктует только
различные пути поиска заголовочных файлов.
И работает:
linuxcnc-latency-uspase.png (4950 просмотров) <a class='original' href='./download/file.php?id=153459&sid=5e3dd3362fc2e2f8b611f34560bab4b0&mode=view' target=_blank>Загрузить оригинал (143.86 КБ)</a>
В тоже самое время "latency in kernel timer handler"
выглядит:
Screenshot from 2018-12-26 12-54-16.png (4950 просмотров) <a class='original' href='./download/file.php?id=153463&sid=5e3dd3362fc2e2f8b611f34560bab4b0&mode=view' target=_blank>Загрузить оригинал (273.84 КБ)</a>
Machinekit немного умнее. Различает версии xenomai и может работать в пространстве ядра Linux.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
ua3nbw
Кандидат
Сообщения: 44
Зарегистрирован: 18 окт 2017, 18:03
Репутация: 26
Контактная информация:

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

Сообщение ua3nbw »

linuxcnc так конфигурировали ?

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

./configure --with-realtime=uspace XENOMAI_CONFIG=/usr/xenomai/bin/xeno-config
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

ua3nbw писал(а):linuxcnc так конфигурировали ?
Установлены пакеты:
libxenomai1 - собственно сама библиотека
libxenomai1-dev - загороловочные файлы библиотеки xenomai -> /usr/include/xenomai
xenomai-rantime
xenomai-kernel-source - загороловочные файлы ядра от xenomai -> /usr/src/xenomai-kernel-source
kernel-source -> /usr/src/linux-source-4.14.84 - пропатченный armbian,ipipe и исправленный скриптом /usr/src/xenomai-kernel-source/scripts/prepare-kernel.sh

/usr/src> ls -l
lrwxrwxrwx 1 root root 20 дек 5 15:32 linux -> linux-source-4.14.84
drwxrwxr-x 25 root root 4096 дек 5 15:32 linux-source-4.14.84
-rw-rw-r-- 1 root root 29988 ноя 28 19:27 linux-sunxi64-next_4.14.84_5.67_config.xz
drwxr-xr-x 6 root root 4096 дек 3 20:45 xenomai-kernel-source

Выдержка из config.log

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

It was created by LinuxCNC configure 2.8.0~pre1, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ ./configure --with-realtime=uspace --with-kernel-headers=/usr/src/linux --with-module-dir=/lib/modules/4.14.85-ipipe-sunxi64
--with-kernel-headers=/usr/src/linux - необходим т.к. скрипт конфигурации ищет исходники ядра в странных местах.
--with-module-dir=/lib/modules/4.14.85-ipipe-sunxi64 - необходим т.к. скрипт конфигурации ищет эту папку по $(uname -r) и не находит.
Надо явно указать.
ua3nbw писал(а):XENOMAI_CONFIG=
в моём случае не нужен т.к. находится в видимом пространстве -> /usr/bin/xeno-config
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Небольшой опрос.
Какое рабочее окружение предпочитает сообщество?
1. openbox
2. lxde-openbox
3. lxde
4. xfce-openbox
5. xfce (default armbian)

Какая операционная система предпочтителнее?
1. Debian ( jessie or xenial )
2. Ubuntu ( stretch or bionic )
3. OpenSUSE ( Leap 42.3 or Leap 15.0 )
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

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

Сообщение going »

MX_Master писал(а):А выбор на Latency отразится? (:
На Latency больше влияет скорость обмена с памятью и "загруженностью" шины.
Если отдать Linux только cpu0 система становится плохо отзывчивой,
но шина памяти при этом похоже разгружается и тест Latency показывает лучшие результаты.
Придётся искать золотую середину.

Т.е. чем легче окружение тем лучше. Выбор ОС, по большому счету,
определяет различные плохие моменты при сборке ( нехватает библиотек или не та версия ) и настройке.

P.S. Для ХОРОШЕГО latensy необходим драйвер gpio уровня ядра реагирующий на IRQ от таймера.
Всеми IRQ в системе рулит микроядро "cobalt" обеспечивая приоритеты.
Последний раз редактировалось going 04 янв 2019, 18:56, всего редактировалось 1 раз.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Зачем для LinuxCNC рабочее окружение? Достаточно минимального диспетчера окон. Тот же Axis или Gmoccapy имеют встроеный менеджер файлов. Неужели на промстойках кто-то пасьянс запускает или браузер? Я бы всё по минимуому делал. Автологин а запуск на весь экран. Задача только открыть УП. Всё остальное можно в голой консоли делать. Сеть можно настроить из консоли. С автомонтированием только повозиться и диспетчером питания. Я за twm )))
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

evgenymcp писал(а):Всё остальное можно в голой консоли делать.
Как вариант, можно сварганить двух пользователей и различные скрипты настройки.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Пользователей где-то вводить нужно, а у нас встраиваемая система. Мне как пользователю нужно нажать кнопку и максимально быстро (с красивым лого при загрузке) получить доступ к станку, без лишних движений мышью и клавиатурой. После окончания работы нажать на кнопку и всё должно выключиться. Linux очень гибкий и позволяет всё это сделать без проблем. На многих устройствах стоит linux и никто об этом не догадывается. Нужно двигаться в этом направлении. Минимум взаимодействия с ОС - максимум с программой управления станком.
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

У себя, ранее, я настраивал автологин и запуск на полный экран. Всё работало на стандартном дистрибутиве Linuxcnc 2.7 с Xfce. Сейчас собираю новую "стойку". Будет 19" сенсорный экран и похоже перейду с axis на gmoccapy. Может splashscreen прикручу если заняться нечем будет. Уже приехала mini-itx atom 525 плата. Хочу максимум хардварных кнопок и переключателей, хотя и с клавиатуры всё отлично управлялось. Хочется по взрослому :D
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

evgenymcp писал(а):Уже приехала mini-itx atom 525 плата.
А на ней дистрибутив от linuxcnc без проблем работает, или собственная сборка будет?
Платы: BPI-M3, BPI-A64, OPI-PC2
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

going писал(а):А на ней дистрибутив от linuxcnc без проблем работает, или собственная сборка будет?
это совсем неплохо работает с U10.04 5i25 через PCI
если 7i92m ,то убунта уже не проходит ,и вариант немного теряет свою привлекательность...
кмк - нужно смотреть в сторону PP, они всё делают как надо...
(кто не пробовал - скачайте, попробуйте - при загрузке ничего лишнего,после загрузки - ничего лишнего)))
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

ua3nbw писал(а):linuxcnc так конфигурировали ?
going писал(а):--with-module-dir=/lib/modules/4.14.85-ipipe-sunxi64 - необходим т.к. скрипт конфигурации ищет эту папку по $(uname -r) и не находит.
Эта запись не является правильной.

--with-module-dir= Используется только при сборке с ядром RTAI.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Очередной прыжок armbian. 09.01.19
sunxi-next теперь собирает с ядром 4.19.y
sunxi-dev соответственно с ядром 4.20.y

Последний стабильный вариант armbian/build для ядер v4.14.78 - v4.14.91
соответствует коммиту - 34ccb5d6250b86031dc77baf024d7a6186dc9493 от 08.01.19
Т.е.
Если имеется желание продолжать собирать с ядром v4.14.78 - v4.14.91

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

cd build
git checkout -b sunxi-4.14.78_91 34ccb5d6250b86031dc77baf024d7a6186dc9493
При этом сама система сборки armbian зафиксируется,
а источники будут продолжать обновляться. Их тоже можно зафиксировать.
Или регулярно вносить изменения в заплатки armbian/build/patch/{atf,u-boot,kernel}
Платы: BPI-M3, BPI-A64, OPI-PC2
Ответить

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