|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 5 h2 N9 n% K& l5 g
7 \0 g6 L3 m4 D5 S6 A在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题% ~* c3 y& M0 g
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用* L0 n4 Z1 _ z1 Y L- `+ Y; A
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号3 O+ I- D! o6 z9 h+ ]
3 {, \4 L: O7 H. j4 _% ^8 L5 v. C0 g
有如下需求8 R. ?9 T! ^ m, m2 ~! p
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态' F4 w5 B8 O* ^+ h' A/ ~# k3 Y
4 p5 B8 w) C$ w- {1 p( ^ S; k目前实现过程如下:5 b4 x$ S. m5 U. D8 k9 `0 _6 `
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件7 V7 _1 K2 k7 g* A2 S* m0 L
此时DSP通道1触发,则原程序就会结束通道2的阻塞
; V/ ]+ \4 [& n% R然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------! W) T9 _( }6 T P
2. 在整个查询的过程中arm一直阻塞,效率很低,
/ W- Q8 K3 X+ c% V3 t3 P9 {/ }+ r6 A, J/ Z% e/ E
能不能有如下方式实现?- g+ m: O- h/ \5 X
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
$ L0 h8 H, ^/ R5 ?: i
% [. y2 e! k" p8 n% [) l. p# ]" J; X. S3 l9 @
1 a& v; L2 Z. j& t+ [2 l- @ |
|