|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- ^; o0 L5 Z0 X5 h" g
! j2 \4 J$ m1 w% S1 w在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题" a, Q7 T: N# n4 d, w- X5 K
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
+ ]' T" e/ ~1 x/ M; P \DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
, C- A. H+ P. l. [1 \$ R8 M5 [3 N6 T
7 N+ a( w6 F7 Z8 b* A4 a/ q有如下需求
' j1 v( b/ x- {1 n2 lARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态+ m* f% }: L! j" b' e" R3 W* m
0 U3 T" n3 h: }8 p目前实现过程如下:
+ I$ [1 b! j. w0 o9 S1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
4 ~+ i" H/ W* i4 \" P; f此时DSP通道1触发,则原程序就会结束通道2的阻塞
: u5 o: C5 R/ m3 w8 t7 a5 b" @" s然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
3 q9 b$ c: b' H0 `5 B5 ^2. 在整个查询的过程中arm一直阻塞,效率很低,* i" i0 x5 c% I( H4 i+ x
" t& C1 ^& D( a* Q: S8 J6 E能不能有如下方式实现?
# u, g6 ]' v* t2 {+ m初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情' P+ n! ?1 B, i# F9 p/ l7 |/ Z s
0 w6 Y3 c4 F( G6 F1 q* J. C9 P
9 {0 F+ M* f8 Z x& X5 L. M1 O) e* X7 t1 H& y4 I* R
|
|