|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 3 A2 a; O) K' c6 ~
2 y% D+ V4 x1 ?) H- R( C3 ^在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题0 `3 e" L* o7 q# i8 {# f8 Z* b
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
( R3 S5 }/ \3 g1 JDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
" a& J9 [" J0 a3 N; |
! S7 ]: ^- u' d- {2 v9 [有如下需求* K- B+ t! i3 O0 s, i" V
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态5 u. {5 B0 _& J" q% w
9 T2 v7 |0 j, N# G4 ?* o2 B( w目前实现过程如下:3 _, B- |$ R+ Y7 V, W( t
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
& g, Q. s, y" a$ o% x此时DSP通道1触发,则原程序就会结束通道2的阻塞( E( u" c9 G7 [$ b/ A. u/ @: O
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
5 I" c! @- K7 @: G2. 在整个查询的过程中arm一直阻塞,效率很低,9 G" t9 @4 Q4 j9 S+ t7 ~
) `% Z4 e. O7 M
能不能有如下方式实现?
* E# L2 C. @/ _" n) E初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情5 V( f# F9 k8 ]% q1 P
+ {5 M1 w9 f4 O
% M; w8 I4 i" ?* q& ^; G0 V' I' C O! D$ \/ H
|
|