|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
- S- E4 J% F2 _( ?8 B; m1 v9 o& d5 |2 R6 S8 z* v0 R
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题3 Y8 d' j" l: | `
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用6 U: n# K% E9 Y$ c1 C3 l1 J
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号* [% h! {( }# w- t( Q
/ l- s3 p# _& q! D+ Y- V2 h
有如下需求& h" o) {/ ]( \5 v5 p. S
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态& z* t8 E; y' g& O; Q
+ M2 ~* c t! n7 S$ Z目前实现过程如下:
4 Q7 P8 ?& f: T( U4 C1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件$ S; A6 t0 x# Y2 ~
此时DSP通道1触发,则原程序就会结束通道2的阻塞
8 A" Z( R# N% ]1 t3 Z然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------7 n) `) \& @" R2 R/ t2 {" b7 S
2. 在整个查询的过程中arm一直阻塞,效率很低,. C# g. Z* m% W7 r. I. Z
6 P: b& ^" g! G/ n1 z; W% Q
能不能有如下方式实现?
3 m- x+ b/ X- n, _8 J4 Q初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
' [, X/ N' A) i& Y, F1 E# p4 o! C$ D' s' K$ c/ z" n, [% u. D6 |$ {
0 f ]1 o0 P" a8 z' A# k. y0 G6 p
C/ k: \7 f }
|
|