|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
# Z) b/ l' k8 V- {2 F9 b: [( u3 Z: v, `8 T; e Z6 c, v
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
2 ^6 G4 {+ P0 c7 R6 r该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
7 N: s6 k h' R. B! T. a2 [DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号- e: m' V2 r# F
" U c! B1 N& f3 {0 R& M' I
有如下需求4 A X& J: q- V; C; e3 h, f
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态! z6 f% D* h& B. J i
4 E+ Y8 y# M! n, R7 l目前实现过程如下:! _# ?9 [, W! o, o/ F
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件- R9 ?' [/ ^. ~* k( i' L/ S
此时DSP通道1触发,则原程序就会结束通道2的阻塞
0 Y# r1 X8 P, l# g然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------5 b& `+ _/ b$ }! T
2. 在整个查询的过程中arm一直阻塞,效率很低,
X2 k8 ~( h: R9 q
* t/ j: _# D2 G: V能不能有如下方式实现?
0 E) A# E& b9 E: ~初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情+ b! K( {& j. I
7 l. g5 D( A+ C7 f& Q; s
, i4 B2 D1 S8 ^9 m
# L/ L0 R& q5 w1 y
|
|