|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 " ^$ d, T% Z7 r' r p
6 F/ E! O6 o( |* f( }$ m
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题# ?3 f9 A& S' J2 J3 n, i1 C. ?1 t
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用$ o, i+ A5 w! B$ Q
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号/ Y9 S; C5 c5 [
7 w/ [* H' f0 p9 C5 ~, j有如下需求: s- [6 P5 ^; |6 i
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
: P2 Z7 F' b0 K2 a% r+ r$ Q) I+ m9 Z ]
目前实现过程如下:
! _9 Z: i% S8 ^1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件: J% ^) Q% H2 w6 s
此时DSP通道1触发,则原程序就会结束通道2的阻塞# o3 d+ g: T0 S2 _7 \
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------; g) |3 b6 K5 @4 `" n7 r2 o
2. 在整个查询的过程中arm一直阻塞,效率很低,
$ o' J+ I; n I5 J/ i2 v, D E
7 `; Z' j4 k! ]! U; r% t+ d. M) N能不能有如下方式实现?3 \1 O: G g C2 B* W5 s! z
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
9 _" `: `2 X/ x
& i2 Q' I( }8 [/ l1 J- D" K# J2 _5 N% W( u. o: c8 m
$ n8 ]4 T( T5 u. i Q9 {% s! F |
|