Xenomai + LinuxCNC, EVL + LinuxCNC из исходников
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
И, что бы далеко не уходить от дискуссии, попробую адаптировать оригинальный драйвер ядра v4.4 к v5.0.
За основу возьму
https://github.com/BPI-SINOVOIP/BPI-M2P ... io-sunxi.c
https://github.com/BPI-SINOVOIP/BPI-M2P ... pio/gpio.h
https://github.com/BPI-SINOVOIP/BPI-M64 ... io-sunxi.c
https://github.com/BPI-SINOVOIP/BPI-M64 ... pio/gpio.h
https://github.com/BPI-SINOVOIP/BPI-M64 ... nxi-gpio.h
И немного адаптирую rtapi linuxcnc
За основу возьму
https://github.com/BPI-SINOVOIP/BPI-M2P ... io-sunxi.c
https://github.com/BPI-SINOVOIP/BPI-M2P ... pio/gpio.h
https://github.com/BPI-SINOVOIP/BPI-M64 ... io-sunxi.c
https://github.com/BPI-SINOVOIP/BPI-M64 ... pio/gpio.h
https://github.com/BPI-SINOVOIP/BPI-M64 ... nxi-gpio.h
И немного адаптирую rtapi linuxcnc
Платы: BPI-M3, BPI-A64, OPI-PC2
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Ты, главное там сильно не настраивайся на хороший результат (: чтобы сильно не расстраиваться
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
SRAM и шина к ней у него общая для всех ядер... Разве что попробовать запустить RT-задачи на одном кластере, чтоб они полностью помещались в L2... Но всё равно остаётся общий доступ к периферии...MX_Master писал(а):Сергей, как вы считаете, а в ARM чипах, где есть два и более процессоров (rk3399 например). Будут ли они мешать друг другу, если один из них используется только для работы с GPIO и юзает только встроенную SRAM?
Увы, но все подобные потуги в конечном итоге являются попытками "обмануть природу". Я не агитирую за "всё бросить и смириться", я о том, что нужно понимать теоретические пределы этих потуг.going писал(а):Но в новом подходе Philippe Gerum вроде как пытается решить эту проблему.
И ведёт речь о десятых долях микросекунды. На днях попробую это проверить.
Оно может показывать замечательные результаты, пока вдруг не наткнётся на какой-нибудь цикл DMA, которые длинее RT-периода (сервоцикла в нашем случае) - даже если этот цикл DMA прерывать ради RT, он (цикл) просто никогда не завершится...
Если помечтать, то для "архитектуры" LinuxCNC мне видится такое решение:
1. отдельный процессор со своей памятью и т.п., на котором работает Linux и часть LinuxCNC, которой не требуется RT. Т.е. подойдет то, что ставят на все эти платки, только желательно от 2GB и от 1.5GHz.
2. МК класа stm32f4 или выше со своей Flash и RAM для RT задач - планировщик траектории, кинематика, интерполяция и т.п., или Motion controller другими словами. Возможно и логика nonRT периферии (шпиндель, СОЖ, светофор, и т.п.), если ресурсов хватит.
3. FPGA для HAL-компонентов и прочей логики, тут-же и сами "физические пины" - Эти задачи прям так и просятся в FPGA...
В идеале 2 и 3 на одном чипе (SoC).
В принципе всё это вполне реально в ближайшем будущем. п.1 вы тут активно реализуете в соседней теме, п.2 я уже пробовал - работает. п.3 в принципе реализуемо и будет работать, но мне интересно попробовать сделать что-то вроде компилятора HAL-файлов в "прошивку" для FPGA...
Мне эта тема интересна, останавливает лишь нехватка времени. Вот выгонят на пенсию - займусь.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Вот железо для 1и3, 1и2 в одном чипе я видел, а чтобы 2и3 - не встречал. Возможно, плохо искал.UAVpilot писал(а): В идеале 2 и 3 на одном чипе (SoC).
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
А чем тебе "1и3" вместо "2и3" плох?
В чистом виде чипы в виде MK класа stm32f4..7 + eFPGA вряд ли будут - нет особого смысла и не те скорости, а вот образцы "1и2и3" уже давно есть, правда пока о коммерческих не слышал.
В чистом виде чипы в виде MK класа stm32f4..7 + eFPGA вряд ли будут - нет особого смысла и не те скорости, а вот образцы "1и2и3" уже давно есть, правда пока о коммерческих не слышал.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Я люблю микроконтроллеры (: и не работал с fpgaUAVpilot писал(а):А чем тебе "1и3" вместо "2и3" плох?
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
....UAVpilot писал(а):Оно может показывать замечательные результаты, пока вдруг не наткнётся на какой-нибудь
Да, обязательно наткнётся.
Тут дело принципа. Хочется разобраться, как внутри ядра linux реалтайм организован.
Анекдот по случаю вспомнил. Старый. Бородатый.
Женщина приходит в ателье. Выкладывает на прилавок рулон красивого ситца и говорит:
- Сшейте мне пожалуйста ночную сорочку 7 метров длиной.
Над ней посмеялись сначала, а потом спрашивают:
- Хорошо сделаем, только скажите почему такая длина? Это неудобно носить.
- Всё просто. У меня муж физик-исследователь. Ему не важен результат. Его интересует путь исследования.
Платы: BPI-M3, BPI-A64, OPI-PC2
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
В качестве исследования. Более наглядный результат работы железа даст запуск крохотной bare metal прошивки на, скрытом от Linux ядре проца. Прошивка должна в бесконечном цикле теребить 1 gpio пин.
Подключаешь лог. анализатор к этому пину, начинаешь запись вывода и по всякому нагружаешь linux. Неважно с каким ядром.
Если в выводе пина не будет никаких пауз (просто ~2.5МГц меандр), то чип подходит для дальнейших экспериментов (:
Подключаешь лог. анализатор к этому пину, начинаешь запись вывода и по всякому нагружаешь linux. Неважно с каким ядром.
Если в выводе пина не будет никаких пауз (просто ~2.5МГц меандр), то чип подходит для дальнейших экспериментов (:
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
А почему 2,5 МГц? Из каких соображений цифра?MX_Master писал(а):Если в выводе пина не будет никаких пауз (просто ~2.5МГц меандр), то чип подходит для дальнейших экспериментов (:
Платы: BPI-M3, BPI-A64, OPI-PC2
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Опытным путём получена на проце H3. Простой программный ногодрыг без DMA. Причём, это значение одно и то же, и для основного проца (1,2 ГГц), и для сопроцессора (450 МГц). Значение плавает от 2,5 МГц до 2,7 МГц. На основном чипе на 3-ядрах при этом работал linux, а на изолированном только ногодрыг (+ системные процессы linux).going писал(а):А почему 2,5 МГц? Из каких соображений цифра?
http://www.cnc-club.ru/forum/viewtopic. ... 68#p383768
Чтобы получить что-то быстрее, нужны уже аппаратные средства.
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Михаил, а ты не задавался вопросом, почему значения очень близкие и там и там? Основной проц явно может быстее.MX_Master писал(а):Причём, это значение одно и то же, и для основного проца (1,2 ГГц), и для сопроцессора (450 МГц). Значение плавает от 2,5 МГц до 2,7 МГц.
И сопроцессор с 450 МГц может выдать явно больше?
Платы: BPI-M3, BPI-A64, OPI-PC2
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Канеш, могут. Но это будет уже неконтролируемый ногодрыг без подсчёта. А нам тут в ЧПУ просто позарез нужно знать, сколько надёргано (:
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Научил linuxcnc собираться в пакеты *.deb для ОС bionic (Ubuntu 18.04.x). Нативная сборка в chroot.
И первое, что заметил, это нестыковка версий компиляторов.
В armbian ядро собирается кросскомпиляцией (gcc 7.2) - в системе (gcc 7.3) и т.д..
Придётся учить ядро собираться в chroot окружении в стиле Ubuntu, как и все последующие пакеты.
Но это уже будет отличаться от armbian.
Видится два варианта.
1) Отдать необходимые изменения непосредственно команде armbian.
Они вроде бы начали принимать мои исправления.
2) Поступить, как давно предлагал Михаил (MX_Master), переделать форк armbian, и продвигать его самостоятельно.
И первое, что заметил, это нестыковка версий компиляторов.
В armbian ядро собирается кросскомпиляцией (gcc 7.2) - в системе (gcc 7.3) и т.д..
Придётся учить ядро собираться в chroot окружении в стиле Ubuntu, как и все последующие пакеты.
Но это уже будет отличаться от armbian.
Видится два варианта.
1) Отдать необходимые изменения непосредственно команде armbian.
Они вроде бы начали принимать мои исправления.
2) Поступить, как давно предлагал Михаил (MX_Master), переделать форк armbian, и продвигать его самостоятельно.
Платы: BPI-M3, BPI-A64, OPI-PC2
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Тогда покажи исходник этого ногодрыга. Я думал, там простой цикл записи в порт по очереди высокого - низкого уровней.MX_Master писал(а):Канеш, могут.
Честно говоря, меня больше интересует запись в порт по таймеру.
Дёргать пином в нужный момент времени, который мы вычислили.
Платы: BPI-M3, BPI-A64, OPI-PC2
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Чё там показывать (: обычный цикл, в котором одна переменная увеличивается на 1 и пишется константа 32 бита в порт, всё
В прошивке сопроцессора (H3) я юзаю системный таймер и дёргаю пины только, когда надо. Но при таком подходе все накладные расходы сводят макс. скорость ногодрыга к 200-300 КГц.
В прошивке сопроцессора (H3) я юзаю системный таймер и дёргаю пины только, когда надо. Но при таком подходе все накладные расходы сводят макс. скорость ногодрыга к 200-300 КГц.
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Значи, я всё правильно понял.
Платы: BPI-M3, BPI-A64, OPI-PC2
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC из исходников -> x86, x86_64, arm, ar
Выделил немного времени. Собрал с небольшими исправлениями linux-v5.2.1 Dovetail
https://evlproject.org/dovetail/
и вот новые тесты:
В консоли (без Х сервера) на выделенном ЦПУ тест задержки для IRQ В консоли (без Х сервера) на выделенном ЦПУ тест задержки в пространстве ядра В консоли (без Х сервера) на выделенном ЦПУ тест задержки в пространстве пользователя В графическом режиме на выделенном ЦПУ при нагрузке glxgears тест задержки:
для IRQ -12
в пространстве ядра 28
в пространстве пользователя 180
Тест проводился на плате Bananapi-M64 с процессором А64 и корневым разделом на медленной флешке
https://evlproject.org/dovetail/
и вот новые тесты:
В консоли (без Х сервера) на выделенном ЦПУ тест задержки для IRQ В консоли (без Х сервера) на выделенном ЦПУ тест задержки в пространстве ядра В консоли (без Х сервера) на выделенном ЦПУ тест задержки в пространстве пользователя В графическом режиме на выделенном ЦПУ при нагрузке glxgears тест задержки:
для IRQ -12
в пространстве ядра 28
в пространстве пользователя 180
Тест проводился на плате Bananapi-M64 с процессором А64 и корневым разделом на медленной флешке
Платы: BPI-M3, BPI-A64, OPI-PC2
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Xenomai + LinuxCNC, EVL + LinuxCNC из исходников
Сылка на старый образ для OPI-PC2. + набор пакетов ядра xenomai и библиотеки.
https://yadi.sk/d/uXABC7CLsHzd8A
годится только для тестов.
https://yadi.sk/d/uXABC7CLsHzd8A
годится только для тестов.
Платы: BPI-M3, BPI-A64, OPI-PC2
-
- Кандидат
- Сообщения: 56
- Зарегистрирован: 11 дек 2019, 20:17
- Репутация: 6
- Настоящее имя: Дмитрий
- Контактная информация:
Re: Xenomai + LinuxCNC, EVL + LinuxCNC из исходников
[anchor_link=][/anchor_link]
А пользователь и пароль на вход?
Спасибо! Накатил образ на sdcard.going писал(а):Сылка на старый образ для OPI-PC2. + набор пакетов ядра xenomai и библиотеки.
https://yadi.sk/d/uXABC7CLsHzd8A
годится только для тестов.
А пользователь и пароль на вход?