Не зная броду лезу в воду. Удалось получить неоходимую мне работу платы с двумя SPI. Несколько озадачила скорость ядра(не уверен в точности термина). Мне требуется что бы каждый SPI порт опрашивал подчиненное устройтво с частотой не ниже 200 Гц. Особых требований к точности интервала нет. Но то что получил, меня явно не устраивает. Можно ли существенно улучшить ситуацию, собрав ядро с поддержкой RT Framework Xenomai ? Буду признателен за ссылку на патч ядра (текущая версия 310) для работы с Xenomai. Так же интересует вопрос- наколько сохранится совместимость полученной в итоге системы с Qt ? Проект пишется именно в нем.
Пытался найти патч на сайте http://www.at91.com/linux4sam/bin/view/Linux4SAM/RealTime#Introduction ,
но именно для версии ядра 3.10 найти не удалось А те, которые наиболее близки , например 3.10.105 не проходят.
Или, быть может, отказ от установки каких либо пакетов, может в какой то степени помочь? Разного рода мультимедийные возможности не требуются.
в общем не слишком жесткие требования - думаю тут можно спокойно обойтись без патчей для реалтайма. Включите в ядре поддержку таймеров высокого разрешения
make linux-menuconfig
General setup --->
Timers subsystem --->
[*] High Resolution Timer Support
и включите мягкий реалтайм (там же в менюконфиге)
Kernel Features --->
Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
собрал ядро в соответствии с Вашими советами. Видимо обновленное ядро имеет несовместимости с КуТэ. Та же программа после запуска работает пару секунд, затем виснет. В данном случае под работой понимается мигание светодиодом в высокоприоритетном процессе. Впрочем от уровня приоритета нмчего не зависит. Плюс не работет матричная клавиатура. Попытка ребута из терминала заканчивается генерацией сообщения ubifs: background thread "ubifs_bgt0_0" stops. The system is going down NOW! Sent SIGTERM to all processes и ребута не происходит. poweroff тоже не дает никакого эффекта - в сысле не останавливае работу системы.
Попытка "приручить", Xenomai вероятно чревата еще бОльшими проблемами.(?)
скорей баг в вашей программе или в коде драйверов atmel что более вероятно если с другими настройками планирования все работает, к сожалению у меня нет платы с таким процессором чтобы проверить. Если включить поддержку таймеров высокого разрешением без мягкого реалтайма - работает ? Про эти таймеры можно посмотреть тут
Удивительно. Во всяком случае для меня. Похоже именно HR таймеры весили программу. С одним только измененным методом планирования все ок. Время реакции системы слегка улучшилось. Стоит ли биться за таймеры, ведь они на времени реакции не скажутся, а, потенциально, только на точности интервалов? Может имеет смысл прикрутить rt-patch какой нибудь ?