|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
+ z* u: O: N. k& v% u" y( \: ^9 e% }' ~# m# H
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题' g$ g) T2 a" D' B
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
- K% C' h9 N# q8 [+ jDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
! S# ^1 T) V! w% O+ q% O j) M, s E0 Y
有如下需求7 x7 f; z5 j0 B( n4 t: p$ P. O
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
2 X) f" I9 e! t% ?4 r
" }5 v' i0 T7 ~' ^$ H* m# U- i. s5 b目前实现过程如下:1 A2 v y' ~! Y3 t
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
' c- q J- B0 b/ T# P此时DSP通道1触发,则原程序就会结束通道2的阻塞
* o$ p# x- S p1 A9 S然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------* J! }2 _4 N2 `5 [ }- i
2. 在整个查询的过程中arm一直阻塞,效率很低,
w3 ?' A C& N6 F6 A9 q: t
% |& ]2 U; h( x能不能有如下方式实现?6 k% c G" Q% o6 |: v# W
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情: ^3 C, R. T) m/ L2 ~
$ M; s5 z- \9 C A# @" t( e
$ D5 ^; w: U6 a# v/ x; }: v' w/ N* z- u8 ]! b: C8 ~2 p
|
|