|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
! y, K+ I; ]9 r5 D
" `! A7 l* E7 K在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
; n' h' h" x1 [7 K" a6 e' I该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用( D0 f* p" \3 h/ u
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
5 }) Z$ |* G" q8 |) Y4 P H0 ~1 e' d) K* d5 K4 n. F
有如下需求6 z N$ w: F! d9 F$ q0 T. d; ?
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
* [$ i: A4 K/ R- I; g8 R2 I
; K6 t3 X* Q( l8 X2 i5 ~! r目前实现过程如下:
- Y E$ u# a O& G" z! ~6 Y: M1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件2 X* E+ Y3 n5 D7 Q {9 @6 d% ^: W
此时DSP通道1触发,则原程序就会结束通道2的阻塞$ e" L& R7 C% g7 D8 S% A# l; k$ q
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
8 ^% d, `& {5 M' V# @2. 在整个查询的过程中arm一直阻塞,效率很低,
0 B6 O" o1 {& g/ z' K! a& D0 g6 s, l2 L9 L" B Y, [! V% R& r
能不能有如下方式实现?
m6 M0 R. T+ m4 B/ Z3 |初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
" @) O% E7 D, E* q) Z* [9 ^9 S+ N3 l2 v) S0 O) N [! _$ W
" j# B1 m5 P, _) J2 `# T
: e5 \; F4 z" A
|
|