|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 ! Z/ P+ {; k# ]5 c/ K1 y9 D
. e; s! I, B: x! K0 h l1 Y
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题: s& u+ Y, Q' V: u' q% G
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用! n; T- ^7 I- m1 t
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号4 O- q9 d2 ?% {
5 a" o* ?9 L% _" f有如下需求
/ ?( h1 P3 a0 PARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态- \# h+ o3 ~9 I6 n2 {* D
) [' V, L- A; V
目前实现过程如下:0 {' @8 S, l: X1 x3 s# [
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件4 v" y) Z0 C( }' @: M
此时DSP通道1触发,则原程序就会结束通道2的阻塞% D" B* v) n- \0 F0 ~
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------! s: z0 o( x' Q% V/ |
2. 在整个查询的过程中arm一直阻塞,效率很低,
( g; ~8 Q) k3 i( ~: k% d, k. r- Q% i% N, l% }, d$ T
能不能有如下方式实现?1 @1 I' M% g7 ?' ]8 z
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情# D/ w. G: X" r8 H1 `3 L$ h
7 H, u; f) v3 k% @6 q0 x% V" o- d0 E6 J3 `% T/ X0 o
+ ` X5 @1 C' o- |% v e |
|