|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
6 @5 Z- R6 y- f+ }+ g8 `) _目标:AUDIO_LINE_OUT播放声音。ad采集声音。5 Y |$ P% R: w/ {- Z4 I/ ^8 H W4 j
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
% |8 F0 a. N, ~' }) p, S2 p+ R0 f详细程序如下:0 W7 V0 v! F$ l( C
DSP侧 main_dsp.c
; U# n7 g% C( V8 b, ^! r9 s1 Yextern int lineOutmain(void);
$ \2 k- K+ x) l- P5 U3 a0 EInt main(Int argc, Char* argv[]) { t! V! Q/ a4 s% ^1 N
LOG_INIT();
( `5 w/ K0 _1 z$ V* b Error_Block eb;+ R2 m/ N! Q |1 f, w/ u/ g
Task_Params taskParams;
& R! S" p( }$ q7 N% H7 W( b
- p) b2 c% m" L( N9 x$ M1 G LOG_INFO("--> main:");( n9 y1 @9 C. H9 f3 _5 { {+ T
+ h9 R9 k) u: p( d' f& U- E v
Error_init(&eb);4 ^ V9 F, v+ Q0 d4 a7 n# O
6 t4 a% R( e7 n b* ^4 d# x
Task_Params_init(&taskParams);
1 d5 @9 R: f% o9 Z& F8 ~# ] taskParams.instance->name = "message_loop_fun";
4 x9 t8 U- h6 O9 H6 M/ x6 S taskParams.arg0 = (UArg)argc;
8 M* y. f! z. ^) p3 `4 j9 G taskParams.arg1 = (UArg)argv;7 a" E+ x' _# D6 r, h! {4 S
taskParams.stackSize = 0x1000;% g5 J- Z( Y; H6 D5 P& y: `
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
2 q* d/ }5 F* X) g, Y
7 z9 o P' p4 H if (Error_check(&eb))
. `& ?( y7 u( ~+ G! n+ \7 j LOG_FATAL("failed to create application startup thread"); 4 W3 Y2 _7 D3 \, e+ c
5 g/ x6 e* K1 A3 |( X6 }
lineOutmain();
* Q- V2 F& Q& r! B+ D BIOS_start();# ~" o; Z7 E/ L7 X' E
LOG_INFO("<-- main:");& K A5 E/ w- f; q3 B
return (0);: F1 e0 X) z2 v" u# Z/ M) m
}6 L; X$ l3 n$ ~- s3 _9 ~+ S
其中lineOutmain();是启动lineOut例程8 ?& Z9 ]1 N. d( p: }" d, U
int lineOutmain(void)' T+ p& L. C5 K' |, s' q: L% k
{- r5 n' ]4 [2 I
unsigned int i;
0 R. G: l* e Y; b0 _8 o
L; f9 X: g7 J1 |0 Z$ m2 }8 ] PeripheralsSetUp();5 k% Q. m6 ~& I! q
6 Q! o6 T: a/ E2 _) r" I2 C$ Q |
LOG_INFO("\r\n ============Test Start===========.\r\n");* z' B7 h4 P3 }; B) |. N8 p
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
4 c1 }' l9 c o8 T. r/ } LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");# ?8 I0 k5 e+ ]9 _4 O7 u* H/ v
. e1 d0 L* Z' X( v+ n4 F
for(i=0;i<229396/2;i++); p+ v3 Y p, P( e) [, \
{2 j$ y8 q0 n, a
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;3 S% ?$ T* p$ H0 Q1 \
}
$ K, H9 Z4 P: }; g4 \7 }* P# ~2 w9 }% ~7 t6 e3 k7 K# [
IntDSPINTCInit();0 R, ?. x3 f% x& B! b3 |1 [
, G+ ~# X1 T; M1 _ I2C0IntRegister(C674X_MASK_INT6);
+ J" x5 z# G) ~" ]. u& B( @9 J/ Q0 s, \. y: j. c2 S2 S% X
IntEnable(C674X_MASK_INT4);+ w' d1 p/ d4 b5 R+ }% f
IntEnable(C674X_MASK_INT5);
* r! t4 I- S; s$ d/ E: G IntEnable(C674X_MASK_INT6);& v3 D' J2 Q) @* n, T
7 o- l' H0 j( \; f+ F) D IntGlobalEnable();& P" F7 g3 u9 P/ Z: Y9 m& M4 K
; t1 u6 R2 [# }$ ~; c }
AIC31Init();
# @# R2 E* x3 ^7 z. I8 H ToneLoopInit();1 w W& D; k. u) D1 T& i3 }8 j
Start playing the tone looply b2 f" q5 f! R) r, K
ToneLoopStart();8 Y8 }& }1 V. G; b! |
8 }5 {, V. H# {1 D' r( L
LOG_INFO("\r\n ============Test End===========.\r\n", -1);+ Y+ f: V" T2 K+ B
% s$ }- a# c x}
- r: f* S3 _* P2 d# [# ]# Z q- [' k
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。8 n' g2 h7 |* ~5 ^" F! }* k" N; ]
5 F3 f/ V# n! m1 b% J+ K4 Z
) L9 q4 g y$ J2 ~
" @; D; t9 X4 M
* q# c& p5 G) M& |# F+ ?0 \
1 v4 l2 w9 a9 ~% v$ b1 l- A- L9 h! \, K5 B
|
|