|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
; T0 Q. s8 n) S6 i" o" U. T$ n9 @% D5 g9 o4 r. o
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
7 Q4 }8 v5 G7 g1 e该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
3 h/ m1 I$ k1 a9 }DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
4 T) c/ E8 E' d4 b0 }- N4 E+ Y6 s+ `- U* P- @
有如下需求
* ^. V% {1 n9 Y: T7 CARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
) Z: i4 w4 |8 R& z- h- g7 N. q! `$ L3 j! w0 u Q
目前实现过程如下:5 I* P$ y% i. s! K
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
5 v) t. N3 T" I* l n此时DSP通道1触发,则原程序就会结束通道2的阻塞
# {- g8 W2 P4 s" r然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
3 H" i0 {8 f1 Q, H" E$ M% v2. 在整个查询的过程中arm一直阻塞,效率很低,* a/ O4 r( G- E
1 D4 |0 @, k$ l, J X# `能不能有如下方式实现?$ I% V$ O) h* j$ E: H' z5 W
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
' t0 q0 R a2 w2 n" L0 u+ v; }; f; Q' g& ^7 x# \) ]
/ m& {+ O9 c" J9 d
4 G, m/ d# }& ^$ b( P" j |
|