|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
7 _5 d: y7 n5 ^) ?9 B U. G9 `; M+ ~+ y5 F
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题: q" k! H2 V' P) P) H# b
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
( F$ j) W9 F) a+ J1 ?# gDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号# l U, ?/ h; m6 ~( _* X" m
1 T0 O7 T; _- C3 ?" L' y. X+ m# ]
有如下需求
+ I2 I" r2 }+ @- d3 n9 xARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
2 h! q- c% D2 q: Z7 A
" r) ^, ?1 h) ]" N- @0 _" `% Q目前实现过程如下:" b5 R2 p6 e" [1 W( k: ]* j# c5 j
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
% m) `, W' s4 E: Q% b此时DSP通道1触发,则原程序就会结束通道2的阻塞; w: Q$ d7 T4 K+ Q7 K- O# z2 c
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
5 {0 P$ G) _; T, u. M' W3 X! ~2. 在整个查询的过程中arm一直阻塞,效率很低,
: j5 V0 [9 u- u) h: ?0 u
$ @5 y$ Q$ x. d/ g能不能有如下方式实现?
4 w3 I i' C& n. t初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情2 r5 t# r5 e2 R, D2 g
2 z+ G- M5 v" c6 `" S
- }" T9 z0 l7 Y1 |. B' O) V) f7 ?+ D5 b. L/ q: {4 d( f/ E8 X
|
|