目前,我在嵌入式 linux 设备(版本 2.6.28.10)上有一个用户空间应用程序,它切换 GPIO 引脚来控制一些自定义硬件。对 GPIO 寄存器的写入是从单独pthreads
的所有需要访问设备的寄存器中进行的。大多数情况下,这可以正常工作,因为semaphore
防止多个线程访问同时执行 GPIO 写入的部分。
问题在于,在写入这些 GPIO 寄存器(大约 24 个 8 位写入)的过程中,另一个线程will interrupt
是当前线程,尽管由于信号量,中断线程无法修改寄存器,但控制权不会返回给正在写入的线程到 GPIO 几毫秒,这当然会使发送到外部设备的数据无效。
linux中有没有方法可以保证这组GPIO写入(总共大概50usecs)不会被另一个线程打断?