|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 1 ]. r' Q& n/ C8 L+ f
( q$ B% X% h2 J在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题
8 _7 J' Y$ J" Q2 T' h5 r该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
+ g. a c+ _% x) f5 f3 s" JDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号3 h; R0 q4 U7 p# ?
8 H1 ^( \. r0 Q( f) S7 |1 ^
有如下需求
/ r) B2 T! z+ W+ ^2 n7 `ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
& H- D/ B7 U9 F8 k1 Q7 f! E
5 D& v1 C- j# n3 g j目前实现过程如下:# h5 i, w+ C% Q# {5 P+ U8 E$ B
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
" g2 @& R' Q0 g" j/ S% W此时DSP通道1触发,则原程序就会结束通道2的阻塞
/ E, e( t* a+ e2 ?) t; j9 r然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
7 c4 |# I- l3 ?, }" b- m2. 在整个查询的过程中arm一直阻塞,效率很低,4 n; t( O7 {% Y9 J8 b" W
# Q* v& V' U$ a- L. D- j
能不能有如下方式实现?- g9 i8 `! @" h2 l
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
$ g# [# ^& R% L' J0 e! o9 A' P* y4 [# y& h
+ B( Q1 ]3 {1 q' y% r4 W% G: ~' r, K9 }! q1 b0 g$ U
|
|