|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
& I" x+ r' w! h0 M* B目标:AUDIO_LINE_OUT播放声音。ad采集声音。1 q, P( ?9 d( _, z( ^5 n% ]9 S. t
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)8 z! \- h Q' B
详细程序如下:
+ E. N' _: m$ d! J! ~8 Z! s! a9 |DSP侧 main_dsp.c8 X% N/ ]# O, u0 `! |2 w) `
extern int lineOutmain(void);8 K6 N O& c$ N' Q
Int main(Int argc, Char* argv[]) {3 o% F9 W3 Y$ t- g L' z1 Z
LOG_INIT();3 r( Y( O. M! p3 G5 y3 _
Error_Block eb;4 n; r) c& d% }3 }
Task_Params taskParams;% }- o( K7 i' {, R9 c3 P; Z
% n( r u! Q) W
LOG_INFO("--> main:");
9 U. v2 `# q8 S5 H5 v/ b. N& T; d& g2 z% |0 r
Error_init(&eb);1 M. `* ^/ u0 C0 [
% Y: j$ Y2 s5 E- a
Task_Params_init(&taskParams);: q. A- L- e3 n8 M$ r% u& j0 U7 _
taskParams.instance->name = "message_loop_fun";5 w; y. I- Q! |: M! H2 q0 N3 a) \
taskParams.arg0 = (UArg)argc;
( u, u4 n# s# L taskParams.arg1 = (UArg)argv;6 H- S; P) r# H
taskParams.stackSize = 0x1000;+ C( ?# v, D& O
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */( ~1 y# K# U p
8 O* e2 L5 \! g: i+ q6 ^$ j2 Q if (Error_check(&eb))
2 c1 A( A- O2 i$ a- R8 Q LOG_FATAL("failed to create application startup thread");
4 ~9 P B3 J0 {/ T- P
& n( X6 g3 n4 E, N6 b. C# Q lineOutmain();
" E* i7 z0 w% S0 E" t BIOS_start();
0 I* W' }, l+ i' n* Y, I. `) M LOG_INFO("<-- main:");
- s" n3 G# M6 n! J5 R return (0);1 E; \. @6 p6 l- ?4 h! z1 z3 |
}
7 W6 a2 J% {$ L# y( t: X其中lineOutmain();是启动lineOut例程 q7 \* C& F) g) M8 |
int lineOutmain(void)
- A9 @5 ^" |1 y- {& L8 Q: @{6 s0 U4 t1 R; P2 h
unsigned int i;9 C# k% h1 M6 f. ~4 N' O
3 u4 @, N- z. L PeripheralsSetUp();: L# I7 x4 t) f) B
" D* t1 @. j& M. p/ p2 J0 i( Z LOG_INFO("\r\n ============Test Start===========.\r\n");7 [) @ F0 I. J* [( i
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");7 k+ k9 n9 ^( }2 f6 W4 m2 h
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");4 ?: L$ z' d* O' l
3 Y* {/ c% o! |- P6 F. r
for(i=0;i<229396/2;i++)
) z& d+ @6 l# H {
0 ]& w9 j& |7 F9 d. ~/ r2 e toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;' ?6 U- b$ A0 \( |
}
7 Z6 D* }0 M3 n2 A9 l' G/ I) l6 B6 m+ A0 k
IntDSPINTCInit();
; R% K' i+ S. ? j$ `
2 j r+ E6 z# P3 T1 L- { I2C0IntRegister(C674X_MASK_INT6);. _/ n. I- h, E
+ a0 ^; q+ F. R9 N7 {
IntEnable(C674X_MASK_INT4);/ E ?0 S, G7 B( K( ~: n' x
IntEnable(C674X_MASK_INT5);) b3 n7 b( {0 ^( {. c+ x
IntEnable(C674X_MASK_INT6);
. G |% i3 F1 ~* q) e% P: k# C% f, x5 P9 |* C6 m
IntGlobalEnable();
" H) M x+ e, V5 E# R
5 J9 o! T% j- q3 b AIC31Init();
; \# X' J- Z1 c( L4 n ToneLoopInit();
( X8 c* ?5 ?8 k9 q2 ]: l Start playing the tone looply
. k) ^) _2 k; o1 \4 J+ q ToneLoopStart();
/ J0 a9 H! y, |3 D- p1 ~' N1 M0 Y( V/ W
! F3 \3 o7 J/ X: U7 z2 l LOG_INFO("\r\n ============Test End===========.\r\n", -1);
! i% ]" B/ R1 |7 k4 p
( s3 H3 H' Q+ [: N N" x}
3 l6 y. u. S0 M6 G5 q+ U# F/ V% a4 l/ g; T2 n
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。0 f3 W9 u% h0 b
& A% F e) y8 t$ L: w: J) o+ ~6 P3 E3 D# o& f
; r( K+ w7 V/ ?
1 G, c c, b. L* L! L8 f% t
8 L- \* Y @* z5 E3 N! V+ z% E; X! F: U: H" R+ e* ^8 A
|
|