|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 / O4 t2 [ I7 u2 b6 G1 e3 Q, \* n
1 G2 _4 i6 P1 r2 g在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
; b4 ]/ k4 w( l6 ]) e& d该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
. N$ o4 U/ _4 Q4 w* i1 H6 D4 N4 IDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
8 e0 q% S" T8 P7 N6 d
8 x1 K3 j2 @7 i% v t" m t2 `4 F8 W有如下需求
# L3 @) a/ u. [( a4 jARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
: v" U% J9 k j4 o) F. U) N" b+ |1 [7 G
目前实现过程如下:8 L( v5 S- K9 l& [: S _" X
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件& k& e7 [2 F' l& ~0 {# ~: [
此时DSP通道1触发,则原程序就会结束通道2的阻塞
( a0 O$ l2 | B; j+ i8 p4 [$ z+ k然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------: ~: C# O1 R ]: v3 ]: i: w
2. 在整个查询的过程中arm一直阻塞,效率很低,
1 d6 f* D$ Z6 o' o% Y) D7 T$ j( P9 Z' _$ F
能不能有如下方式实现?; Z$ K( L4 M/ T
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
) V# L5 o4 w3 e( t/ v4 a* u$ v) S2 G5 I
) y$ h/ V( G/ H% a# A8 z* p
$ b! [' a& Q0 n
|
|