|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
! Y: @" q& N+ O; Q0 ^. u, h8 @. j: A7 I( ^" s* h$ W6 ]: i# ?# S
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
) r/ E# p0 s5 q6 j该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
! H/ r5 C% ^0 {4 ?& |# K8 DDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号: A3 q! h2 O! K9 i6 x
/ t! u+ ?5 g5 f- R. U# j$ l
有如下需求9 s' s6 m4 L$ |2 m' R5 r" g1 @, X
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
9 d; O Q6 f; ?' n$ s# V2 r [" G, w* ]0 f% C
目前实现过程如下:
% d7 Y2 e9 k2 a2 b! w9 [5 y1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
2 q* E/ W7 k% f j3 G& l8 q7 |: [此时DSP通道1触发,则原程序就会结束通道2的阻塞0 s3 N2 j6 t j O
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
; L' M& m9 E+ ?+ u3 P+ P% z2. 在整个查询的过程中arm一直阻塞,效率很低,3 c _& H$ i. [7 }- Y0 V7 [, D
7 K( X4 _2 i- q8 {$ w# x, x5 z能不能有如下方式实现?+ L4 T/ l8 v/ a8 y& m5 w% o0 T
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
! T9 b7 N3 ]' W- j# G# J+ U- y5 ~4 [6 N) _$ R1 n
9 g" a4 I8 ^0 U% E2 y1 L' e& `
4 g9 T, z! E4 Q% s) A P |
|