|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 k- C4 c7 K6 |2 i% k
* G0 T) ]; t* E, v5 v" `/ H在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题8 J% @8 N7 R# t$ v* A9 g
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
. P) O* v: o* H& |& H2 [" T+ U( gDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号; d0 L4 @. D, a% O, u
+ m% S: h* m* M: T有如下需求
- v' s/ ]5 E x& `0 _4 ]7 F, ?ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态3 m. ~4 _* v" |/ s/ b" }. ~
# d; A* e! @" X* J7 r+ d) J9 D目前实现过程如下:& l0 z# O) R" P; u
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件, `2 k* Z- P* X0 K, u$ y1 Q
此时DSP通道1触发,则原程序就会结束通道2的阻塞
|8 y& K) o0 Y然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------9 B4 }. X1 a6 ^7 L" n8 `2 k6 j
2. 在整个查询的过程中arm一直阻塞,效率很低,
! R; B6 D6 j9 U9 j1 t# g. F1 q) M. f* `2 {! x" S) T; z
能不能有如下方式实现?5 ?3 G+ e1 r( c6 n8 B+ t
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
# a S' P, R3 H3 ~( N: r0 K' O1 O C6 V+ ^( r) t
3 _7 E7 @- V# K2 K
1 h7 U% L+ C9 \/ x! F3 ^ |
|