|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
8 e0 `5 F' S9 V1 w; Z
, U8 z1 M$ m* ^; _; h% O在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题5 f; v/ l. ^, n1 e! g. |+ F( U- b
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用0 v1 X) x T( V% v7 W
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号) Y3 c5 v5 {9 f; U) k) S0 E) n5 k
( l0 \; U( q, J: j/ C6 H9 c' o有如下需求
0 U' m9 E5 T& R1 R7 H# Z( u7 L, F( nARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
" y! l5 o7 }( c) L
5 a0 u* v' p1 E/ l/ e$ _目前实现过程如下:+ F C* D( f1 E2 ]1 G# i) b) A
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件- R, _+ B" K5 w# T
此时DSP通道1触发,则原程序就会结束通道2的阻塞- k/ C4 k l- c3 n$ x8 f; |" X
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------9 u' ?3 \( c1 K$ G4 S& M; g2 K# h
2. 在整个查询的过程中arm一直阻塞,效率很低,- t% L4 k$ s) ]# @) p" t
c9 z: U+ H6 n7 J* l$ f/ ~能不能有如下方式实现?
6 L* Q% U* F6 {- P4 z初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
/ y% \5 B# \; Z6 g _- `2 u5 k
. i3 r, b: W8 U; Q+ `# T
* M; a0 x; ~- {: E+ ^, `; }9 s: E4 V# |) G9 |5 h3 T
|
|