|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
) C T" ]8 P8 i# A
6 U7 n/ E: W/ w8 ~在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
8 j: g7 G% v X该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
) [! I: r+ Y3 f# \0 n( XDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号: o3 j% z m4 a
6 f% w% O! y4 ` `% k& k) I有如下需求
) A- e; Y; K& X# NARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
) `# q9 @2 i2 a
5 O! X. n. T8 u目前实现过程如下:
7 a/ B. O5 U$ f9 `2 z8 W) t& o1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件' |: w4 H& b3 X9 ^, ?
此时DSP通道1触发,则原程序就会结束通道2的阻塞
1 {% L, N# u1 o% J! F) k然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
A0 r& r, ]) p: R+ f2. 在整个查询的过程中arm一直阻塞,效率很低,
/ z# U- [- l9 @! u( f9 `- w" b$ \$ u. t
能不能有如下方式实现?+ B) Q* S( d3 M: |
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情+ ]2 C* c% [* d* W0 \* R4 p
" S8 E7 }) a6 m1 }6 b/ ]9 I) I
4 J- ~4 M5 Y& y0 H( \3 [7 `7 b6 C- Z) q m7 w* H. m. Y! J
|
|