嵌入式开发者社区

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

作者: daoerb    时间: 2017-6-23 17:05
标题: 关于c674x_irq_events的疑问
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
3 \( x. p+ q, |" b# e3 i7 l
! s- N: B2 q3 R# a7 O在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题: ^0 Q  `! V, S( w7 J1 e
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
: `7 _9 N' u* ^DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
4 ]8 y3 n- }" i+ z$ p
/ G/ F+ w7 n7 |% r: T有如下需求
8 @6 h6 o2 c6 S' V7 t4 SARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
& c1 I: Q0 K: x8 X/ j" D$ T' U7 S& P
# M- b' J" v6 I% f/ O目前实现过程如下:5 n( o  C$ X% M  k/ r
1.      基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
2 C. y7 k* v9 I/ X9 z) Z+ }  ]5 z此时DSP通道1触发,则原程序就会结束通道2的阻塞2 d& p0 Z) s$ A' ?( j  a
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
0 E# D5 p9 H( W1 @9 E: B5 f, t2.   在整个查询的过程中arm一直阻塞,效率很低,
( u" k- ^3 ?/ X2 p$ o
9 `7 }+ V3 ~1 _: d. I+ y) h" N  T能不能有如下方式实现?! z% K' l: y/ R/ T
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
3 J* d" c! B, X$ y$ d8 n  v" F( u4 h. G! i
3 r) ]; a( ~( E" N& F1 `  f6 R0 n1 }
% C4 [- }) C$ v. n% w' o! b

作者: teddy    时间: 2017-6-26 14:07
你好!由于c674x_irq_events把DSP TO ARM的4个中断都注册了,所以,只要有中断触发,都会上传事件到应用层。' y; F5 ^6 Q! S9 S
目前,4个事件分别是:KEY_PROG1, KEY_PROG2, KEY_PROG3, KEY_PROG4;
$ }+ h) q2 K& J& X可以在应用层通过对event的过滤进行处理。你提的建议很好,后续我们会增加事件使能开关,可以单独使用某个中断。谢谢你的建议。
作者: daoerb    时间: 2017-6-26 17:06
本帖最后由 daoerb 于 2017-6-29 09:22 编辑 2 l* r2 y) V& d) ?/ S& b& c
teddy 发表于 2017-6-26 14:07, i5 L, C7 S6 [) V
你好!由于c674x_irq_events把DSP TO ARM的4个中断都注册了,所以,只要有中断触发,都会上传事件到应用层 ...
谢谢!
% o3 H' r" e4 ^0 i  ~4 R; G0 q3 u7 x* p% {5 X" ~' j% t: O, H7 p

作者: daoerb    时间: 2017-6-28 11:08
@teddy 有没办法?




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