|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 2 @: X+ U4 P9 W! R0 G
7 C9 B) D6 E# e
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题9 [& v: B6 M y. w( T8 N
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
% V& U& v. o0 k: f; U9 l' {8 U6 ~DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号/ X! U+ J7 @. s' C# ^# l$ A
0 T6 x2 S5 u b( S2 F# B
有如下需求# N, C8 E; h2 e$ n
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态1 t4 [" e' ]; N+ [- J" R- @
7 w0 g5 Y7 m- Z+ w# t目前实现过程如下:
: [, q- z8 E, G4 E: Y1 V+ n1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
/ |" t. X1 L) E/ f, j此时DSP通道1触发,则原程序就会结束通道2的阻塞8 i+ M, [. l) ~& w# P7 t
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------4 T9 D- R6 w* \- ?6 d/ Z6 |. R3 i+ @
2. 在整个查询的过程中arm一直阻塞,效率很低,
+ k, J% S4 \* {( G$ h" z2 i( B2 n1 Y6 J9 B
能不能有如下方式实现?
- [0 D" P& J! p+ s( ^初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情4 O; q3 B! n) W5 D
* p9 O4 E% K/ K0 s- S T: M$ ]: Y- [
! ?6 H( m4 |% ]) {
/ B! r- \$ Z. k! ], u |
|