2

我需要建立一个平台来记录一些传感器数据。并且可能稍后对这些记录的数据进行一些计算。

Raspberry Pi 似乎是一个有趣(而且便宜!)的设备。

我有一个可以以 800 Hz 采样的陀螺仪,相当于每 1.25 ms 采样一次。陀螺仪有一个内置的 FIFO,可以存储 32 个样本。这意味着 FIFO 必须至少每 32 * 1.25 = 40 ms 清空一次,否则样本将被丢弃。

所以我的问题是:我能否 100% 确定我的内核驱动程序能够在指定时间内从该 FIFO 中提取数据?

陀螺仪通过 i2c 与主机通信,如果这会使事情变得更简单,它还可以在“几乎满”事件上触发中断引脚。但是,如果我可以在驱动程序中有一个循环来定期检索数据,那将是最简单的。

我可以忍受将数据存储在内核空间中,并且不经常将其移动到用户空间(没有时间限制)。

我也可以接受以较低的采样率对陀螺仪进行采样(400 或 200 Hz 是可以接受的)。

这是关于股票内核的,而不是特殊的实时内核,因为树莓派目前似乎不支持这种内核。

4

1 回答 1

2

您将需要一个实时的 linux 环境来保证时间紧迫:

您可以在 Raspberry Pi 上尝试 Xenomai:http: //diy.powet.eu/2012/07/25/raspberry-pi-xenomai/

然而,沿着这个博客: http: //linuxcnc.mah.priv.at/rpi/rpi-rtperf.html(死了,我在回路或谷歌缓存中找不到它)

似乎他正在从库存内核中获得可重复的 +/- 20µS 时间。由于您的时序分辨率为 1250µS,因此如果您愿意在蓝月亮 YMMV 中丢失一次样本,您可能会对库存内核感到满意。

我自己还没有测试过这个,但我一直在阅读,试图用 Raspberry Pi 驱动一个 ws2811 LED 控制器,这对我来说是最有希望的。

还有 RT linux 补丁:https
://rt.wiki.kernel.org/index.php/Main_Page 其中至少有一个 pi 版本:https
://github.com/licaon-kter/raspi-rt 但是我在深入研究这个补丁时遇到了一堆反对者。

如果您错过了一个间隔,您最好阅读 MS 计时器并记录或点亮 LED,然后尝试一些解决方案。快乐黑客..

于 2013-02-02T11:49:16.890 回答