|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
5 i3 |( c1 i: `& z. }8 U6 o/ a9 G6 B; X; T) A6 P% S
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
% Z. @& g1 | U8 q8 h# j该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用& K$ r2 a* ?2 w3 C+ ~
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号" [" _/ @* K u2 q N5 c
6 G' B- K) U/ n6 ^# I
有如下需求0 z& |# d+ D* `' q
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态$ L, ^- U1 l v9 P7 W
0 y! j s) E/ `: C
目前实现过程如下:
w3 ~! q$ H4 Q* L1 s2 p- N) u3 M0 y1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件5 }8 I; `, u( t. a/ R
此时DSP通道1触发,则原程序就会结束通道2的阻塞
; q v7 |$ b8 i0 h7 s然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
- |: z( S( _) l* s; I2. 在整个查询的过程中arm一直阻塞,效率很低,
% S" [3 M/ h# W. E4 H8 A2 y6 b
7 ?4 i8 }% E3 ~0 H i能不能有如下方式实现?8 U0 \% d3 W2 q/ N, t0 a% O7 }
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
9 j' u8 h: i; s% {9 i" I
2 d. J( e q+ [5 y# p+ i/ P, W& P: l- ?. l8 M. ^
$ b' @1 u2 K4 P6 n" Y3 s9 R0 @% w |
|