|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
( f$ w2 W' s* b% S
( b8 o2 O1 l9 ]. c8 E在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
% j) ?3 }* O7 R) ]! W7 F, T; ?该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
, r3 K# t* z+ I2 zDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号) x. P. }9 f3 d9 L
! w' x7 B3 R; I5 n7 K9 R' n" ~$ d
有如下需求
( n; \0 E0 d0 F3 p1 H; N" A0 K0 g* R+ aARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态* Z2 F; Q! k# B" {( E G3 f
3 g! |( U% Y2 ]
目前实现过程如下:" P! q, Q/ p/ {+ U8 }' n% ?
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
6 p5 _$ F: F/ G8 Q7 j( H2 b* X8 w \9 R; ]此时DSP通道1触发,则原程序就会结束通道2的阻塞; g/ b" Q9 R4 ~1 C3 _. o7 w/ x) Q0 C
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
: J, W; J+ g/ I& _. x2. 在整个查询的过程中arm一直阻塞,效率很低," Q% J: q2 G" z9 D! ]
, n9 n* s3 E% M# r! n$ _/ ?( T
能不能有如下方式实现?
4 V- m2 r2 D$ Y$ P初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
( A& ?$ f2 A2 C% `# i
/ ?7 |# Q; {3 A' W& t; z" C5 j& V, D
% t e( O$ _; \7 W' [5 m: s |
|