嵌入式开发者社区

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

作者: daoerb    时间: 2017-6-23 17:05
标题: 关于c674x_irq_events的疑问
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
( O, p! ~7 V% a. Y
4 p" C/ K1 M, g  H在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
4 O4 h1 k, a+ l1 J2 ?# w该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用0 C" }" f7 e$ Q4 v7 c
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号: l" w4 l1 v1 ]" U. c0 d: w
$ F% b( `/ M! ?. }2 ?% ^; E
有如下需求& u5 A$ {3 ^  @. X  m5 O. E
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态2 M8 p0 y0 c* V2 t/ s/ y; @: |4 _

( B# u+ W4 O* B1 d, C$ j( i) N目前实现过程如下:0 M9 _/ U3 H7 _0 D  _; ^
1.      基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件1 }3 T8 [9 ^4 k' c4 \
此时DSP通道1触发,则原程序就会结束通道2的阻塞4 h+ r7 _% f7 J5 W, ^6 H/ }* Y9 Y
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------0 i7 D8 t( O" S$ T, F
2.   在整个查询的过程中arm一直阻塞,效率很低,
1 e: J, C) o: E) p  W* n
0 X. t  ~! o. {: h能不能有如下方式实现?9 j4 F3 I1 p) @5 L8 o
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
5 _9 ^; f% N* O' S. R4 |! B$ x* E
% W6 Y/ e# z; B3 I' H3 T) t' _

! p( h/ r) `4 l# ~
作者: teddy    时间: 2017-6-26 14:07
你好!由于c674x_irq_events把DSP TO ARM的4个中断都注册了,所以,只要有中断触发,都会上传事件到应用层。  O+ K; Q9 _; b
目前,4个事件分别是:KEY_PROG1, KEY_PROG2, KEY_PROG3, KEY_PROG4;/ }* B" n2 {' X5 ~4 d6 K
可以在应用层通过对event的过滤进行处理。你提的建议很好,后续我们会增加事件使能开关,可以单独使用某个中断。谢谢你的建议。
作者: daoerb    时间: 2017-6-26 17:06
本帖最后由 daoerb 于 2017-6-29 09:22 编辑
3 H1 C$ e4 N1 u) N
teddy 发表于 2017-6-26 14:07, W6 v$ U% ]& D  [
你好!由于c674x_irq_events把DSP TO ARM的4个中断都注册了,所以,只要有中断触发,都会上传事件到应用层 ...
谢谢!' H" A7 Q% _+ q2 Y) P! \' P

* f- m# l, k6 Y  t( N: c- ]5 X
作者: daoerb    时间: 2017-6-28 11:08
@teddy 有没办法?




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