|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
$ g% D* H" ^! e% a* h& \/ N. i- S" M9 g2 U) F2 k' B4 T5 ]
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题+ y+ G0 L4 e9 c& M' M0 r
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
8 r! t8 a3 k* B* p/ UDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号) z+ \/ b1 l- D: x- @) k- b
2 [4 G A+ v1 \9 l# ]/ e
有如下需求
; B6 f* n- H7 e+ q2 ~: r& FARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
( j' n2 c& h) e5 ~
$ O/ G! Y; a* _1 o5 X% C/ Q目前实现过程如下:- U: N4 ~1 ~2 P
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
5 a* r2 c4 E L3 O此时DSP通道1触发,则原程序就会结束通道2的阻塞
) l( F) P, u) C5 j然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
5 O+ M4 c1 g# Y1 u% B, V$ E2. 在整个查询的过程中arm一直阻塞,效率很低,
0 u8 c; i( t4 V* q/ \6 B
& L+ {4 W1 ]) ~7 X* X能不能有如下方式实现?
9 L, U! _, R0 z+ P9 a0 f初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
3 R( H; S( h6 E) E/ t! K8 Z* t+ d, x; K# G& k9 s8 }! t( H
* [2 k4 C7 D. E; p
5 E) X# \+ K* c) U4 o$ e! z/ \
|
|