|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 $ Z0 Q- n& i+ k$ R4 m
7 O7 Q) w! h0 X" y1 g( c
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题4 J: m8 B" k; L* Q$ ?
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用5 m$ A) h* G" x1 e
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号5 ?" k1 g ?6 \% M! I0 |/ |5 ~4 P h
$ `( V) J+ b8 z. }3 S A
有如下需求1 Y! l( I/ F1 y
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
& b) j1 l! s' z; ^1 ?* s. I J; F) ]
$ e+ v0 G2 j( E* i0 L, d9 Y目前实现过程如下:9 H* s; h _" S- U7 B' Z
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
7 T* w$ w2 v2 C3 Y6 G( R" w/ M此时DSP通道1触发,则原程序就会结束通道2的阻塞$ x- `" T2 L3 l. @ N) r
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------* U/ _# }4 c4 z2 [/ I+ p8 {! G; T
2. 在整个查询的过程中arm一直阻塞,效率很低,# w2 E# p' f) j: N2 m; ?0 ~# _% U
' N/ E8 n8 h( g3 X6 X9 d8 P- @' o能不能有如下方式实现?
2 E+ e4 ~1 a- l0 _8 Y' k" G初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
6 b l- Z& S! _3 O: G3 u. q# s- o; I! O$ X9 S: j3 t5 i3 @* d
6 H- Y; L4 K, \( c- H
4 v0 U' L# g9 c6 W |
|