|
本帖最后由 daoerb 于 2017-6-23 17:07 编辑 3 |* N5 A+ B8 s9 ?+ J
9 F6 \8 R3 w; z! K- k" ]
在使用IPC双核开发的过程中,使用c674x_irq_events模块,该模块使用有如下问题$ G v7 i* e' I) S
该模块使用函数select进行阻塞调用,等待DSP触发ARM 然后结束调用/ f9 k: E4 O x7 z1 y; c7 e
DSP通过任一通道触发ARM,ARM都将解除阻塞,为了继续监控,ARM必须重新发起阻塞,不然没法接收下一组DSP触发的信号
& B% h. r9 R. l8 o! Z6 |; E" v; ]3 f( g0 Q; ~! ?
有如下需求- m# a) N- G- q
ARM等待指定的通道1或2触发,返回通道2触发状态 通道1触发状态
. |. D4 p9 h4 e2 a$ S. n. P! `( t% r7 a8 L" O2 W2 J
目前实现过程如下:
& w5 f# S- p1 v2 W1. 基于原有c674x_irq_events模块实现,如果ARM需要阻塞等待通道2的事件
& y" n& I/ K7 C1 f此时DSP通道1触发,则原程序就会结束通道2的阻塞/ w) J1 N5 q& `9 z4 t! F+ J6 ~
然后查询触发的通道是不是通道2,然后重新阻塞通道2---------------------------------------------------------- S3 V n t! R9 O
2. 在整个查询的过程中arm一直阻塞,效率很低,
/ z. I& {# q+ `
$ {% u4 y# s+ F2 b& Z8 j能不能有如下方式实现?
! R: U5 H- A& [* W3 w初始化模块调用后以后相当于有一个监控任务一直在运行,每个周期查询通道1和通道2是否有事件发生,有事件发生,处理事件,没有不处理,ARM做别的事情
% R3 ^8 Q$ I: {5 m/ Q$ S7 _$ K" c& E- [3 n s. O& L
' q2 ~# y7 n# i6 d0 D9 Q W; Y: i8 _* ?8 K
|
|