|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
( F0 T' D/ o3 r; y4 f目标:AUDIO_LINE_OUT播放声音。ad采集声音。% r6 x* j4 W2 r2 ?+ @) u" S
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?): `% X/ r( E. B" w B
详细程序如下:& T5 O3 G. F3 o* X+ E* ^
DSP侧 main_dsp.c$ z* d+ F" L* x, r( H- ~
extern int lineOutmain(void);
# ~8 U+ I4 V3 A* [. u8 CInt main(Int argc, Char* argv[]) { j. z! U5 f4 S% s* _
LOG_INIT();7 r9 d d5 z3 H+ L! ]/ W1 m- [
Error_Block eb;2 b7 X- o7 F- v# E0 l, |% o( y6 {
Task_Params taskParams;
; d4 U( u* D; G' B) U; N: M. D5 g6 t+ `$ v7 M
LOG_INFO("--> main:");
% y" G6 p' o6 t% W# Q: S9 o8 G5 b1 X" J6 x$ {/ ]7 i5 C3 N
Error_init(&eb);$ [% \- `* m( q) @; l& T
# m8 h c9 Y) g7 t1 K0 ? l
Task_Params_init(&taskParams);2 x5 P% k/ }( Z1 e) L
taskParams.instance->name = "message_loop_fun";$ P3 r) S* v6 } }0 W
taskParams.arg0 = (UArg)argc;) d) x' [- k3 d( N& B
taskParams.arg1 = (UArg)argv;, C) ^ ?: _5 L# g
taskParams.stackSize = 0x1000;
% t* ^8 R4 }, ?, d" F' e, W Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
k* p- o6 V5 c1 r0 Y3 W$ w1 o, p" ^
if (Error_check(&eb))
$ l8 x# e( S, j* X, `1 t LOG_FATAL("failed to create application startup thread");
+ T$ v3 w: ], \3 ]! ]9 j
9 D4 h' f* `' b* F6 b# s& t$ z lineOutmain();, R+ g2 @3 |; S1 K5 b4 a) g
BIOS_start();8 A* H T8 r3 U m5 v% u7 v/ m
LOG_INFO("<-- main:");# E* p. a% U! }! t8 T6 b x! S# Z+ N; q+ s
return (0);: S: K; ^: J% W7 {; a9 Q
}
3 i Q' K; M8 h0 o. r* R其中lineOutmain();是启动lineOut例程8 g( @- m: q L4 J" s6 Q
int lineOutmain(void)
5 k( r0 W) T' F5 |4 `{1 B5 n; u) g6 l+ y2 r9 R
unsigned int i;
, z) j" T! C: Z6 P Y
/ R; _2 ]7 ^7 W" F" ?( C PeripheralsSetUp();* p. D4 ~1 ^# K/ D3 a
* R) e* v3 y+ {, }* L+ q LOG_INFO("\r\n ============Test Start===========.\r\n");
4 r$ k/ x' I: m6 v A( } LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");. m" z, h: g( m+ s* @" n
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
8 p. ?, l O% M1 G2 J/ Q1 o; t7 X. a2 k& {$ g7 C
for(i=0;i<229396/2;i++)5 V; E- [: J$ v; |7 q) k" Z" Z c5 T
{
7 w. s ]5 Z) ~7 E toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;( d0 v: a8 Z3 | ~$ g
}6 r! ]6 U l7 v$ o |
" J! b) Z! y4 X5 { o) B/ L3 E+ y. g ] IntDSPINTCInit();# L# k( K. K6 T- c$ i
\% H G( Q) C! X. _+ k
I2C0IntRegister(C674X_MASK_INT6);
0 H6 Z% Q l6 w- r8 o6 |- T" q( h0 `, n# S- Z4 N* h6 R# k% l& T
IntEnable(C674X_MASK_INT4);
) Y/ I. d( e. y Z! A+ u IntEnable(C674X_MASK_INT5);: m7 p9 ~; Q0 w8 e
IntEnable(C674X_MASK_INT6);
1 V* _/ p# ?7 i, K
) z" c! |4 ?5 t$ P# ?2 a1 J IntGlobalEnable();
0 }* V0 s# Z& l* y" R) w! X
5 s6 `$ I/ b* M6 m: Y4 Z AIC31Init();6 D l0 q9 j/ l8 E7 J8 k( M+ r
ToneLoopInit();
* L# n6 T; x7 L3 N9 b Start playing the tone looply. m; Z+ W$ N& Z/ ?- }
ToneLoopStart();
" b( C0 F' A! X2 H; q
2 S* ^8 |# f% H3 [ LOG_INFO("\r\n ============Test End===========.\r\n", -1);9 T* f+ P) g6 u3 e8 Z. g( Q
8 a5 H% P4 T0 e( X
}+ Z* m. D; x8 k7 u0 I: T
: o/ f4 A, A- G/ K0 @! l
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
* C+ T. w2 D+ e$ T) [3 S4 C
6 [- p' y( K7 `' ^+ R- ]3 v. z# D S4 o. e/ ^6 ?
. j) A% d: J( W6 a% K# z7 K
1 F- h" }/ ^: {) M* {( `
! t' L s8 M6 T( ~' n
! C6 N. p. o! t+ ?) C( K5 k |
|