|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- Z9 d# x' ^3 }3 O/ ^. r. Y! M% R, t6 D8 c6 R2 _6 l
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
, \4 D: m' J3 t该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用+ Q) T3 s& U6 h& h! O) B. h
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
. [: P3 Q! B% P, `$ e& W$ l( E. W+ M# o) @6 n
有如下需求
2 S1 F9 Z- l2 Y }9 u' ~+ M2 AARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态: \, t* u; p3 G+ Z
0 V3 m4 T8 n/ p# l' q
目前实现过程如下:* W5 h2 F+ a5 L5 k' ]
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件$ C3 c! u2 k! U" G1 ^
此时DSP通道1触发,则原程序就会结束通道2的阻塞
$ t, \ k2 e+ Q$ b然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
7 P6 X& H1 m- W- ? x2. 在整个查询的过程中arm一直阻塞,效率很低,
; }: p* F& v# E5 ]
! r: _6 o% T/ [2 C能不能有如下方式实现?
) ^* ]" E8 K" Z- }7 c初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情2 f' U6 }1 W. b4 F* A0 Q+ n
, v* }# a2 e( a% E, ^9 Z- B
% V1 ]0 U# @1 O# ]5 B" k4 ?
& D' E/ J5 y5 g Z! \( q |
|