Драйвер 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 и записать или зажечь светодиод, если вы пропустите интервал, а затем попробовать некоторые решения. Счастливого взлома..