|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 0 v$ S, {. B- C8 V3 H I0 J- e
3 Z0 X5 F* L: @; T
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
, u6 C1 |% L6 M4 Q' O) V- b该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
& i1 G% i+ W; h9 o/ |& _ J6 EDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
1 R1 q! h' U6 Y& C7 S
9 V* k' p+ i3 g% R* B2 M' T7 O1 ?4 i! J0 l有如下需求
/ Q! \: n! U1 q" z! e) b5 IARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态- \- L& E0 u$ Z7 b& B" Y
( P( ~& Q, J/ j, D
目前实现过程如下:
; f! L) V+ u6 G$ C1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件. W) r& U7 Z Y) |" ~+ ]
此时DSP通道1触发,则原程序就会结束通道2的阻塞3 W2 s5 g O6 H* u) S& S
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------3 f; `. U& L! L! {8 n$ I+ g
2. 在整个查询的过程中arm一直阻塞,效率很低,: F* I- |3 _4 d* p; H
6 Z& ^( T6 ^9 I- w2 q9 [能不能有如下方式实现?3 d: ?6 f) x- p; j2 x
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
/ X6 W! j& f* S: l1 G3 Z& @" o$ @( F; j. V0 L
$ t! i& z3 n8 Y" q' j' W
1 l: n& l! E# z3 f* ?
|
|