|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
% l$ M% ~6 k0 G# B; r& n8 f$ C/ b7 v# i% i2 M5 j: {- }
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题! D. ]! b- `; ]. e4 T; C X
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
% ?. c$ o6 j2 ?1 f) MDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
9 O. O/ K; y* H8 [% a9 K( `& K$ r
, t9 k7 h+ F- [有如下需求: o7 F& e, `0 e1 D( c
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态* |1 K1 q+ ^& i# Z
: L Q+ @, [* k目前实现过程如下:
7 t+ i8 _, \% A! ?# p% F8 Y1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件( l' O1 P, E/ T4 B
此时DSP通道1触发,则原程序就会结束通道2的阻塞
3 ?3 R6 `: s$ O" ]然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------; v! \4 Y/ R& c" k* x- a/ x
2. 在整个查询的过程中arm一直阻塞,效率很低,
* Z& c2 m! u' R% t% [* r5 K# W; A e; }: S
能不能有如下方式实现?
5 y, P1 N3 q2 e! o2 \* E初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
) {* T/ q! x. Q- s2 F: E
" j% V" }* w( v8 t( @, p6 U+ P
# X8 I& S* F+ c% |! ]7 t, ]9 N9 T( t* U3 F3 `+ }# Z H
|
|