Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
buildroot для SK-ATSAMA5D3 + Xenomai
rain62ster
Добавлено 14.07.2017 11:48 Редактировалось 14.07.2017 12:09
0
Сообщение: 1
rain62ster
0

Пункты: 3830
Регистрация: 02.10.2009
Не зная броду лезу в воду. Удалось получить неоходимую мне работу платы с двумя SPI. Несколько озадачила скорость ядра(не уверен в точности термина). Мне требуется что бы каждый SPI порт опрашивал подчиненное устройтво с частотой не ниже 200 Гц. Особых требований к точности интервала нет. Но то что получил, меня явно не устраивает. Можно ли существенно улучшить ситуацию, собрав ядро с поддержкой RT Framework Xenomai ? Буду признателен за ссылку на патч ядра (текущая версия 310) для работы с Xenomai. Так же интересует вопрос- наколько сохранится совместимость полученной в итоге системы с Qt ? Проект пишется именно в нем.
Пытался найти патч на сайте
http://www.at91.com/linux4sam/bin/view/Linux4SAM/RealTime#Introduction ,

но именно для версии ядра 3.10 найти не удалось А те, которые наиболее близки , например 3.10.105 не проходят.
Или, быть может, отказ от установки каких либо пакетов, может в какой то степени помочь? Разного рода мультимедийные возможности не требуются.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.07.2017 13:02 Редактировалось 14.07.2017 13:03 Сообщение: 2
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Мне требуется что бы каждый SPI порт опрашивал подчиненное устройтво с частотой не ниже 200 Гц. Особых требований к точности интервала нет. Но то что получил, меня явно не устраивает.


в общем не слишком жесткие требования - думаю тут можно спокойно обойтись без патчей для реалтайма. Включите в ядре поддержку таймеров высокого разрешения

make linux-menuconfig

General setup --->
Timers subsystem --->
[*] High Resolution Timer Support

и включите мягкий реалтайм (там же в менюконфиге)

Kernel Features --->
Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
Спуститься к концу Подняться к началу
Персональная информация
rain62ster
Добавлено 14.07.2017 13:17 Сообщение: 3
rain62ster
0

Пункты: 3830
Регистрация: 02.10.2009
Цитата

в общем не слишком жесткие требования - думаю тут можно спокойно обойтись без патчей для реалтайма. Включите в ядре поддержку таймеров высокого разрешения

make linux-menuconfig

General setup --->
Timers subsystem --->
[*] High Resolution Timer Support

и включите мягкий реалтайм (там же в менюконфиге)
Kernel Features --->
Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->


Очень Вам признателен.
Спуститься к концу Подняться к началу
Персональная информация
rain62ster
Добавлено 15.07.2017 23:55 Редактировалось 16.07.2017 00:08 Сообщение: 4
rain62ster
0

Пункты: 3830
Регистрация: 02.10.2009
собрал ядро в соответствии с Вашими советами. Видимо обновленное ядро имеет несовместимости с КуТэ. Та же программа после запуска работает пару секунд, затем виснет. В данном случае под работой понимается мигание светодиодом в высокоприоритетном процессе. Впрочем от уровня приоритета нмчего не зависит. Плюс не работет матричная клавиатура. Попытка ребута из терминала заканчивается генерацией сообщения ubifs: background thread "ubifs_bgt0_0" stops. The system is going down NOW! Sent SIGTERM to all processes и ребута не происходит. poweroff тоже не дает никакого эффекта - в сысле не останавливае работу системы.
Попытка "приручить", Xenomai вероятно чревата еще бОльшими проблемами.(?)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 16.07.2017 22:51 Редактировалось 16.07.2017 22:55 Сообщение: 5
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Видимо обновленное ядро имеет несовместимости с КуТэ.


скорей баг в вашей программе или в коде драйверов atmel что более вероятно если с другими настройками планирования все работает, к сожалению у меня нет платы с таким процессором чтобы проверить. Если включить поддержку таймеров высокого разрешением без мягкого реалтайма - работает ? Про эти таймеры можно посмотреть тут

http://elinux.org/High_Resolution_Timers

Цитата

Попытка "приручить", Xenomai вероятно чревата еще бОльшими проблемами.(?)


по моему он тут лишний и то что время вы потратите намного больше на разборы с ним это точно.
Спуститься к концу Подняться к началу
Персональная информация
rain62ster
Добавлено 17.07.2017 00:09 Сообщение: 6
rain62ster
0

Пункты: 3830
Регистрация: 02.10.2009
Удивительно. Во всяком случае для меня. Похоже именно HR таймеры весили программу. С одним только измененным методом планирования все ок. Время реакции системы слегка улучшилось. Стоит ли биться за таймеры, ведь они на времени реакции не скажутся, а, потенциально, только на точности интервалов? Может имеет смысл прикрутить rt-patch какой нибудь ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.07.2017 16:41 Редактировалось 17.07.2017 16:48 Сообщение: 7
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Стоит ли биться за таймеры, ведь они на времени реакции не скажутся, а, потенциально, только на точности интервалов?


В точности всё дело, без HR таймеров

Цитата

Currently, timers in Linux are only supported at a resolution of 1 jiffy. The length of a jiffy is dependent on the value of HZ in the Linux kernel, and is 1 millisecond on i386 and some other platforms, and 10 milliseconds on most embedded platforms.


на ARM CONFIG_HZ = 100, периодичность системного таймера 100 раз в секунду и это в два раза меньше чем вам нужно.

У атмела HR-таймеры наколько помню реализованы на TCB и в конфиге они включены

Device Drivers --->
Misc devices --->
[*] Atmel AT32/AT91 Timer/Counter Library
[*] TC Block Clocksource

help

Цитата

Select this to get a high precision clocksource based on a TC1 block with a 5+ MHz base clock rate. Two timer channels are combined to make a single 32-bit timer.


возможно в драйвере баги, посмотрите ссылку что я давал - там написано как определить есть HR таймеры в системе
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux