|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 $ J r. n0 z# ]. }# Y5 b
- h5 Z2 N; M5 J7 f) h; g# i8 A在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题" ~& C7 g' _3 V U. u
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
& Y$ ?$ l; b/ [* B1 d- m2 oDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号2 F- u* V+ K% m) m+ x1 p. Y
" X t5 d& j1 @4 E* p' z9 V, G" Q有如下需求
/ | O! @% @9 j3 n* t+ h7 ZARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
2 [, I: B# b2 r. C8 j* G5 ?5 V% t
3 R& {0 T0 `/ x: {1 J" B! e/ k5 G目前实现过程如下:* P7 R# [8 l; k
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件5 N+ K. a8 s: Y, P& O' q4 F
此时DSP通道1触发,则原程序就会结束通道2的阻塞
7 V n0 v/ _4 m然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------& U% d6 X; Z5 a1 t
2. 在整个查询的过程中arm一直阻塞,效率很低,
X, |1 v3 @% n9 r: {# u( d/ y$ J+ E' \4 j' q& e* h4 I4 J+ I
能不能有如下方式实现?0 u$ P& y0 `% t3 ?' e9 a: e% f. V
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情5 b2 t! u# g2 A' ~. b
9 R2 ?. a" J6 F8 l% R" }
1 Z3 [% z: I( g2 f* c( Q6 l! f5 A( d7 o6 w
|
|