|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- u) \+ j5 A1 q, E( | B$ H1 r; L
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
! \) K' p$ R. G; ]" w0 x7 l% Q; ]该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用# i4 r% O/ n8 ]8 K4 K
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
. Q( W4 Z8 B+ g/ S9 c- H1 R: O7 l l- ]) ^
有如下需求9 p" r; r& I) L# F& c' g' [- ^* P! k- ?
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
: P. G. i( H$ ~& h6 }3 f* p$ V
0 m, q* h$ Z& ?0 D+ `% k目前实现过程如下:$ u* T, R& r2 {' x& n: K* [
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件& `) g; M {! U) M# K# M- }
此时DSP通道1触发,则原程序就会结束通道2的阻塞/ y- ?# V% `0 {. x
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
. m; [( W' {9 z/ O! x7 C2. 在整个查询的过程中arm一直阻塞,效率很低,
+ ~& ^; g: X" ]/ Z# V( k5 [& Y/ o2 w5 [% v, _1 M$ w
能不能有如下方式实现?
, \& C8 E& V5 [ d初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情7 M9 J" @3 n: }5 S
: D7 u" ]) f" T. ]/ @
- y r- w7 r5 y4 |$ r* d6 I
" `( t5 D' b8 s3 }3 |0 I7 K |
|