|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 7 D, n' @1 z4 l3 G E6 y3 }/ u9 L
$ Z8 G3 p. `1 Y0 k9 @% N
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题# z( T. W& d3 T3 ^1 k$ I* S
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
% q' U* u, X+ k1 Y2 d0 ]5 ~DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
/ h& U3 b% o2 T K& q
7 J `" o2 R7 L2 X A# q有如下需求* P/ [4 K' N X
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态! O" T# [7 V( X
, z- j* i* u+ f, W目前实现过程如下:
; a% g' z" {% W, a. [1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件! S `: W2 l7 D# I. Z
此时DSP通道1触发,则原程序就会结束通道2的阻塞
6 i. h6 _* m! X+ T- k8 { E9 I- _然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------$ Y- _' j. h" C- U& _( e2 L
2. 在整个查询的过程中arm一直阻塞,效率很低,
9 M$ I1 q" C% e5 m7 W
* x# z) e) d; ^4 a+ {$ R能不能有如下方式实现?4 u7 k& J6 @- E8 L# J2 D, J
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情" k7 D2 I4 V" [+ H; q
! V$ J I' A% {; b" }' r9 Y
/ P' h; z2 ~# d V$ e' y
/ [. ] Q4 K7 I6 b |
|