|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 ' ^0 P& O8 c* d
2 r- S( z# ~) G5 _
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
0 H: j/ w+ K! F2 G) L该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用5 e8 W* G7 F9 D$ }- @
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号( X$ V1 D1 u3 \5 Q. {0 l; P8 w* r
6 B/ n# U3 L/ e+ [2 U* i- J$ A有如下需求1 C2 T4 D* X, f: x
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
( o, B# m* [" ?& {% v( T1 J$ Z# P! d
目前实现过程如下:
2 G6 M0 Z; _0 n1 V& w2 X. j& o5 {( H" I1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
0 I. z: F/ @ v, N) @ p此时DSP通道1触发,则原程序就会结束通道2的阻塞
" n" j0 P1 \& A* Y3 p然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
% Y# E' O0 @6 p8 q; b2. 在整个查询的过程中arm一直阻塞,效率很低,
5 _7 X' I( z3 f) k! `, s' _
3 R- Y; ?/ F- X# ?8 Q4 G能不能有如下方式实现?
$ S0 o/ g2 X: S5 A$ W) t初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情: r# J& r! g3 \+ a9 }# a& M$ e% B) T
. T0 j% \2 \7 B
8 U2 w( E, W: U) H$ X, ?# k( n5 L
d0 e4 ~' R2 T: A/ j. b5 c
|
|