|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
7 b$ E r9 f8 x, Z6 {
; n; i2 R1 k1 p N. @0 T在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题! |' k3 r0 g, G `
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
C; B% I$ J* H0 sDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号* N! A, Q# `1 z: k) H$ V; K0 B8 }
% N9 t6 q, g' Z- \7 B有如下需求, v; W# L8 F' a, H
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态5 N% u3 M6 d1 m t& k9 u) b6 C
- ~* w; E! H& x% `7 q
目前实现过程如下:. K* j) U. D3 M! w- D& U
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
4 I2 a: F: Q/ o0 K7 c此时DSP通道1触发,则原程序就会结束通道2的阻塞. E1 o2 \* o8 x9 H, S
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------* Z8 f( r) U9 @8 h; X& t7 X
2. 在整个查询的过程中arm一直阻塞,效率很低,
( t7 P; n* K7 D& m! i+ \. S1 T+ z, U- F5 Q: I3 s0 O
能不能有如下方式实现?
3 p/ \( M3 U5 g: Y4 C& q% `4 [3 h初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
! ^/ Z: w! q) H) I9 p+ P8 @' f( ]% Y+ y0 l+ Q9 L7 i: l
" x8 \" M1 Y+ ]3 z5 X& U( D
) G3 ]7 p# Y( X |
|