为什么我的Raspberry Pi SPI写循环会暂停约15ms?上下文切换?

时间:2019-05-06 21:00:57

标签: linux raspberry-pi raspberry-pi3

我有一个Raspberry Pi管理和写入FPGA。我使用SPI总线和一些GPIO通过链接获取数据。 SPI写入以可变长度的突发方式发生-从几十个字节到大约8kB。

FPGA SPI接收代码具有一个超时,我最初将其设置为约12ms(这是一个估计值)。这几乎总是可以的,但是今天我发现FPGA上偶尔出现的超时似乎是由于RPi在发送字节的过程中偶尔会暂停约15毫秒而造成的。

RPi python驱动程序代码看起来非常像这样:

for b in byte_array:
    send_byte()

其中send_byte()是一个简单的函数,它调用GPIO库中的SPI字节写函数,并进行一些BUSY行检查并重试。

通常,字节间隔几百微秒,所以这种突然的暂停是很奇怪的。我认为这可能是由于某种上下文切换引起的-但是Pi并没有做很多其他事情(并且正在运行库存的Linux发行版)。

这都不是大问题,我可以轻松地增加超时而不会出现问题。但是我很好奇。是什么原因导致运行数GHz的Linux的芯片突然停止执行被要求执行的唯一操作,持续15ms左右?在这种情况下,这是永恒的?

如果有问题-我该怎么办?

0 个答案:

没有答案