|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑
/ X) k1 r/ T/ a( @6 w5 a8 G. a4 R( i) u1 j
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题% N! L! w1 @, n0 q; P
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用6 G( ^$ e; e. ~1 F
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号$ k9 j$ Y2 \1 o7 G/ z8 x
; M$ K @5 {. V9 v有如下需求
o3 V' i* Z C3 F, PARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态+ q2 I8 }2 ?5 e7 k% [
7 R/ l& e( i- u目前实现过程如下:
) C9 I' G8 G' [# ]) @4 a) |+ L1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
# x& k& b# R. N3 n/ W! ^7 F2 i. T& l此时DSP通道1触发,则原程序就会结束通道2的阻塞( a) N% @% z$ }" G' `
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------
3 O7 l; H9 { p2 q( |$ m& Q2. 在整个查询的过程中arm一直阻塞,效率很低,, `, ], _6 O8 ~( d# M
- R" o/ C g3 w& [1 r" U# ?
能不能有如下方式实现?
9 c) L. t- B5 G" ~4 x+ E# {$ F1 T0 v初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
4 k! [% m# f5 T+ T6 B; A
( x% I/ q- S. _9 e+ v6 U0 Z6 F X4 P' }$ @
: z! d/ q) U# o+ E |
|