|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 - W5 A% j9 `7 y& G
$ w: T# ?+ Q \ z, u- J) S, c, x0 Z' O
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题% Y& p8 i) A' r
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用' {6 L' a9 B6 g4 N
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
$ B4 _$ k- ?8 g! c4 C% _5 {( r: F$ O; O! p+ R3 w& T; O& q
有如下需求6 F% j! k0 r1 O3 r. a
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态. K: b8 @( A Q& V( ~& f% e
1 A5 Q" i4 ?& g3 p- g" V8 L7 m" K目前实现过程如下:% X! @; z4 I. M' k7 d- k
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件- F2 K- ]/ [5 M* g; T! R& Y; f8 O! f
此时DSP通道1触发,则原程序就会结束通道2的阻塞7 h. i* f; k5 G* w2 S3 ?
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
* P$ d! i! P- t2. 在整个查询的过程中arm一直阻塞,效率很低,1 R3 u1 c8 K! j
: I- p9 H o4 R能不能有如下方式实现?6 _: ?7 B/ D2 g9 L9 |2 w
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
* z& U4 d0 v7 M' f* Q. W6 z$ u" _7 N( e
, ?3 b2 l2 r' }* l% `! }
/ u) q, @/ F9 ~ |
|