|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
, B- F" S1 `7 Z+ V: O5 w9 \+ b% Q: D6 W% [5 y* y/ F$ W! ^/ G5 O
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题$ A( @; \8 ?$ z. ~$ i; i2 H5 `
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
* O* U, u& k% lDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
8 G& Z8 O4 X3 l; V' J% b' j3 n C4 J* f1 Q
有如下需求
: Y# V$ d8 A. E0 s3 ]ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态& I3 N# X- \# b# _: S
4 C# p7 p% A5 w% G! X% Q: f目前实现过程如下:) n" [7 N: ]# f8 ^2 X. ~, l$ ]
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
0 ], {. {' B$ v4 y# e1 G) [此时DSP通道1触发,则原程序就会结束通道2的阻塞
$ c& P) K6 w. h' K' x' D然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
5 X8 `' U# _# l, P2. 在整个查询的过程中arm一直阻塞,效率很低,
. w/ c2 X5 Y; a- E
. F: z) |9 x! T! D/ w* b能不能有如下方式实现?
0 A* J E. I3 d" S0 h( ?& t初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
2 j4 P: P$ s( ?/ ^9 {) k4 B/ `" m
( K% Q% \3 U5 {8 ?: {
6 J( W9 [' T2 H2 d
|
|