|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
# u# B$ W e- J, E: N" T, F$ t. p, E* x9 W$ I7 x8 ~) F
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题, i8 s2 z9 `4 W2 h$ ~1 l
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
7 i, m5 Q% e; E* K2 j9 \, U& J& ~DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
: q. C6 @# O. n, |8 k
" t- o+ a; s) X0 [有如下需求! j, h0 L) U. m! X+ c
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态2 G5 f; K, x5 S' h
4 C! I$ A/ [9 ]6 @
目前实现过程如下:
% f# g: Q/ }3 o. p9 U6 u' l1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
7 P( J' W" x# b1 x* P9 K此时DSP通道1触发,则原程序就会结束通道2的阻塞! Y9 ~6 x4 J* h7 a+ o
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
0 `8 v4 H0 ~2 x; j3 z2. 在整个查询的过程中arm一直阻塞,效率很低," Y6 q6 Z# w' ?" L! j* V7 M
9 T0 e) _( j. M
能不能有如下方式实现?
0 G! a; ?& X5 k初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情6 r Z# D! v; P0 ?
7 `- Q8 l/ I; c- w$ w; T( ` B4 p
I5 V. G6 ~" p6 u3 e1 W
|
|