|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 - }: N& v; V/ ?8 l. ?( U
$ k; _4 m# X/ W在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题6 J. C' z5 a' s1 L
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
2 K" O3 w, Q& P9 ~" SDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号$ M3 Y0 ^5 ~6 x! f
, j4 M( D% U% [7 ~有如下需求! v, T1 A& B; u( t4 h
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态5 j s4 M- e- B7 ]0 X x/ b
' E% y4 N0 O8 E4 I2 L3 B' r# a目前实现过程如下:- Q% }7 ~% m0 I
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
5 {! R+ d# K! Y6 l, E, a此时DSP通道1触发,则原程序就会结束通道2的阻塞 d1 w3 r6 d& Q
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
0 p2 V& Q4 F; C' ?% [7 b! D2. 在整个查询的过程中arm一直阻塞,效率很低,
0 y2 C! {4 V# Z! p; B$ m6 H
4 F9 ]+ l; E3 T. C能不能有如下方式实现?
: C' |! Z+ f! r- t9 `$ v初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情 m. T5 R$ ?: \5 m2 A% c
9 k+ q" j, E5 [3 C" m4 E# x
6 W# m4 O m4 {, R
2 O; v1 G7 n: s' P; ~ |
|