|
|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 8 o& O( v+ ~' i
4 s( E! R2 L! Q g5 M
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题+ f! U& R8 J; m/ f5 y
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用
6 z/ ^+ g0 k$ V; ]7 [$ J: ?DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号5 D; z1 w8 P( b
) `7 E1 U% g. ]+ v+ y- @* k有如下需求9 F0 _* q4 ` |3 l1 C
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态1 A6 ?! @' l& m3 D4 _3 \
; y/ u! j; _. p8 ], d% Q/ z
目前实现过程如下:/ W- k. b- h0 l( T. | _2 B) }
1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件. I7 d3 ?' e2 n* P; h/ F$ A
此时DSP通道1触发,则原程序就会结束通道2的阻塞2 i* r6 Z. A: G8 i7 {7 ^, @
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------( C; v7 C) u" M4 n3 N7 T- D
2. 在整个查询的过程中arm一直阻塞,效率很低,
' `; h% A0 e8 j# u. F9 J3 v( Z( ~5 [
: a% ?1 q: Z9 i# ~) b能不能有如下方式实现?6 v- B) ~* S! T
初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
- \ J+ [ t8 ~
( G+ A, ~# `# P) Y$ r c# \4 o; N( S7 H. v/ r
! o/ C$ X' l, F* O& t# Q) x1 C N
|
|