|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
( Q, l, P4 t: Q5 b1 M) y! C0 F( x
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
$ Q- b( ?0 x1 D9 a8 D- N该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
9 v/ }8 d) a7 J4 a7 N- ZDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号/ m/ o' |4 b( W. o5 ~1 B
6 w1 @. N& ?0 s# p W/ d+ ]8 R2 B有如下需求
- ?* v4 ^, \: ]ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
9 _0 ^( Y r7 ~
3 j) T. a& Q$ ~+ ^- y* U( i+ O/ H8 \目前实现过程如下:
% t! O# n$ Q/ @* {1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件" W9 c9 o) s; r1 J u/ Q4 H
此时DSP通道1触发,则原程序就会结束通道2的阻塞: R; M; m8 R6 M: j
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------4 Q" W* ]: ~0 W% C! f
2. 在整个查询的过程中arm一直阻塞,效率很低,; b5 [. {$ ^) n* n
7 F$ b- {4 Q$ r% _" b" g6 r能不能有如下方式实现?
; y) _* i0 w) C1 ]9 V6 f初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
7 v& \. _' a$ j# J
8 f) U, h2 ] K) _9 D; ?) F' t4 U7 D2 v( n5 u( t
! L. l' y7 K% m% K) D8 Z
|
|