嵌入式开发者社区

标题: 关于c674x_irq_events的疑问 [打印本页]

作者: daoerb    时间: 2017-6-23 17:05
标题: 关于c674x_irq_events的疑问
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 1 P: W8 `  X1 Z0 `. I

* P: T( k. y9 W2 h在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
. h; g/ x% Q: H$ i' |该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
, r' J$ r' I" ?4 s* \DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号6 J/ j( y. b  M9 E
; ?5 o7 N! S7 Q# o8 F
有如下需求
& n) f" W& N2 y: k' q& N+ {1 OARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
: L, E" s; H9 r" k- U# m* e" @  `$ e0 M) p
目前实现过程如下:
) R1 ~3 N7 e+ Q1.      基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件# B6 J0 d8 e/ C) R% Q  c5 m! ^
此时DSP通道1触发,则原程序就会结束通道2的阻塞. y2 c3 X- t& z/ T2 ^6 y' T  z& c5 b
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------1 w5 w$ a- A6 Q) H
2.   在整个查询的过程中arm一直阻塞,效率很低,1 E9 p5 b7 o6 e- d$ ^( I

1 T4 q/ s! Q! b* b/ g9 e# {能不能有如下方式实现?
& X, L2 c- X# N$ @2 }. i$ r初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
/ f8 r) g0 H9 _! u: i. n% ^7 ^1 b3 m% u' M. W
5 _( W2 j5 P& s. w+ M

% X9 N' V. v# t6 M2 H6 [5 o
作者: teddy    时间: 2017-6-26 14:07
你好!由于c674x_irq_events把DSP TO ARM的4个中断都注册了,所以,只要有中断触发,都会上传事件到应用层。
" E; n3 h/ J, O' T目前,4个事件分别是:KEY_PROG1, KEY_PROG2, KEY_PROG3, KEY_PROG4;( [* h0 V5 w/ C9 w7 K7 r+ ~2 d  E
可以在应用层通过对event的过滤进行处理。你提的建议很好,后续我们会增加事件使能开关,可以单独使用某个中断。谢谢你的建议。
作者: daoerb    时间: 2017-6-26 17:06
本帖最后由 daoerb 于 2017-6-29 09:22 编辑 ) n5 i. Q- m) ]
teddy 发表于 2017-6-26 14:07
1 W7 h% q5 o2 h: K你好!由于c674x_irq_events把DSP TO ARM的4个中断都注册了,所以,只要有中断触发,都会上传事件到应用层 ...
谢谢!, B1 @, V2 V0 E! J8 Q

7 N5 Q- ^4 T1 \# L* G
作者: daoerb    时间: 2017-6-28 11:08
@teddy 有没办法?




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4