|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
6 r" A* [) O' j3 Z- |6 E/ M' F8 a& [, @) o, c/ V9 U
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题3 e) \. N3 \( r; [" J# O
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用0 W( F, O( k6 G6 ^
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号/ j7 C0 E* D* _; y' l
* v) ]1 J8 H: C# G有如下需求: u- a: H% p# o$ t( j2 B! b; Z
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
8 e u; g" Z5 c6 P
0 |5 g; G5 p9 i& P/ D" K目前实现过程如下:, l$ q9 y/ l% w2 Y( x5 i; R
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
* L' y* k5 ~0 _: K6 D0 L0 ~' B此时DSP通道1触发,则原程序就会结束通道2的阻塞* @) T' O2 g0 c' f* m, v4 L9 \
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
, n; D; v J u2. 在整个查询的过程中arm一直阻塞,效率很低,
& E/ w9 A, M; G6 R. Q1 X7 n# d/ K: T4 t
能不能有如下方式实现?& @+ j& k6 U* p \9 L6 U! R
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情' L2 L) q3 F# f8 d" L& F5 [6 O
6 n/ U8 j t% n& P8 ^4 o
; Q" x0 ~; Q( C1 H- _2 f
4 m; {& K6 G' o! {- y+ \4 s |
|