|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
+ b/ |3 ]' Z4 X' H" Y2 v, d5 Q# f- n( c5 h4 o
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题& M2 Q) [7 z5 J+ ^0 C$ V
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
8 p; D( R ]9 c; z( T6 _DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
4 C3 e4 z8 V5 d! l) W+ t; E. u- f/ A% p2 X5 F+ Y
有如下需求
6 L! h4 [* W: ?! y' }: i" eARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态0 Q+ y* d2 W0 a& t+ T
& p( _+ w. y/ H# H5 ?0 `0 i! i目前实现过程如下:
4 |) o6 R' C# C2 Y4 Q; O( G2 l1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件- ?% Q! |. q: ^/ x
此时DSP通道1触发,则原程序就会结束通道2的阻塞
2 G% `( o+ C8 o9 R4 A% M5 @+ z$ w. H然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------4 A/ z. [7 j7 ^/ H7 M$ v/ o$ a" i
2. 在整个查询的过程中arm一直阻塞,效率很低,
! b; M/ D0 x7 ^
P k5 r1 D3 H$ V; i( K7 F0 m能不能有如下方式实现?
# f/ b0 o1 {/ ^; `6 c' W初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情. ]: t0 ?" h, b3 U- f: i$ {
8 U+ T3 y/ Y. m- o6 l+ z+ s9 O: h. G7 Z, }& Q: c2 y
4 a" n2 @! n- ]& B |
|