Страница 8 из 245

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 29 сен 2017, 21:41
Serg
MX_Master писал(а):С небольшим костыльком в коде, собрал, всё-таки, ядро с RT патчем и опцией FULL_RT (5).
А что за костылёк?
MX_Master писал(а):Результат cyclictest'a на удивление похож на все предыдущие:
А цифры будут меняться если паралельно ещё чего-нибудь запустить? Какой-нибудь пустой цикл, хотя-бы такой:

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

while :; do true; done
Я эту плату не смотрел ни разу. А в сети есть готовые RT-ядра для этой платы, а то может сам чип "слишком прост"?

А RT точно есть? "uname -a" что говорит?

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 29 сен 2017, 22:20
MX_Master
UAVpilot писал(а):А RT точно есть? "uname -a" что говорит?

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

master@orangepione:~$ uname -a
Linux orangepione 3.4.113-rt143-sun8i #8 SMP PREEMPT RT Fri Sep 29 20:43:04 +06 2017 armv7l armv7l armv7l GNU/Linux
UAVpilot писал(а):А в сети есть готовые RT-ядра для этой платы, а то может сам чип "слишком прост"?
Не встречал
UAVpilot писал(а):А цифры будут меняться если паралельно ещё чего-нибудь запустить? Какой-нибудь пустой цикл
Будут. Запустил пустой цикл, htop, открыл браузер + ютуб + видео, открыл libreoffice writer, открыл сессию XRDP

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

master@orangepione:~/rt-tests$ sudo ./cyclictest -a -t -n -p99
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 2.18 2.49 1.19 1/299 3693           

T: 0 ( 3034) P:99 I:1000 C: 364441 Min:      7 Act:   31 Avg:   23 Max:    5939
T: 1 ( 3035) P:99 I:1500 C: 242985 Min:      7 Act:   32 Avg:   23 Max:    2312
T: 2 ( 3036) P:99 I:2000 C: 182252 Min:      7 Act:   43 Avg:   20 Max:     181
T: 3 ( 3037) P:99 I:2500 C: 145802 Min:      9 Act:   30 Avg:   23 Max:     126
UAVpilot писал(а):А что за костылёк?
Ругался на эту строку - https://github.com/allwinner-zh/linux-3 ... /sid.c#L28

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

    static DEFINE_SPINLOCK(sid_lock);
Не придумал ничего лучше, чем заменить её на

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

    static spinlock_t sid_lock;

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 30 сен 2017, 06:46
MX_Master
Почитал немного интернетов на тему "как освободить ядро проца от периодических системных операций ядра Linux". Советуют собрать ядро, играя параметрами CONFIG_NO_HZ_FULL/CONFIG_NO_HZ/CONFIG_HZ/.. А потом в командной строке ядра прописать примерно так

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

nohz_full=3 isolcpus=3 rcu_nocbs=3 selinux=0 audit=0
Вдобавок можно выставить vm.stat_interval например 60 (сек) вместо 1 (сек).

Что это даст? Мой первый пример ногодрыга на OPi1 чётко показал, что каждые 10 мс работники ядра Linux отрывают изолированное ядро проца от ногодрыга на системное обслуживание. Системные операции могут занимать от 10 до 100 мкс, а это отрицательно сказывается на генерации шагов. Вышеуказанные настройки должны исправить ситуацию. Если на изолированном ядре проца будет запущен только 1 процесс (1 поток) генератора шагов, то Linux не будет прерывать его системными операциями. Единственное, что будет прерывать наш процесс раз в 60 сек - это vmstat.

Иными словами, генератор будет практически полностью свободен от внешних прерываний. Используя аппартный таймер чипа H3 мы можем чётко отслеживать временные интервалы и генерировать шаги вовремя. Причём, это всё можно делать без RT патча ядра Linux. В теории, стессна. Осталось проверить это на практике.

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 01 окт 2017, 02:19
Serg
MX_Master писал(а):Будут. Запустил пустой цикл, htop, открыл браузер + ютуб + видео, открыл libreoffice writer, открыл сессию XRDP
Т.е. RT не работает...
MX_Master писал(а):Не придумал ничего лучше, чем заменить её на
Это неравноценная замена.
MX_Master писал(а):Мой первый пример ногодрыга на OPi1 чётко показал, что каждые 10 мс работники ядра Linux отрывают изолированное ядро проца от ногодрыга на системное обслуживание.
Уверен, что отрывают именно ядро?..
Твой ногодрыг использует не только лишь ядро, но и как минимум шину памяти. А она одна на все ядра, как ты их не изолируй...

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 01 окт 2017, 03:45
MX_Master
UAVpilot писал(а):Это неравноценная замена.
Непонятно, почему ругается на это место. Пишет, что ошибка синтаксиса. Попробую заменить на равноценное, развернув все связанные макросы.
UAVpilot писал(а):Уверен, что отрывают именно ядро?..
Твой ногодрыг использует не только лишь ядро, но и как минимум шину памяти. А она одна на все ядра, как ты их не изолируй...
Глянул настройки ядра. Указан интервал в 100 Гц - CONFIG_HZ=100, а это наши 10 мс, которые хорошо видны на осциллограмме. Ногодрыг пишет только в SRAM. Скорее всего, очередь туда не такая большая.

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 01 окт 2017, 17:28
Serg
MX_Master писал(а):Ногодрыг пишет только в SRAM. Скорее всего, очередь туда не такая большая.
Ещё и в порты IO... )
Это дешёвый чип - там скорее всего одна шина и для памяти и для перифирии.

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 03 окт 2017, 04:42
mycnc
MX_Master писал(а):что каждые 10 мс работники ядра Linux отрывают изолированное ядро проца от ногодрыга на системное обслуживание. Системные операции могут занимать от 10 до 100 мкс, а это отрицательно сказывается на генерации шагов.
занимаюсь похожими экспериментами. У меня аппаратный fifo, поэтому 100мкс задержки я бы и не заметил, но проблема в том, что за сутки с десяток раз вылетает задержка в 10-20мс

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 03 окт 2017, 15:26
MX_Master
mycnc писал(а):занимаюсь похожими экспериментами. У меня аппаратный fifo, поэтому 100мкс задержки я бы и не заметил, но проблема в том, что за сутки с десяток раз вылетает задержка в 10-20мс
Если эти задержки в 10-20 мс происходят очень редко, то их можно вычислить по всевозможным логам системы.

Если грамотно изучить все настройки ядра, то при сборке можно много чего отключить, впрочем, как и после сборки. Но я застрял на этом банальном CONFIG_NO_HZ_FULL.. хотя я и сделал свой конфиг, и поместил куда надо, но ядро собирается всё равно безо всяких CONFIG_NO_HZ_FULL. Так что я эти 10 мс ещё не победил.

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 03 окт 2017, 15:44
Serg
MX_Master писал(а):CONFIG_NO_HZ_FULL
Это врядли решит проблему, NOHZ означает, что шедулер будет тикать не с постоянным периодом, а только когда потребуется.

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 04 окт 2017, 17:33
MX_Master
Собрал, наконец, ядро с CONFIG_NO_HZ_FULL. В командной строке ядра присутствуют:

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

nohz_full=3 isolcpus=3 rcu_nocbs=3 rcu_nocb_poll selinux=0 audit=0 nowatchdog skew_tick=1
От пауз каждые 10 мс избавился, но, как и гласят доки, остались паузы каждую секунду.

Т.е. каждую секунду планировщик у нас отнимает максимум 15 мкс на обслуживание. Если нужно сделать простую софт генерацию шагов, то барьер плавной генерации будет на уровне 65 КГц. Более быстрая софт генерация, стессна, возможна, но каждую секунду будет едва заметный затык в 15 мкс. При 200 КГц (предел драйверов) этот затык будет едва заметен. Так что софт генерация шагов на Orange Pi до 200 КГц вполне реальна! И это радует. :beer_blow:

Надо бы провести тесты на шаговиках..

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 05 окт 2017, 10:09
muxa
MX_Master писал(а):Если нужно сделать простую софт генерацию шагов
а как жеж запуск linuxcnc на оранже ? может я чего пропустил - запуск уже готовой cnc системы на этом микрокомпе возможен ?
понятно что GPIO у оранжа маловато и надо будет лепить свою промежуточную железку.
тем не менее есть linuxcnc с его hm_spi и есть spi на платке оранжа.
*вот собственно первый вопрос - работоспособность этой связки?

Re: ЧПУ контроллер на базе Orange Pi

Добавлено: 05 окт 2017, 10:47
MX_Master
Ну дык, никто в этой теме еще не добился реалтайма в апельсине. Про LinuxCNC и связку додумайте сами (:

Я буду только периодически пытаться поднять RT ось. И только ради опыта. На данном этапе мне RT не так важен.

Желающие могут тоже подключиться к этой игре с RT в апельсине. Я всеми руками за. Попробуйте собрать ядро с RT патчем, и запускайте latency test.

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 07:45
MX_Master
Вернулся к сборке ядра с RT патчем (с опцией FULL_RT). Всё та же ошибка при сборке, может, кто подскажет

cтрока https://github.com/armbian/linux/blob/s ... /sid.c#L28

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

static DEFINE_SPINLOCK(sid_lock);
согласно RT патчу разворачивается в
https://github.com/armbian/build/blob/m ... led#L10287

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

spinlock_t sid_lock __cacheline_aligned_in_smp = __SPIN_LOCK_UNLOCKED(sid_lock);
и при сборке компилятор ругается

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

security/apparmor/sid.c:28:28: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__cacheline_aligned_in_smp’
 static DEFINE_SPINLOCK(sid_lock);
                            ^

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 14:15
Serg
Очевидно неправильно разворачиваетсяю Нужно внимательно смотреть определение DEFINE_SPINLOCK, особенно директивы условной компиляции.

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 15:50
arkhnchul
а зачем вообще на станочном компе apparmor?

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 17:37
MX_Master
arkhnchul писал(а):а зачем вообще на станочном компе apparmor?
До станочного ещё далеко. Тут хотя б как есть с FULL_RT собрать - уже достиженье :hehehe:
UAVpilot писал(а):Очевидно неправильно разворачиваетсяю Нужно внимательно смотреть определение DEFINE_SPINLOCK, особенно директивы условной компиляции.
пару-тройку вечеров придётся потратить :think:

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 17:52
going
MX_Master писал(а):и при сборке компилятор ругается
Доброго здоровья!
В какой среде сборка проходит? На апельсинке или кросс компиляция? Версия gcc?

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 18:07
arkhnchul
MX_Master писал(а):Тут хотя б как есть с FULL_RT собрать - уже достиженье
в смысле, открутить совсем apparmor (CONFIG_SECURITY_APPARMOR=n), при сборке коего проявляется ругань после патча.

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 18:29
MX_Master
going писал(а):Доброго здоровья!
В какой среде сборка проходит? На апельсинке или кросс компиляция? Версия gcc?
Если коротко, то под Win8.1 установлен VirtualBox + Ubuntu 16.04 x64. Далее из под Ubuntu тянем исходники

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

sudo apt-get -y install git
sudo git clone https://github.com/armbian/build
и собираем

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

cd build
sudo ./compile.sh

Re: OrangeCNC - ЧПУ контроллер на базе Orange Pi

Добавлено: 09 окт 2017, 19:05
going
Понял. Кросскомпиляция.
У меня 3.4.39 ядро для BPI-M3 (чип A83T) собиралось и работало только gcc который в составе BSP от SINOVOIP
От linaro toolchain либо не собирал, либо собирал но ядро не работало. Разных версий перепробовал.
Оказалось у gcc при его сборке куча параметров и они отличаются.

Попробуй собрать только ядро в предлагаемой фирмой производителем среде.
https://github.com/OrangePiLibra/OrangePi

PS: Параметры gcc можно задать при компиляции ядра. Модель процессора, оптимизацию кода, и тд.