|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 ! h6 N$ G2 t2 T9 ]
8 `$ j. ^) B3 y在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
2 r& O$ E+ q) @- z该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用0 i/ ]+ f# p! i; y
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
* w, H1 C- h& Q- I* B: Z" M
2 f$ S' Q- q1 n3 l" N; E* d" E* ]有如下需求
' A+ N* `6 n" ?' ~* S5 QARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
- Q, Q: g, w$ e4 ~1 c5 w0 F
" r3 I1 {+ p9 v目前实现过程如下:
8 k% @9 W# _4 i- d* K1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
2 Q- s, W) A* X* X, ^+ H此时DSP通道1触发,则原程序就会结束通道2的阻塞6 K$ M+ e$ D- F- K$ e: v) M
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------, w( m; c, F+ o
2. 在整个查询的过程中arm一直阻塞,效率很低,
# x" [9 Y- R3 |
) s& g( k& n* V, w& B1 \能不能有如下方式实现?
( s: i" I9 B& L) @初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
9 T* }' o, }5 ~* |
% O; i A+ l9 ^% A# S" D% U, s* F; t' |
k, l( z5 Y3 Y- Z3 }. S4 I0 v
|
|