|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 " l; ^* K l; [' ]; v$ v5 u+ @6 A
# l# j/ H: s% [4 e# ^在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题) q2 b4 h1 ]( _" m# V3 c5 N
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
- V% h3 d: j3 E0 h/ N9 L0 NDSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
) P2 c" w) i/ f
& Z* h1 L# z" P+ u" D9 h3 {有如下需求
. K o8 J% { |4 m" L q# KARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态* _( J% s' x+ K/ ?. g# @$ G
0 \/ M; t0 v. N1 y. \ y
目前实现过程如下:5 c' O; s1 c+ r+ i% v
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
' ?& x. ]/ U& T# X" x) @* v9 a此时DSP通道1触发,则原程序就会结束通道2的阻塞: z3 V r" i0 B3 n
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------" D. c% n2 I+ x! ]# `
2. 在整个查询的过程中arm一直阻塞,效率很低,! o/ M6 e9 c0 I
6 b# z1 d$ w$ y能不能有如下方式实现?
! e* B: @! G5 u/ f初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
$ N* k3 C$ @4 Q7 T- R( v
/ l& V4 ?" A4 [/ [9 \# r# C. h" r( X/ h7 _+ L
c+ @8 y1 R3 w: R5 i' O
|
|