防止Linux在执行某个功能期间切换到另一个任务

时间:2018-02-15 17:48:46

标签: linux raspbian 1wire

我为Raspberry Pi改编from this book实现了1-wire协议。它使用bit banging来实现通信协议。来自BCM2835库的函数bcm2835_delayMicroseconds()用于产生所需的延迟。

效果很好,但不完全可靠:有时我没有得到传感器的响应。我用示波器来追踪问题。 这里的示波器屏幕截图以绿色信号解释。 enter image description here 红色标志着故障:开始低脉冲的位被延长,因此插入一个流氓'0'。这导致传感器无法识别命令而不响应它(后续的'1'。

我相信这一事,因为在传输此位期间OS已抢占(切换到另一个任务/线程/进程)。所以 是否可以告诉Linux在执行某个功能时不要抢占(在这种情况下写入和读取单个位)?或许这个问题还有另一个解决方案吗?

0 个答案:

没有答案