|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- s M: T9 c) ~. W) ~
. W5 w2 k9 p. P# [) O在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题6 z( E% Z% R6 \8 a# I+ J
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
$ |5 h+ O+ ^& f) Q( ?" |7 P# rDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号9 P4 w0 f+ d2 t) B
+ z& I, @* o: ^8 ?有如下需求
1 u* p8 W! i$ U% B2 e2 ~+ NARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态) z+ G+ u) W7 R0 g
+ O3 k0 `7 U+ V( s7 z目前实现过程如下:- A% W0 }" G' s/ e
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件; P: G3 q9 V, b+ G6 _# s7 Y
此时DSP通道1触发,则原程序就会结束通道2的阻塞
/ u4 @5 ]! A6 l! i然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------1 G3 A% O( ~/ D
2. 在整个查询的过程中arm一直阻塞,效率很低,
% }' Q% q! g6 P, S# B2 m. t
: o2 Q% \0 J r6 p1 G$ @! _能不能有如下方式实现?
7 C: s* }. b& Z" N5 K初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情5 _; A3 g& X& |$ z. [2 A
) V- {. f' Y4 I7 Q' z6 T
: K# C6 [$ G S. W" x% y2 _5 ?# b1 v/ Q4 u2 l+ }4 ?
|
|