|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
# N Q2 a' w9 x6 a
8 m) @7 V- B4 Q) H, n* ^5 P% O在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题3 y4 s# E) {8 }, l- @' s0 y/ {
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
9 V- _+ z9 M- }$ t# l. kDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号3 W f( S' L2 S
9 H3 N+ ~* Z( z9 W3 H
有如下需求
$ f, {$ V5 l8 b" oARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态' U1 X" S+ x; K- f( ?
# w( s; R0 X/ c. t+ u' s目前实现过程如下:
1 i; C' v% [" w( ]: Q G1 ~1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件8 F# x9 _. Y# q- L
此时DSP通道1触发,则原程序就会结束通道2的阻塞2 H6 w. d- K4 c8 ~7 D3 {# f
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
( b8 \0 r3 N+ Q* z2. 在整个查询的过程中arm一直阻塞,效率很低,
# Q/ ~- }1 H% j2 L$ o! O! k0 l3 H+ Q0 c5 J7 _. r
能不能有如下方式实现?+ A8 R$ \4 {. o" k: z3 J; J1 W
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
" K$ i- D! ?! a) T6 x7 U+ h0 M7 L2 m; }
9 h* L+ v& u- _4 V, H5 X
) Q9 f2 v; X$ `- s |
|