|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
9 E- q' u; _4 @" F! K. z+ q- {3 v
8 r. S9 ?4 D4 R3 G* K- u" I在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题5 i, V! E& f3 _- J8 V
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
$ T2 C7 t& z; [DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号+ e$ h. j/ |; c2 Y' V6 c9 [$ b
' M% Z) N. m: G! U+ R7 f) W有如下需求3 D! h' U7 z+ E. c' |! T
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
$ b. Z, @% D5 R3 H* F2 D1 l, x
9 u0 |- Q+ Q, g% d目前实现过程如下:
& ]0 E& j* S; L' q1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
, R/ Y3 o/ T$ h此时DSP通道1触发,则原程序就会结束通道2的阻塞& r% \+ l: L1 H/ z+ ]
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
- t g& e3 ]8 S2 X2. 在整个查询的过程中arm一直阻塞,效率很低,
' v, T1 c K; V. b% {' z" Q* @
# L5 _; e0 j* V; k; T能不能有如下方式实现?( q/ L9 s: j) l! o+ q1 V
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情8 q/ I! S) J, C% u8 V0 ^
( [) i9 i v% H( F3 s
$ Y/ L2 B' B( e8 U$ r8 t5 J$ b
/ y* H8 T2 m9 p9 [7 A) r. E" V, n: b
|
|