我有下面的C问题: 我有控制SPI总线(作为主站)的硬件模块,让我们把它SPI_control,它有私人(static
)读&写入和“公共” Init()
和WriteRead()
功能(对于那些不知道的人,SPI是全双工的,即写总是读总线上的数据)。现在我需要让更高级的levekl模块可以访问某些协议。让我们来看看上层模块TDM和AC。它们运行在两个独立的线程中,一个可能不会被另一个线程中断(当它处于事务的中间时,它首先需要完成)。队列中的信号量 - 甚至可能吗?
所以一种可能性我想的,是将一个SPI_ENG inbween模块和SPI_control控制数据流量,知道什么可以被打断,哪些不能 - 它会再转发数据相应地spi_control。但是,可以独立的任务AC & ** TDM谈到spi_control,我可以让他们写信和从某种好看信号量队列?这应该怎么做?
互斥锁(及其优先级反转功能)来自哪里? –
@barak manos谢谢,但这不会处理协议中的交易,不得中断以允许完美的转账完成。 – cerr
为什么不呢?任何尝试访问SPI的线程都将被互斥锁阻止,直到拥有互斥锁的当前线程完成。 –