|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- ~( b5 v/ w" y" x) c1 I Y/ K/ {$ \0 ^1 u/ E* E# T
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
$ i+ f/ c G. B; [2 F该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
" K% G$ E5 [6 s6 ~DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
( c" i) C) X h+ f* _ l! t; x( y# [- C. S0 }& T: h4 d( G
有如下需求$ q8 v1 G2 ?: H/ T
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态+ ?* y) q5 i2 ~* T# C
3 x# U' ?7 b. D% ]* d: C/ R& C
目前实现过程如下:
m: U2 B0 p9 H1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
; W n% Y; H9 h( i( h) y此时DSP通道1触发,则原程序就会结束通道2的阻塞9 O# |# g; G* J8 ]8 F/ g6 O
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
% e! ~2 y3 H# T5 g# l2. 在整个查询的过程中arm一直阻塞,效率很低,3 D. H: l' N7 P. ^- l. Z
. B% T( W- R4 m9 u' T能不能有如下方式实现?
! L2 Z# [% w( w6 C6 s初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
9 Y8 X4 \6 d! R2 R
5 K, ^9 i. G! M/ s6 I! v
' @/ F v/ O/ d2 G! {0 |3 L
) ~* s4 [" l: T7 q$ H |
|