|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
0 Z9 B9 ~$ v1 o7 l0 D# j3 {. E
6 ~8 \: j2 u* ?8 S: m' M: ?5 @. Q在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
2 j+ z: X- G2 \5 N+ j( W该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用 x0 I' L. m; ~) L. j5 N
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
& {+ D: N1 D, v# p
+ s( r2 d/ g6 M/ |4 `4 A有如下需求1 A# j, @1 v# J7 u, u
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态9 o" g5 y+ g5 F9 b' l4 [( ?
F) T- d1 h2 E) t. s/ h# O' Z; i目前实现过程如下:& U5 {* N' q( k9 G
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
; `* F8 c6 K. W v8 }! |" j1 w' y此时DSP通道1触发,则原程序就会结束通道2的阻塞2 N" Q0 u( Y, p7 k
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
9 @9 ?' [( Y* c, P( F2. 在整个查询的过程中arm一直阻塞,效率很低,
" P) @) \# v& M6 R) g9 A) Q* A2 f
; ~1 N% M$ H) P4 ^5 ^能不能有如下方式实现?
( X$ C0 L4 g9 K' U2 e初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
5 U( T7 w3 T4 w; |3 v8 K+ L; i/ |! f* [1 S& u4 ^ U
6 ^" ^/ O. j* k1 m
) z" R) X% k- W |
|