Драйвер Linux ограничения в реальном времени

Мне нужно построить платформу для регистрации некоторых данных датчика. И, возможно, позже сделаю некоторые расчеты по этим зарегистрированным данным.

Raspberry Pi кажется интересным (и дешевым!) Устройством для этого.

У меня есть гироскоп, который может производить выборку с частотой 800 Гц, что эквивалентно одной выборке каждые 1,25 мс. Гироскоп имеет встроенный FIFO, который может хранить 32 образца. Это означает, что FIFO должен очищаться, по крайней мере, каждые 32 * 1,25 = 40 мс, в противном случае выборки будут отброшены.

Итак, мой вопрос: могу ли я быть на 100% уверен, что мой драйвер ядра сможет извлечь данные из этого FIFO в течение указанного времени?

Гироскоп связывается с хостом через i2c, и он также может инициировать вывод прерывания на "почти полном" событии, если это упростит ситуацию. Но было бы проще, если бы я мог просто иметь цикл в драйвере, который извлекает данные через регулярные промежутки времени.

Я могу жить с хранением данных в пространстве ядра и реже перемещать их в пространство пользователя (без ограничений по времени).

Я также могу жить с отбором образцов на гироскопе с более низкой частотой дискретизации (допустимо 400 или 200 Гц).

Это касается стандартного ядра, а не специального ядра реального времени, так как кажется, что в настоящее время это не поддерживается для Raspberry Pi.

1 ответ

Вам понадобится среда Linux в реальном времени для ограничения времени:

Вы можете попробовать Xenomai на Raspberry Pi: http://diy.powet.eu/2012/07/25/raspberry-pi-xenomai/

Однако, следуя по этому блогу: http://linuxcnc.mah.priv.at/rpi/rpi-rtperf.html (мертв, и я не смог найти его в обратном пути или в кеше Google)

Кажется, он получает повторяющиеся +/- 20 мксек от стандартного ядра. Поскольку ваше временное разрешение составляет 1250 мкс, вы можете быть в порядке со стандартным ядром, если хотите потерять образец один раз в синей луне YMMV.

Я еще не проверял это сам, но я читал в попытке попробовать управлять светодиодным контроллером ws2811 с ​​Raspberry Pi, и это выглядело наиболее перспективным для меня.

Существует также патч RT для Linux: https://rt.wiki.kernel.org/index.php/Main_Page
Который имеет по крайней мере одну версию пи: https://github.com/licaon-kter/raspi-rt
Тем не менее, я столкнулся с группой недоговорок, когда углублялся в этот патч.

Лучше всего посоветовать прочитать таймер MS и записать или зажечь светодиод, если вы пропустите интервал, а затем попробовать некоторые решения. Счастливого взлома..

Другие вопросы по тегам