|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
, H) D9 ]* S- u& [& i; ^ z8 ~8 U6 f# N
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
: P( s/ W7 F# B$ I3 H6 [该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
$ [$ A# F8 J6 BDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号$ T. ~8 t* {4 Y, l( a
4 a6 M: j9 r& r) Z, l% @有如下需求
, J6 k1 ^6 G4 y) _% Z% c oARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
8 {; H1 h* p$ M7 B& y4 v. U5 \# N
$ K7 b2 A2 N6 `& w& b目前实现过程如下:5 y* n4 L! ]4 U8 B
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件 p: C, j: o) J1 h) `5 c& w8 t7 `
此时DSP通道1触发,则原程序就会结束通道2的阻塞8 o6 V1 X+ |, t+ j* N) b W
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
. m5 f. Z, U3 \$ ?2. 在整个查询的过程中arm一直阻塞,效率很低,- V+ k+ q! J; x
$ w e4 c! s1 M+ K能不能有如下方式实现?, T% I6 p. f$ O n. r
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情/ t) C3 O3 h: f8 h" ~% W; J
! p3 n# z5 Z/ E# j. w. J8 h
( v0 t- m3 p9 b. V
/ q$ Y( \6 |. G. j |
|