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

Общие вопросы по операционным системам семейства Linux.
Аватара пользователя
donvictorio
Мастер
Сообщения: 2441
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 680
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

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

Сообщение donvictorio »

going писал(а):А просто собрать образ с обычным ядром, т.е. тот который по умолчанию, собирается?
неа, в конце выдаёт

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

Makefile:1034: recipe for target 'drivers' failed
make: *** [drivers] Error 2
[ error ] ERROR in function compile_kernel [ compilation.sh:364 ]
[ error ] Kernel was not built [ @host ]
[ o.k. ] Process terminated
или
(для просмотра содержимого нажмите на ссылку)

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

[ o.k. ] Building deb [ linux-u-boot-orangepipc_5.51_armhf.deb ]
[ o.k. ] Cleaning [ linux-sun8i/sun8i ]
[ o.k. ] Started patching process for [ kernel sun8i-default ]
[ o.k. ] Looking for user patches in [ userpatches/kernel/sun8i-default ]
[ warn ] * [l][c] 0001-Fix-compilation-problems-with-more-modern-version-of.patch [ failed ]
[ warn ] * [l][c] 0001-Fix-ump-build.patch [ failed ]
[ warn ] * [l][c] 0001-UBUNTU-SAUCE-AppArmor-Add-profile-introspection-file.patch [ failed ]
[ warn ] * [l][c] 0001-gc2035-camera-improvements.patch [ failed ]
[ warn ] * [l][c] 0001-hid-Add-new-driver-for-non-compliant-Xin-Mo-devices.patch [ failed ]
[ warn ] * [l][c] 0001-vfe-sets-valid-input-when-open-device.patch [ failed ]
[ warn ] * [l][c] 0002-UBUNTU-SAUCE-AppArmor-basic-networking-rules.patch [ failed ]
[ warn ] * [l][c] 0003-UBUNTU-SAUCE-apparmor-Add-the-ability-to-mediate-mou.patch [ failed ]
[ warn ] * [l][c] 0006-sunxi-disp2-FBIO_WAITFORVSYNC-as-a-modifier-for-FBIO.patch [ failed ]
[ warn ] * [l][c] 0010-Import-GMAC_PHY_POWER-support-from-the-loboris-sourc.patch [ failed ]
[ warn ] * [l][c] 0011-gpu-drm-Add-Mali-DX910-SW-99002-r2p4-02rel1.patch [ failed ]
[ o.k. ] * [l][c] 0012-drm-mali-fix-for-3.4.patch
[ o.k. ] * [l][c] 0013-gpu-drm-mali_drv-fixed-integration-with-3.x-kernels-.patch
[ warn ] * [l][c] 0015-Fix-paths-to-files-in-src-erroneously-searched-for-i.patch [ failed ]
[ warn ] * [l][c] 0016-gcc5-fixes.patch [ failed ]
[ o.k. ] * [l][c] 0017-linux-sunxi-add-missing-compiler-gcc5.h-from-master.patch
[ warn ] * [l][c] 0023-WIP-remove-vsync_task-from-sunxi-fb-driver.patch [ failed ]
[ warn ] * [l][c] 0024-pwm-sunxi-support-for-H3-as-appears-in-loboris-initi.patch [ failed ]
[ warn ] * [l][c] 0025-h3-hdmi-table-reformatting-for-readability-from-lobo.patch [ failed ]
[ warn ] * [l][c] 0026-h3-hdmi-additional-mode-800x480p-from-lobodis-initia.patch [ failed ]
[ warn ] * [l][c] 0027-h3-hdmi-HDMI_EDID-from-loboris-initial-source-import.patch [ failed ]
[ warn ] * [l][c] 0028-lower-minimal-dram-clock-to-132-mhz.patch [ failed ]
[ warn ] * [l][c] 0099-eMMC-fix-sunvellR69.patch [ failed ]
[ warn ] * [l][c] 02-0003-linux-sunxi-3.4.108-overlayfs.patch [ failed ]
[ warn ] * [l][c] 02-0005-backport-firmware-loader.patch [ failed ]
[ warn ] * [l][c] 02-0007-fbdev-fixes.patch.patch [ failed ]
[ warn ] * [l][c] 02-0008-backport-lirc-sunxi-driver.patch [ failed ]
[ warn ] * [l][c] 02-0009-unify-ethernet-settings.patch [ failed ]
[ warn ] * [l][c] 02-0010-export_read_current_timer.patch [ failed ]
[ warn ] * [l][c] 02-0011-fbtft_for_older.patch [ failed ]
[ warn ] * [l][c] 02-0013-w1_h3.patch [ failed ]
[ warn ] * [l][c] 02-0014-no_dev_console.patch [ failed ]
[ warn ] * [l][c] 02-0015-openelec-audio-and-video-fixes.patch [ failed ]
[ warn ] * [l][c] 02-rtl2832.patch [ failed ]
[ warn ] * [l][c] add-mali-r3p0-fixed.patch [ failed ]
[ warn ] * [l][c] bash_to_afterinstall.patch [ failed ]
[ warn ] * [l][c] cedar-remove-insecure-code.patch [ failed ]
[ warn ] * [l][c] cpufreq-add-more-frequencies.patch [ failed ]
[ warn ] * [l][c] disp2-fb-force-soft-cursor.patch [ failed ]
[ warn ] * [l][c] enable_g_ether.patch [ failed ]
[ warn ] * [l][c] fix-kswapd.patch [ failed ]
[ warn ] * [l][c] friendlyarm_audio_able_to_handle_situation_without_audio_pa_ctrl_.patch [ failed ]
[ warn ] * [l][c] friendlyarm_crypto_add_CMAC_support_to_CryptoAPI.patch [ failed ]
[ warn ] * [l][c] friendlyarm_fix_nanopi-air_sdcard_detect_mode.patch [ failed ]
[ warn ] * [l][c] friendlyarm_m1_gigabit.patch [ failed ]
[ warn ] * [l][c] friendlyarm_not_print_debug_info_when_camera_is_detached.patch [ failed ]
[ warn ] * [l][c] friendlyarm_watchdog_not_print_err_info_when_timeout_is_invalid.patch [ failed ]
[ warn ] * [l][c] linux-200-wifi-mac-fix.patch [ failed ]
[ warn ] * [l][c] linux-202-bcmdhd-add-wow-selection.patch [ failed ]
[ warn ] * [l][c] linux-203-rf_pm-auto-power-on.patch [ failed ]
[ warn ] * [l][c] linux-509-support-for-dvbsky-usb-receiver.patch [ failed ]
[ warn ] * [l][c] linux-82-fix-build-on-non-amd64-hosts.patch [ failed ]
[ warn ] * [l][c] linux-88-enable-tv.patch [ failed ]
[ warn ] * [l][c] m2-plus-ap6212-wireless.patch [ failed ]
[ warn ] * [l][c] m2-update-bcmdhd-driver.patch [ failed ]
[ warn ] * [l][c] make-irq-set-affinity-hint-work-properly.patch [ failed ]
[ warn ] * [l][c] matrix-support-Matrix-starter-kit.patch [ failed ]
[ warn ] * [l][c] ov5640-enhanced-driver-with-vfe-drc-table-fix.patch [ failed ]
[ warn ] * [l][c] packaging-3.4.x-DEFAULT-with-postinstall-scripts.patch [ failed ]
[ warn ] * [l][c] packaging-text-fix.patch [ failed ]
[ warn ] * [l][c] remove-sunxi-debug.patch [ failed ]
[ warn ] * [l][c] sun8i-add-scaling_available_freqs-sysfs-node.patch [ failed ]
[ warn ] * [l][c] sun8i-led-behaviour-through-fex.patch [ failed ]
[ warn ] * [l][c] sun8i-simple-cpu-corekeeper.patch [ failed ]
[ warn ] * [l][c] tbs5520.patch [ failed ]
[ warn ] * [l][c] wdt_reduce_logging.patch [ failed ]
[ warn ] * [l][c] wireless-opi-zero.patch [ failed ]
[ warn ] * [l][c] z-0003-add-additional-video-modes.patch [ failed ]
grep: Makefile: No such file or directory
sed: can't read Makefile: No such file or directory
grep: /root/build/cache/sources/linux-sun8i/sun8i/Makefile: No such file or directory
grep: /root/build/cache/sources/linux-sun8i/sun8i/Makefile: No such file or directory
grep: /root/build/cache/sources/linux-sun8i/sun8i/Makefile: No such file or directory
grep: /root/build/cache/sources/linux-sun8i/sun8i/Makefile: No such file or directory
[ .... ] Compressing sources for the linux-source package
6,78MiB [60,8MiB/s] [===========================================================================================> ] 99%
cp: cannot stat 'COPYING': No such file or directory
[ o.k. ] Compiling default kernel [ 0 ]
[ o.k. ] Compiler version [ arm-linux-gnueabihf-gcc 5.5.0 ]
[ o.k. ] Using kernel config file [ config/kernel/linux-sun8i-default.config ]
make: *** No rule to make target 'oldconfig'.  Stop.
make: *** No rule to make target 'menuconfig'.  Stop.
[ o.k. ] Exporting new kernel config [ /root/build/output/linux-sun8i-default.config ]
make: *** No rule to make target 'zImage'.  Stop.
[ error ] ERROR in function compile_kernel [ compilation.sh:364 ]
[ error ] Kernel was not built [ @host ]
[ o.k. ] Process terminated
я вы можете собрать образ для этой платы и потом пропатчить ядро? все равно ведь это все в виртуалке делается.
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

donvictorio писал(а):Started patching process for [ kernel sun8i-default ]
Сборка идёт для ядра 3.4. В armbian я не пробовал собирать для устаревших ядер.

Попробуйте при запуске

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

armbian_build> ./cmpile.sh
Выбрать сборку next
next_insert.png
next_insert.png (4.16 КБ) 3675 просмотров
donvictorio писал(а):вы можете собрать образ для этой платы
Немного позднее обязательно соберу.

А вот это должно работать.
http://www.cnc-club.ru/forum/viewtopic. ... 88#p382868
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
donvictorio
Мастер
Сообщения: 2441
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 680
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

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

Сообщение donvictorio »

going писал(а):А вот это должно работать.
http://www.cnc-club.ru/forum/viewtopic. ... 88#p382868
так мож его и пропатчить? там уже есть машинокит. сразу будет видно разницу. или я несу пургу?
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

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

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

Сообщение Olej »

solo писал(а): а для малинки и других (x86, x86_64, arm, arm64) было бы интересно если б кто помог с инструкцией ( для чайниковатых пользователей )
Для Rapsberry Pi есть готовый hard realtime образ здесь: Raspberry Pi image for the Pi zero,1,2,3 with Xenomai 3.0.5 on Raspbian linux 4.1.y Debian 8 jessie.
Берите, накатывайте на SD-карточку и пользуйтесь.
Проверено!
По всем показателям - hard realtime, то что называют RTLinux - в сравнение не конает. :yawn:
Аватара пользователя
Olej
Кандидат
Сообщения: 66
Зарегистрирован: 03 июл 2018, 22:41
Репутация: 4
Настоящее имя: Олег Цилюрик
Откуда: Харьков
Контактная информация:

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

Сообщение Olej »

going писал(а): Вот здесь, правда устаревшая, инструкция по сборке для малины:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... nomaiBuild
Это описание для предыдущего поколения Xenomai - 2.6.X.
Отличия нынешних 3.0.Х - радикальные.
Но это описание может выстрелить ... если повозиться.
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Переехал на "bionic"
и в консоли наблюдаю следующее:
locale_is_not_ru_RU.png
locale_is_not_ru_RU.png (1.25 КБ) 3603 просмотра
Т.е. раскладка переключается, система пытается выводить русские буквы, а видно квадратики.

Старая проблема ubuntu. Зарыта где то в скриптах инициализации.
Простая проверка:

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

cd ~
setupcon
всё работает
Что бы автоматом выполнялось при входе пользователя:

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

echo -e "\nsetupcon 2>/dev/null" >>.profile
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

going писал(а):Переехал на "bionic"
Делаю контрольную сборку образа и обнаруживаю, что ядро в ветке "master" -> v4.17.y и патчи применимы к этому ядру.
:pssdoff: "Шеф всё пропало. Клиент уезжает. ...." Мне надо v4.14.y и патчи к нему.
Вот и настал момент прелестей GIT.
Изучаю историю и обнаруживаю, что 2018-07-17 12:43:16 commit 1d18b1ea1b51236acba56b3f234334ed8ef062f4
соответствующий тегу sunxi-4.14 был последним с ядром v4.14.y. Далее идут радикальные изменения.
Оказалось всё просто:
(для просмотра содержимого нажмите на ссылку)

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

build> git branch
* master
build> git tag | grep "4.14"
sunxi-4.14
build> git checkout -b my-v4.14 sunxi-4.14
Переключено на новую ветку «my-v4.14»
build> git branch
  master
* my-v4.14
cd patch/kernel/sunxi-next
build/patch/kernel/sunxi-next> ls
0001-aufs4.14-20171218.patch                        add-hdmi-net-bits-beelinkx3.patch
00-19-add-H3-i2s-DT-nodes.patch                     add-missing-spi-a64.patch
00-20-add-i2s-DT-pins.patch                         add-nanopi-duo.patch
00-readd-dwmac-sun8i-compatibles.patch              add-nanopi-m1-plus2.patch
00-readd-dwmac-sun8i-DT-bindings-arm64.patch        add-opi-pc-plus-wifi-pwrseq.patch
00-readd-dwmac-sun8i-DT-bindings.patch              add-orangepi-zeroplus2.patch
02-add-H3-mixers.patch                              add_otg_neoair.patch
03-add-H3-TCONs.patch                               add-overlay-compilation-support.patch
04-add-H3-DE-compatible.patch                       add-r40-m2ultra-a83t-i2s-i2c.patch
05-clk_de-allow-set-rate-parent.patch               add-realtek-8189fs-driver.patch
06-export-H3-clk-pll-de.patch                       add-sdio-wifi-orangepi-zero-plus2.patch
07-1-add-H3-H5-DE2-DT-nodes.patch                   add-sunvell-r69.patch
07-2-add-H3-DE2-DT-nodes.patch                      add-sunxi64-overlays.patch
07-3-add-H5-DE2-DT-nodes.patch                      add-sunxi-overlays.patch
08-dw-hdmi-enable-polling.patch                     add-usb-orangepi-zero-plus2.patch.disabled
09-dw-hdmi-add-workarounds.patch                    add-wifi-orangepiprime.patch
10-clk-hdmi-allow-set-rate-parent.patch             add-xradio-wireless-driver.patch
...................
Всё. Патчи на месте. Можно собирать для ядра v4.14.y
В файле config-NAME.conf значение переменной LIB_TAG="my-v4.14"

P.S. Важно. Скорее всего надо получить права root сначала.
Хотя git clone $URL был сделан от имени обычного пользователя, его продвижение вверх
осуществляет скрипт ambian, а он работает с правами root. Поэтому некоторые файлы в рабочем дереве
будут принадлежать ползователю root. Git, при выполнении команд, будет ругаться и динамить.
Последний раз редактировалось going 23 июл 2018, 14:54, всего редактировалось 2 раза.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

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

Сообщение going »

MX_Master писал(а):А можно чуть подробнее
Здесь полная на сегодняшний день документация в html.
doc-xenomai-3.1-dev.tar.gz
(6.81 МБ) 694 скачивания
doc-xenomai-3.1-dev.zip
(8.48 МБ) 248 скачиваний
Правда пока на английском.
С переводами ещё воюю.

В двух словах. Лучший реалтайм по сравнению с RTPREEMPT.
Документированный API. Т.е. возможно писать свои РТ приложения используя библиотеки xenomai
Несколько картинок из интернета. Китайский сайт. http://wiki.csie.ncku.edu.tw/embedded/xenomai.
Сравнительная таблица трёх вариантов &quot;два ядра&quot; - синий, &quot;RT-preempt&quot; - красный, &quot;стандатное ядро&quot; - зелёный (3569 просмотров) <a class='original' href='./download/file.php?id=143246&sid=2f92f9d8d32316e742173d707d658d61&mode=view' target=_blank>Загрузить оригинал (55.89 КБ)</a>
Сравнительная таблица трёх вариантов "два ядра" - синий, "RT-preempt" - красный, "стандатное ядро" - зелёный
Сравнительная таблица трёх механизмов предоставляемых xenomai (3569 просмотров) <a class='original' href='./download/file.php?id=143247&sid=2f92f9d8d32316e742173d707d658d61&mode=view' target=_blank>Загрузить оригинал (42.59 КБ)</a>
Сравнительная таблица трёх механизмов предоставляемых xenomai
Платы: 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 при xenomai на том же уровне, если на процессоре висят не только рядовые вычисления, но и отрисовка всей графики?
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

MX_Master писал(а):останется ли latency при xenomai на том же уровне, если на процессоре висят не только рядовые вычисления, но и отрисовка всей графики?
Как раз в этом то и дело, что останутся.
Механизм следующий. Микро ядро работает и рулит в РТ режиме, перехватывая все прерывания (или старается это делать).
Процесс ядра линукс (не РТ), с точки зрения ядра, может работать непрерывно и долго, а реально он становиться детерминированным.
Таким каким требует РТ режим микроядра. РТ режимов три. В микроядре, РТ в простанстве ядра линукс, РТ в пространстве пользователя.
Проблема может выпозти в аппаратной части конкретного чипа. Например контроллеры DMA, ARISC эсли имеют задачу переписывать данные
из одной области памяти в другую, и на уровне железа это предусмотрено, могут занимать шину памяти и не реагировать на сторонние вещи.
Честно говоря я немного сумбурно понял, какие процессы, и как там взаимодействуют. Лучше почитать докуменацию.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Обнаружил нежелательное поведение в системе сборки armbian.
Если зафиксировать версию ядра, то каталог с исходниками ядра очищается не полностью,
и при изменении набора патчей или редактировании некоторых, во время компиляции вылазят ошибки.
Написал об этом на форуме armbian: https://forum.armbian.com/topic/7885-in ... urce-code/
Мне поставили плюсик и на этом успокоились. Наверное всё так задумано изначально.
Перед новой сборкой надо удалить весь каталог с исходниками и качать всё по новой :thinking:
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

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

Сообщение going »

Новости от Xenomai
репозитории GIT обновились до версии ядра 4.14.58:
https://gitlab.denx.de/Xenomai/ipipe-arm
https://gitlab.denx.de/Xenomai/ipipe-noarch
Они построены особым образом с минимальной историей начиная с ядра 4.14.38.
ipipe-noarch - это 80 коммитов общего для всех архитектур кода.
ipipe-arm - это 80 общего + 28 arm-специфичного кода, всего 108 коммитов.
По замыслу авторов, это облегчит портирование на другие ядра. Т.е. надо создать набор патчей от коммита к коммиту.
Затем последовательно накладывать их на другое ядро.

Опубликовали новую разработку "Ласточкин хвост", которая начинается с ядра 4.18:
Описание - https://dovetail.xenomai.org/pipeline/
GIT - [url]git://lab.xenomai.org/linux-dovetail.git[/url], https://lab.xenomai.org/linux-dovetail.git
Планируется регулярное продвижение вверх по течению, что бы быть всегда на вершине разработки ядра.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Maxekb77
Мастер
Сообщения: 1658
Зарегистрирован: 05 окт 2013, 00:04
Репутация: 285
Настоящее имя: Максим
Откуда: Екатеринбург
Контактная информация:

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

Сообщение Maxekb77 »

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

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

Сообщение going »

MX_Master писал(а):Напиши сюда https://github.com/armbian/build/issues
Не думаю, что нас это спасёт. Отцы основатели изначально задумали именно так.
Очень много плат поддерживается, а для платы варианты версий ядра, uboot
и при последовательной сборке всех возможных вариантов .... будет плохо.
Очистка директории с исходниками вынужденная мера.
У нас проще, в том смысле, что процессоры только от allwiner и всего 2 архитектуры armv7, aarch64.
Но имеются другие сложности. Что бы использовать кросскомпиляцию, необходимо последовательно собирать ядро,
драйверы и надстройки к нему, ( linuxcnc и чего захотим) из единого пространства видимого из тулчайна.
Иначе можно нативно в эмуляторе, но это очень долго.
То, как сейчас я делаю с переопределением поведения armbian, себя исчерпала. Не позволяет развиваться дальше.
Поэтому я начал делать надстройку над armbian.
Идея оказалась простой. Копируем папку lib -> usrlib со всем содержимым и добавляем строчку /usrlib/ в файл .gitignore.
Дале меняем, что требуется в usrlib, а armbian/build репозиторий обновляется без проблем.
Первую рабочую версию выложу.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Maxekb77 писал(а):going, Выложил бы его в сборке армбиана с sunxi
Пока просто сами контролируйте этот случай. Изменений придётся делать много и проверять.


А теперь о самом главном. ipipe-core я продвинул до версии 4.14.65 для arm64 и оно заработало.
Результаты хорошие. Отчёт о работе следует.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 516
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Для начала я решил проверить на что потенциально способна подопытная плата - Orangepi-PC2.
В образе, который собирает armbian, максимальная частота 1 152 000 000 Гц, но процессор спокойно может работать и выше.
Таблица регулировки частоты в собранном дереве объектов выглядит следующим образом:
(для просмотра содержимого нажмите на ссылку)

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

	opp_table {
		compatible = "operating-points-v2";
		opp-shared;
		linux,phandle = <0x2d>;
		phandle = <0x2d>;

		opp@408000000 {
			opp-hz = <0x0 0x18519600>;
			opp-microvolt = <0xf4240 0xf4240 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@648000000 {
			opp-hz = <0x0 0x269fb200>;
			opp-microvolt = <0xfde80 0xfde80 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@816000000 {
			opp-hz = <0x0 0x30a32c00>;
			opp-microvolt = <0x107ac0 0x107ac0 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@912000000 {
			opp-hz = <0x0 0x365c0400>;
			opp-microvolt = <0x111700 0x111700 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@960000000 {
			opp-hz = <0x0 0x39387000>;
			opp-microvolt = <0x11b340 0x11b340 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@1008000000 {
			opp-hz = <0x0 0x3c14dc00>;
			opp-microvolt = <0x124f80 0x124f80 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@1056000000 {
			opp-hz = <0x0 0x3ef14800>;
			opp-microvolt = <0x12ebc0 0x12ebc0 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@1104000000 {
			opp-hz = <0x0 0x41cdb400>;
			opp-microvolt = <0x1339e0 0x1339e0 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};

		opp@1152000000 {
			opp-hz = <0x0 0x44aa2000>;
			opp-microvolt = <0x13d620 0x13d620 0x13d620>;
			clock-latency-ns = <0x3b9b0>;
		};
	};

Откуда она там взялась? Смотрю применяемые патчи и 49-add-h5-cpu-OPP-table.patch делает это.
Привёл его к виду:
(для просмотра содержимого нажмите на ссылку)

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

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
index 4fc5c3c..ea9ed0f 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
@@ -44,6 +44,65 @@
 #include <dt-bindings/thermal/thermal.h>
 
 / {
+	cpu_opp_table: opp_table {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp@816000000 {
+			opp-hz = /bits/ 64 <816000000>;
+			opp-microvolt = <1080000 1080000 1300000>;
+			clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@912000000 {
+		       opp-hz = /bits/ 64 <912000000>;
+		       opp-microvolt = <1120000 1120000 1300000>;
+		       clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@960000000 {
+		       opp-hz = /bits/ 64 <960000000>;
+		       opp-microvolt = <1160000 1160000 1300000>;
+		       clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@1008000000 {
+		       opp-hz = /bits/ 64 <1008000000>;
+		       opp-microvolt = <1200000 1200000 1300000>;
+		       clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@1056000000 {
+		       opp-hz = /bits/ 64 <1056000000>;
+		       opp-microvolt = <1240000 1240000 1300000>;
+		       clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@1104000000 {
+		       opp-hz = /bits/ 64 <1104000000>;
+		       opp-microvolt = <1260000 1260000 1300000>;
+		       clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@1152000000 {
+		       opp-hz = /bits/ 64 <1152000000>;
+		       opp-microvolt = <1300000 1300000 1300000>;
+		       clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@1200000000 {
+			opp-hz = /bits/ 64 <1200000000>;
+			opp-microvolt = <1300000 1300000 1300000>;
+			clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+
+		opp@1248000000 {
+			opp-hz = /bits/ 64 <1248000000>;
+			opp-microvolt = <1300000 1300000 1300000>;
+			clock-latency-ns = <244144>; /* 8 32k periods */
+		};
+	};
+
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;

При конфигурации ядра отключаю dintik таймера и включаю preept,
printk должен быть включен и в параметре командной строки соответствующая запись (это на будущее для отладки).
Соответствующие строчки в .config файле стали выглядеть:
(для просмотра содержимого нажмите на ссылку)

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


#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_HZ_PERIODIC=y
# CONFIG_NO_HZ_IDLE is not set
# CONFIG_NO_HZ_FULL is not set
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y

#
# Boot options
#
CONFIG_CMDLINE="earlyprintk=ttyS0,115200"
# CONFIG_CMDLINE_FORCE is not set
# CONFIG_EFI is not set

#
# Kernel Features
#

CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_SCHED_HRTICK=y

#
# Kernel hacking
#

#
# printk and dmesg options
#
CONFIG_PRINTK_TIME=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=1
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
Собираю образ. Заливаю на флешку. Использую утилиту cyclictest -t -p 80 -i 10000 для оценки.
Что бы было видно, необходимо проанализировать выхлоп этой утилиты и построить ряд графиков.
Для этого я написал простенький скрипт:
sys_test_1.zip
(719 байт) 201 скачивание
Он сгенерит файлы *.csv из которых графики в libreOffice строятся на раз-два.
Результат:
Максимальная частота, отсутствие нагрузки, в консольном режиме. (3255 просмотров) <a class='original' href='./download/file.php?id=145138&sid=2f92f9d8d32316e742173d707d658d61&mode=view' target=_blank>Загрузить оригинал (21.98 КБ)</a>
Максимальная частота, отсутствие нагрузки, в консольном режиме.
Из графика видно, что плата вполне способна выдать latency 10-25 us. Это потенциально возможно.
Платы: BPI-M3, BPI-A64, OPI-PC2
Ответить

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