|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 2 |1 Z) B5 g0 V+ c3 l$ k
2 y' u" X. P; \6 Q
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题4 Y* M$ \2 ~% Q. l' ~/ }) w: i t
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
7 o. {/ f. M* sDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号( L5 L% @3 f+ g! N W0 `
$ S6 t9 d0 ~1 F) j0 i% R4 \有如下需求 P+ F# o: }1 B: e& [
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态% w1 S8 r( p, T) [* L4 Z
7 _9 |. t( g. N% A K" d
目前实现过程如下:
; b5 `& B+ o9 t5 Y/ B# d0 W1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件. Y5 A7 L3 W4 c, k% }0 i h1 S1 c9 v
此时DSP通道1触发,则原程序就会结束通道2的阻塞
) g" I" y: }$ S& K: {- f然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------9 Y d' n: o6 f4 S+ Y
2. 在整个查询的过程中arm一直阻塞,效率很低, A8 Q' _9 X2 Z1 s" J! z, k5 V
+ T- z9 P6 g5 l! }5 j j( @9 n能不能有如下方式实现?( B! t, }4 D& ~# p3 Q
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情- U7 v' F# |6 f- k
& F& j0 G+ |, `4 U6 C) Q
. S( N( B) V5 G& s6 f" P8 H* J" t9 {1 l
|
|