|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 4 | U9 R) Y z$ M. O5 ?) Y1 ^
$ k4 a, V. D* T; y
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
/ j4 [5 N* y' ~ E3 z该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用8 Q- a6 t* F0 F5 A+ |$ e
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号! Z% E8 Q4 a6 W* u! \
& @2 E6 B7 l2 }* f' Q
有如下需求' P' l. G6 Q) `$ H3 P- o0 i
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态4 x! J" s4 D$ X
+ \1 [8 t4 X, ?1 J目前实现过程如下:
7 ?% Q9 p% a* V4 v1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
6 _% ?) [. R0 `此时DSP通道1触发,则原程序就会结束通道2的阻塞# t7 V) f) V) D: v% n N( C
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------" T3 a* X' T) f, d& K! D
2. 在整个查询的过程中arm一直阻塞,效率很低,
; O" i- s! x& E7 K8 Z& O$ R& x
能不能有如下方式实现?
5 U5 }) T, x5 y0 ^初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情! Q" x. k4 J) O# p; @( |) w
: V6 X& B e9 q% J7 H: q
; F ?7 J) X7 m7 e: q
! p* u0 H: V9 P- Q4 X' T |
|