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

Общие вопросы по операционным системам семейства Linux.

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

Сообщение DmitriiNT » 03 мар 2020, 12:28

Добрый день!

Такой вопрос. Кто нибудь пробовал применить одновременно патчи preempt_rt и ipipe-core xenomai?
Я сегодня попробовал.
Если накладывать первым патч preempt_rt, то ipipe-core xenomai выполняется с ошибками. Если наоборот, то все нормально. Будет ли мешать preempt_rt xenomai-ну?
Ядро пока не собирал.

Эксперименты провожу с ядром 4.19.55
linux-4.19.55
xenomai-3.1
ipipe-core-4.19.55-arm64-4.patch
preempt_rt patch-4.19.59-rt24.patch
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение going » 03 мар 2020, 18:06

DmitriiNT писал(а):накладываются с ошибками. Может в этом причина.

Смотри исходники LinuxCNC.
Выложи сюда под спойлер текст вывода (log) configure
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
 
Сообщения: 499
Зарегистрирован: 29 сен 2013, 20:55
Откуда: г.Киров
Репутация: 127

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

Сообщение going » 03 мар 2020, 18:09

DmitriiNT писал(а):Кто нибудь пробовал применить одновременно патчи preempt_rt и ipipe-core xenomai?

А зачем?
Надо либо то, либо это. Но патч "preempt_rt " не даёт существенных преимуществ для платформы на чипах allwiner.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
 
Сообщения: 499
Зарегистрирован: 29 сен 2013, 20:55
Откуда: г.Киров
Репутация: 127

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

Сообщение DmitriiNT » 10 мар 2020, 22:26

Доброго времени суток всем!
Вообщем никак у меня не получается подружить Linuxcnc и Xenomai :freak:
Все собирается без единой ошибки, устанавливается, запускается, но ...
Код: Выделить всёРазвернуть
LINUXCNC - 2.8.0~pre1
Machine configuration directory is '/home/cnc/linuxcnc/configs/sim.axis'
Machine configuration file is 'axis_mm.ini'
Starting LinuxCNC...
Found file(lib): /usr/share/linuxcnc/hallib/core_sim.hal
[b]Note: Using POSIX non-realtime[/b]
Found file(lib): /usr/share/linuxcnc/hallib/sim_spindle_encoder.hal
Found file(lib): /usr/share/linuxcnc/hallib/axis_manualtoolchange.hal
Found file(lib): /usr/share/linuxcnc/hallib/simulated_home.hal
note: MAXV     max: 53.340 units/sec 3200.400 units/min
note: LJOG     max: 53.340 units/sec 3200.400 units/min
note: LJOG default: 30.480 units/sec 1828.800 units/min
note: jog_order='XYZ'
note: jog_invert=set([])
task: main loop took 0.019612 seconds

Такое ощущение, что где то разрешения или правила не прописаны...?

Во вложении готовые пакеты с LinuxCNC для OrangePI PC2.
Вложения
linuxcnc-uspace_2.8.0~pre1_arm64.zip
Устанавливаются легко с помощью GDebi
(25.11 Мб) Скачиваний: 82
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение DmitriiNT » 10 мар 2020, 22:50

Добавил правила для xenomai в /etc/udev/rules.d/xenomai.rules
Код: Выделить всёРазвернуть
# Don't let udev mess with our special network names
KERNEL=="vnic*|rteth*|rtlo", NAME="$env{INTERFACE_NAME}"
# Xenomai real-time devices
SUBSYSTEM=="rtdm", MODE="0660", GROUP="xenomai"
# allow RW access to /dev/mem
KERNEL=="mem", MODE="0660", GROUP="kmem"
# real-time heap device (Xenomai:rtheap)
KERNEL=="rtheap", MODE="0660", GROUP=="xenomai"
# real-time pipe devices (Xenomai:rtpipe)
KERNEL=="rtp[0-9]*", MODE="0660", GROUP="xenomai"


Добавил юзера cnc в группы:

Код: Выделить всёРазвернуть
usermod -a -G xenomai,sudo,staff,kmem cnc


Все равно, Note: Using POSIX non-realtime - что то еще надо...?
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение DmitriiNT » 10 мар 2020, 23:41

Отчет о сборке:
Вложения
linuxcnc_2.8.0~pre1_arm64.txt
(763.05 Кб) Скачиваний: 174
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение UAVpilot » 11 мар 2020, 03:39

Проверь попадают-ли в собираемый .deb файлы libuspace-xenomai.so.0 и libuspace-xenomai.so
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20120
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4839
Заслуга: !!!
Медальки:
Настоящее имя: Сергей

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

Сообщение MX_Master » 11 мар 2020, 04:30

Аватара пользователя
MX_Master
Мастер
 
Сообщения: 5742
Зарегистрирован: 27 июн 2015, 19:45
Откуда: Алма-Ата
Репутация: 2578
Медальки:
Настоящее имя: Миша

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

Сообщение DmitriiNT » 11 мар 2020, 08:51

UAVpilot писал(а):Проверь попадают-ли в собираемый .deb файлы libuspace-xenomai.so.0 и libuspace-xenomai.so

Доброго Вам!

Есть такие файлы:
libuspace-xenomai.so.0 - в пакете linuxcnc-uspace-xenomai_2.8.0~pre1_arm64.deb
libuspace-xenomai.so - в пакете linuxcnc-uspace-dev_2.8.0~pre1_arm64.deb

После установки файлы лежат соответственно в:
Код: Выделить всёРазвернуть
/usr/lib/libuspace-xenomai.so.0
/usr/lib/libuspace-xenomai.so
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение DmitriiNT » 11 мар 2020, 08:53

MX_Master писал(а):https://github.cnc32.ru/orangecnc/linuxcnc/commit/b87ad1a602fd2b98503f60b5e9c4aaff544cb529

Доброго Вам!
Не понял??? Это отключается проверка что-ли?
Там чуть выше есть:
Код: Выделить всёРазвернуть
#ifdef USPACE_XENOMAI
static int detect_xenomai() {
    struct utsname u;
    uname(&u);
    return strcasestr (u.release, "-xenomai") != 0;
}
#else
static int detect_xenomai() {
    return 0;
}
#endif
...
...

static int detect_realtime() {
    struct stat st;
    if ((stat(EMC2_BIN_DIR "/rtapi_app", &st) < 0)
            || st.st_uid != 0 || !(st.st_mode & S_ISUID))
        return 0;
    return detect_env_override() || detect_preempt_rt() || detect_rtai() || detect_xenomai();
}

И при сборке реально определяется USPACE_XENOMAI
Код: Выделить всёРазвернуть
checking rpc/rpc.h presence... yes
checking for rpc/rpc.h... yes
checking for rtai-config... none
checking for xeno-config... /usr/bin/xeno-config
checking for realtime API(s) to use... uspace+xenomai
checking whether to enable userspace PCI access... yes
checking for libudev... yes - version 237
checking for cc version... not specified
Последний раз редактировалось DmitriiNT 11 мар 2020, 11:24, всего редактировалось 1 раз.
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение MX_Master » 11 мар 2020, 11:22

Попробуй. Если после этого latency-test станет краше, значит, дело только в проверке.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 5742
Зарегистрирован: 27 июн 2015, 19:45
Откуда: Алма-Ата
Репутация: 2578
Медальки:
Настоящее имя: Миша

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

Сообщение DmitriiNT » 11 мар 2020, 11:37

MX_Master писал(а):Попробуй. Если после этого latency-test станет краше, значит, дело только в проверке.

Вечером попробую.
Анализируя логи, меня еще вот беспокоит что:
Код: Выделить всёРазвернуть
...
Compiling hal/hal_lib.c
Compiling rtapi/uspace_xenomai.cc
rtapi/uspace_xenomai.cc: In member function ‘virtual unsigned char {anonymous}::XenomaiApp::do_inb(unsigned int)’:
rtapi/uspace_xenomai.cc:130:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
Compiling rtapi/uspace_ulapi.c
...

Ошибка детская :) но всё же...
А может и не детская...
Код: Выделить всёРазвернуть
#ifdef HAVE_SYS_IO_H
#include <sys/io.h>
#endif
...
...
unsigned char do_inb(unsigned int port) {
#ifdef HAVE_SYS_IO_H
        return inb(port);
#endif
    }

    void do_outb(unsigned char val, unsigned int port) {
#ifdef HAVE_SYS_IO_H
        return outb(val, port);
#endif
    }
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение UAVpilot » 11 мар 2020, 12:21

DmitriiNT писал(а):Не понял??? Это отключается проверка что-ли?

Проверяет наличие слова "-xenomai" в выводе "uname -a".

DmitriiNT писал(а):Ошибка детская :) но всё же...
А может и не детская...

Ошибка детская, но нужно смотреть контекст - если результат функции нигде не используется, то при компиляции современными версиями gcc будет только это предупреждение, ну и неаккуратный код.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20120
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4839
Заслуга: !!!
Медальки:
Настоящее имя: Сергей

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

Сообщение DmitriiNT » 11 мар 2020, 18:36

4-я попытка подружить linuxcnc и xenomai не увенчалась успехом. :cry:
Опять Note: Using POSIX non-realtime :freak:
Интересно, у кого-нибудь получилось?
Хочу увидеть: Note: Using POSIX realtime
Вложения
Xenomai + LinuxCNC, EVL + LinuxCNC из исходников Screenshot from 2020-03-11 20-27-35.png
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение DmitriiNT » 11 мар 2020, 20:51

А знает ли великий All, как в данном проекте можно отдельную библиотеку скомпилировать со всеми путями #include-никами?
Пробовал стандартно - но, gcc include видит только в <>, а локальные "" не видит. А прописывать руками пути очень муторно???
Нужно uspace_rtapi_app.cc пересобрать.
В ней собака порылась. имхо.
Поискал я тут откуда эта фраза Using POSIX non-realtime берется:
Код: Выделить всёРазвернуть
cnc@orangepipc2:~$ grep -r "Using POSIX non-realtime" /home/cnc/emc/
Binary file /home/cnc/emc/debian/linuxcnc-uspace/usr/bin/rtapi_app matches
/home/cnc/emc/src/rtapi/uspace_rtapi_app.cc:        rtapi_print_msg(RTAPI_MSG_ERR, "Note: Using POSIX non-realtime\n");
Binary file /home/cnc/emc/src/objects/rtapi/uspace_rtapi_app.o matches
Binary file /home/cnc/emc/bin/rtapi_app matches
/home/cnc/emc/docs/src/gui/gscreen.txt:Note: Using POSIX non-realtime
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение UAVpilot » 11 мар 2020, 21:36

DmitriiNT писал(а):А знает ли великий All, как в данном проекте можно отдельную библиотеку скомпилировать со всеми путями #include-никами?

Это как? Скомпилированные библиотеки содержат только объектные файлы, никаких .h в них нет.

DmitriiNT писал(а):Пробовал стандартно - но, gcc include видит только в <>, а локальные "" не видит. А прописывать руками пути очень муторно???

:wik:
Код: Выделить всёРазвернуть
$ cat t.h
#define HELLO "Hello, World!"

$ cat t.c
#include <stdio.h>
#include "t.h"

void main(void) {
  printf("%s\n", HELLO);
}

$ make t
cc     t.c   -o t
$ ./t
Hello, World!
$ cc --version
cc (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1)
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$


<file.h> - файл ищется только в каталогах, заданных опциями "-I", ну и в "стандартных".
"file.h" - файл ищется там-же и ещё в текущем каталоге.
Т.е. например
Код: Выделить всёРазвернуть
#include "stdio.h"

тоже будет работать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20120
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4839
Заслуга: !!!
Медальки:
Настоящее имя: Сергей

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

Сообщение DmitriiNT » 11 мар 2020, 21:53

Спасибо! Разобрался.
Пока копаю глубже...
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение DmitriiNT » 11 мар 2020, 23:29

Ну вот, все таки хакнул я LinuxCNC. :hehehe: Note: Using POSIX realtime :hehehe:
Работы конечно еще много, но я на правильном пути...
Latency можно до 12-15 мкс довести. :good:
Вложения
Xenomai + LinuxCNC, EVL + LinuxCNC из исходников Screenshot from 2020-03-12 01-21-17.png
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение DmitriiNT » 12 мар 2020, 06:24

Продолжаем!
Выделил два ядра (2,3) xenomai-ну, а грузится только одно - последнее 3-е ядро. Как-то странно он нагрузку распределяет. :wik:
Кстати, когда ксеномайновский latency тест (2730 ns) запускаешь параллельно с нашим, - наш просто отдыхает.
Кто знает, за связь с Cobalt-ом в LinuxCNC какие файлы отвечают?
Может можно их переписать, и заставить работать base_thread в пространстве ядра?
И еще hal_gpio драйвер где посмотреть можно? Что бы он с Cobalt-ом работал.
Мне бы хотя бы образец. Так сказать, с чего начать...
Вложения
Xenomai + LinuxCNC, EVL + LinuxCNC из исходников Screenshot from 2020-03-12 08-04-48.png
DmitriiNT
Кандидат
 
Сообщения: 56
Зарегистрирован: 11 дек 2019, 20:17
Репутация: 6
Настоящее имя: Дмитрий

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

Сообщение MX_Master » 12 мар 2020, 11:35

Дмитрий, не забывай, что кроме значения latency, ещё важно знать, сколько времени занимает сам базовый период. В нём, как минимум, будут крутится 3 функции - gpio.read, stepgen.make-pulses и gpio.write. Процессор апельсина, который работает на частоте ~1.3 ГГц, в этом плане даже до 4-го пня (3 ГГц) не дотягивает ;)

По моим прикидкам, gpio.read и write в апельсине могут вместе занимать до 20 мкс и более. Если прибавить сюда время от stepgen.make-pulses, общая сумма станет заметно больше. К тому же, я сомневаюсь, что кто-то возьмётся переписывать эти фунции на ассемблере, чтобы хоть как-то сократить время их выполнения.

Так что, перед игрищами с latency, я бы для начала замерил базовый период, а уж потом бежал уменьшать latency :)
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 5742
Зарегистрирован: 27 июн 2015, 19:45
Откуда: Алма-Ата
Репутация: 2578
Медальки:
Настоящее имя: Миша

Пред.След.

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

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

Зарегистрированные пользователи: arisov77, BINAR, Bing [Bot], frezeryga, Gestap, Google [Bot], Majestic-12 [Bot], michalych, NikolayUa24, PRomanS, Q-starь, RNDL, shalek, sima8520, Tigra73, Yandex [bot], Леонид Владимирович

Reputation System ©'