|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
0 H8 T& f# U9 l. ^! W8 J3 s
1 ]3 P z' h& b) `# R$ |在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
! P& d5 U7 W- e" N& E该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用( l, b9 Y, r9 T/ E
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
& e1 L; `! p. D0 \5 ~+ s; p8 Z" n' ^. t5 h* T* w" o
有如下需求
. L) @5 T5 [% N8 i: F5 ], ^ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
4 H: b! ^2 q0 X& S1 h" D0 y c4 d7 f
目前实现过程如下:
) t: \ }* Y& n4 h$ d! u1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
; k8 Y* H% G1 E. _, O% E此时DSP通道1触发,则原程序就会结束通道2的阻塞* y& @6 P7 r6 Y" W3 Q7 b
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------" K( U' Q: t, S3 n/ C
2. 在整个查询的过程中arm一直阻塞,效率很低,7 I3 J- `. D9 g# ^, P
5 B5 v2 O$ e9 `4 T6 Y6 r
能不能有如下方式实现?
& Z8 f8 o% g1 o5 t. h初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情0 d9 ]( U% u7 v' H
% s' w. g6 V! z9 Y w, u
/ \( k9 V; t" h! {4 c g! x1 ^+ T- `6 e. n1 o2 U2 V
|
|