标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突 [打印本页] 作者: flh 时间: 2015-3-3 08:31 标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突 操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。 ) n. T5 _/ ]! D* L$ A目标:AUDIO_LINE_OUT播放声音。ad采集声音。 / R8 k6 Y: y( C8 u5 q2 }) X现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?) 8 @+ i7 p @6 w% o6 a详细程序如下: 8 s* Q% s% y$ L+ ^: T9 IDSP侧 main_dsp.c( O/ [0 @2 C$ J5 p1 K: B. E- s
extern int lineOutmain(void); % h8 j. y S, `Int main(Int argc, Char* argv[]) {# p" t/ \) f, b6 [) J2 Z7 u" |
LOG_INIT(); . A4 r& Z8 Q- [7 Z1 L+ I- p Error_Block eb; ) J. x- s* c# T& F Task_Params taskParams;; J* J) W/ i2 I7 ^) F' W6 k7 L( A
9 R4 A% l5 r0 ?9 P/ v, c LOG_INFO("--> main:"); ' e/ C; r8 g0 t0 p5 c/ G, ^( M3 Y/ Q0 o' w% h3 w/ M) A
Error_init(&eb);9 ?4 ]% C. S$ L
+ L/ a7 S2 u0 f/ m9 h" }- C Task_Params_init(&taskParams); / n9 a9 m& g% P# ^( u0 Z' {, [ taskParams.instance->name = "message_loop_fun";7 ]0 K$ }" \: F5 E c% [5 e2 l/ q6 G
taskParams.arg0 = (UArg)argc;" a- W3 k7 `+ @* m$ s9 a6 L
taskParams.arg1 = (UArg)argv;7 t6 O: n) | e1 H
taskParams.stackSize = 0x1000; 6 P f3 L0 N7 _8 [! F Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */) T9 W. `0 L6 N
$ Y4 ]2 W$ M& w5 l2 T. g% m if (Error_check(&eb)) ) w D& V8 E7 N7 V
LOG_FATAL("failed to create application startup thread"); 9 c) b: O/ j, e - h( {% N( j/ B5 `. W, g2 { lineOutmain(); ; s) \3 \9 [$ B+ p Y' w& J( G BIOS_start(); ! B! X, p9 Z7 H) k {; U LOG_INFO("<-- main:"); P, i) W# f) a. y- \- y
return (0); ! T) k3 F$ H7 h3 {: X} + Z$ a+ s7 s/ K( D其中lineOutmain();是启动lineOut例程 / |, f6 x7 C- v" {) ^int lineOutmain(void)! ]/ d' `4 y9 K1 p
{ # \" S( }1 ~4 u0 ?" c! V' P unsigned int i;+ Y* K+ @) Z1 j
$ _. Z0 d' b' j$ j
PeripheralsSetUp(); 1 a6 X# q9 b+ k, \$ e3 d* G0 X& }* X5 w8 ~ }
LOG_INFO("\r\n ============Test Start===========.\r\n");# B9 E# m# ^! i4 f: H: |- G/ J
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n"); 5 t" Q) v5 e7 u8 t: _! q5 i% B2 U LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");, V' _3 M" ^2 m3 j) `: Q
9 k+ R" N0 g1 K* ^- L2 l% L; { for(i=0;i<229396/2;i++) # s+ U% r/ O7 E. a9 q { ; O) I: w7 H* w7 s1 @) z; M toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8; 8 G% t6 ~- s& r0 n } ' _* i0 _: E0 R1 Z( F) Y - ~; b: b i4 K8 l IntDSPINTCInit();3 e4 s; V) ]/ q% c2 ^( q
: L9 {2 I( Q2 Q
I2C0IntRegister(C674X_MASK_INT6); 5 g% K/ C5 n. @( v, {5 ~, e $ l9 g. Y0 w$ u) z; B* ` IntEnable(C674X_MASK_INT4);5 x5 Q2 H# _( G: j+ S* R
IntEnable(C674X_MASK_INT5); ) c. h& L) H) V1 V' q IntEnable(C674X_MASK_INT6);. l+ @- f$ J' t9 E
7 N2 B" S$ K' ` d' e IntGlobalEnable(); & M G0 x8 a' P8 z0 {/ K. p! j/ c " X0 U F$ J0 x( D0 X9 q AIC31Init(); . D f% H. q5 x. ^2 ` ToneLoopInit();; G" t' @$ S% x0 e
Start playing the tone looply ) e. O4 E, Y0 Q0 l ToneLoopStart();2 f. ~# }' m0 n. Q
0 Q, y+ D! l/ L$ f3 [
LOG_INFO("\r\n ============Test End===========.\r\n", -1); % T! x/ q2 F# W. H' e g: n0 f+ H6 @) y, u& X
}1 ?# z' N+ Z) P# l' ?8 F/ B; s
( S/ N$ k. D( b4 h) N" T. `
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。 9 h: M3 ~$ o' f. Q# O5 t7 ~ x* L9 r1 s; l$ j