|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- y. S7 L; V& |* t1 c; Z# G' {8 L( J6 ^8 j9 k0 b
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题; f& I) f' `: J6 l( B9 y
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
- o4 w" R6 |2 K$ S. vDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
& N2 y: G I& F; s" Y0 |3 i7 n. I1 ?6 o# t: z# ~8 x9 ^
有如下需求( T1 I; z# N: d3 @
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
^2 T8 R8 E. ]
! e( w: h3 D2 R; V1 B4 r8 [9 n& q: n目前实现过程如下:3 A- M% ]3 R3 K6 i" z0 Y
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件- [9 A8 {( |. [; T, s4 c
此时DSP通道1触发,则原程序就会结束通道2的阻塞8 E2 v6 Z- M b* e! i( {5 R7 k& H# I1 u
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------6 C% r; [2 {" p- f7 Y! \
2. 在整个查询的过程中arm一直阻塞,效率很低,
. }5 F+ s- i$ ]- ]7 k$ ?. X
( L* v x I3 Z% l能不能有如下方式实现?1 y! u1 R7 i7 w% K" C1 Z D+ [
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
5 ]9 `2 A* I( T- L2 T9 N, i: t0 W' |5 x5 d
B/ X. v& y7 D: ]" v2 G8 w
% n. S* `3 v$ C2 {) Z. } |
|