|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
& r$ J0 x( y2 x! J7 M) [$ p/ J0 W5 F0 z X/ v
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题- t7 C [# P; Y1 h7 p8 D
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
3 w5 R9 x: E: \, J0 CDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号& w4 k0 n, N: N
/ ~% s% {8 Y, h/ T, v4 M% q1 R
有如下需求
1 Z0 X4 |- D! L( i0 R2 CARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
1 s5 S8 U* ~" y1 x4 o, E/ L8 J
" p1 X8 q' I# R o4 \目前实现过程如下:
" Q+ m6 r% e' M1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
, \, o$ J! o. J- f2 k. @7 i* w; S此时DSP通道1触发,则原程序就会结束通道2的阻塞
& k9 R: X( l% Z% h+ w! o- j然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
f5 s! Y! O) u8 U0 ~9 K9 H* \7 N4 u% @2. 在整个查询的过程中arm一直阻塞,效率很低,
) f; {7 t7 h: L ?3 c; g) G0 b: l+ Q3 {5 g% m" n
能不能有如下方式实现? y& x. R& z" E& @5 Z: x4 I
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
' k; C* j" [9 G( ^3 L4 X
9 X& ~/ W# x* X9 h1 W% R4 ~1 |- U& P' S* V
) N, O9 m8 D; D* R% F7 Q; q |
|