|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
0 m3 R" W5 J" I5 u, h/ g& S' w# j5 c" Y$ ?& [
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题# v3 J$ ^: n# w, H
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
" ?2 p2 y' C" r! T" _! KDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
+ d, k6 q- V7 q! R
; [9 K/ F H$ @ V, ] G% H有如下需求& ]' C) U- ^ V5 E p
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
' v( c- _0 H8 K3 J/ w: l
5 Q0 E& l. {* j! ]& [$ [目前实现过程如下:: o5 Z2 a9 h9 T) u- J
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
( z( }6 F( u' h& K& Y$ Q9 F* I此时DSP通道1触发,则原程序就会结束通道2的阻塞
7 X# p6 D) p9 ]! D& T$ M* q+ @5 I- l# ]然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------" G5 _" E. @3 z( n
2. 在整个查询的过程中arm一直阻塞,效率很低,6 C) B. R; [; g2 x- Q" Q/ K
6 l/ D0 f9 W4 q2 J9 t9 F2 _
能不能有如下方式实现?
+ Z1 `8 h6 i# X- H4 m$ h初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
3 ` A+ X! r$ d# M1 T( F) \' M2 v& d9 o. s8 ]. I8 X
+ ~! `" i! N8 B w7 J
! @' a% d. }$ a1 f) D% R, o) B1 k |
|