|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 & I- U! x% `) Y3 T8 z
( _& x8 r& Z1 o' q4 P, a! l6 s- h
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题8 m0 @1 Z( V$ v2 |/ C6 w5 Y4 S
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
. O# B1 Y$ X, @% {: `DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号8 N% T0 H1 ]7 Z9 M0 W. y( z) s g
' U: J) g, p+ N8 [5 q* u1 [% o
有如下需求1 R! m! E. k& b) K1 z* p
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
' B G- {6 \( R
# K: l4 _* e9 z1 R目前实现过程如下:) v+ |3 T( z( b. |. B) @3 s
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件$ p& w1 W ]5 q5 m3 i
此时DSP通道1触发,则原程序就会结束通道2的阻塞
4 k. d+ ?' _4 v( V8 l. ]4 A6 _然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
( Y8 \. f" Z2 y! k1 Y: I! Q( f2. 在整个查询的过程中arm一直阻塞,效率很低,! L6 R5 b* l+ |6 ~$ `; F
* R# L6 n( G. r: x: G, g5 z1 f% M4 k能不能有如下方式实现?7 K* r1 x I8 u" }! a- B
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情7 V7 M8 u* V# U
) a* |$ X& y. |5 J: I7 P4 R
" f1 h, X" [9 {% w0 I4 e- R# I0 F- G# I% W1 ?) v
|
|