这里记录的不是IPC通信机制,是linux主cpu和scpu间模块的通信
1. 首先需要硬件弄好中断通路,两边需要能向对方触发中断
2.通信机制需要解决的问题
(1)同步异步请求
同步: 对于一些需要返回结果的调用需要同步,返回finish
异步: 为了不影响模块运行速度,返回ack,再返回finish
实际情况,主次cpu之间有晶振差异,运行速度不一样,如果采用同步请求,如果是主cpu等scpu将可能造成瘫痪现象
(2)原子操作
为了有些操作不被中断打断,需要关闭中断总控制
(3)cache问题
如果dram存在内部dcache,需要有刷cache的操作
3.通信机制的实现
(1)通用的通信框架op-tee
(2)采用cmd模式
- REQUEST 4 REGS
- CMD (REG0)
- PAR0 (REG1)
- ×××
- ACK 1 REGS
- CMD (REG4)
- FINISH 5 REGS
- CMD (REG5)
- PAR0 (REG6)
- ×××
- RET (REG9)
(3)采用队列模式
将cmd和参数写入fifo,寄存器存储fifo地址,管理wptr