|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 # G5 h; ]6 @! M7 ^0 V
# |' o/ g: P2 f在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题+ A. |! K0 O, o
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
9 D5 g; G' q V5 c( X5 CDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号+ N! f; p# R0 q9 J( W, d
, b* O$ Z6 q, V( W2 V) A0 E
有如下需求7 d- g y' ?: t+ g
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
( `+ G! A( |7 S& t7 [2 R1 M$ U' J
8 z$ V9 u/ J/ W$ Y- [- t/ @- I目前实现过程如下:
$ ?& B8 x x' @3 X: m1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件0 i) r8 t3 D& X# w: m
此时DSP通道1触发,则原程序就会结束通道2的阻塞( x: ^- p$ S# A% Z% W( a
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
( i+ y, w* ~7 I* ?5 \2. 在整个查询的过程中arm一直阻塞,效率很低,$ s' c. t9 ^' e7 q0 ^
+ b' k* i6 |; d; {/ @% q; t
能不能有如下方式实现?
4 Y* O/ F4 \6 p8 d$ o8 d初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情* |1 E9 R! V5 R' v0 ~2 a& D; B
, t& X* z+ l5 a- i P; _4 A! V1 A: D( S! v4 H
8 p. j. R! t2 w/ ~) Z |
|