|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。9 k3 I: f& L6 ?8 x' [( Q
目标:AUDIO_LINE_OUT播放声音。ad采集声音。, w3 L2 o( |3 D0 G
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?). v2 U* L/ `7 c) f9 B; d
详细程序如下:) a7 S6 A E) m6 `3 H8 n3 K
DSP侧 main_dsp.c
% k( R9 s* D2 n& R5 vextern int lineOutmain(void);
& y6 {( k8 \: e5 N3 RInt main(Int argc, Char* argv[]) {/ ^" f$ Q' [( O# k; l9 T: G; S
LOG_INIT();( |& R) N: V" ?9 p: z
Error_Block eb;
* ^+ |0 {. n0 u* b$ V# \9 }% L3 h3 \ Task_Params taskParams;& ^! v3 F, H. i3 w) r
$ S# b [# ?. |, I2 n2 P
LOG_INFO("--> main:");7 Q' s6 I# U; z$ n0 `' {0 M* y
2 z) O# n, {+ z4 ~
Error_init(&eb);
' [0 ?" [) U0 D" ?$ `- Z, F" W# Z7 k) T2 `& T0 Q8 P" q, _
Task_Params_init(&taskParams);/ ?' l1 H6 H* a- u: E9 m
taskParams.instance->name = "message_loop_fun";! Z* ~4 Q5 S5 z2 ]. C
taskParams.arg0 = (UArg)argc;
# J! G+ U e9 i! N: B! Z taskParams.arg1 = (UArg)argv;
3 f0 }5 q5 u% T taskParams.stackSize = 0x1000;6 F, e+ u! K0 ~1 R L$ C9 o) |) B
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
" q) A/ n6 P( D3 Y( W, u7 c# J( [
if (Error_check(&eb)) 7 U0 _+ k4 v v" k# `7 x
LOG_FATAL("failed to create application startup thread");
; H5 s$ z4 `1 z+ M% W4 S
/ y, ^& o6 P% ?; }% X lineOutmain();
) @6 ?3 m- x) b' O/ O BIOS_start();, Y. ~2 P; J8 y( T+ s: q5 S8 d
LOG_INFO("<-- main:");
9 k2 O/ _! q, `. }* [ return (0);. }! Z6 m3 M( t1 D, N& \
}0 J, Q5 o: u5 `* l k; f# {: Q
其中lineOutmain();是启动lineOut例程+ F) e) i2 O7 ]7 b2 O3 s4 F# G
int lineOutmain(void)
# A2 @' I. w% G2 j6 [4 s{' i! \. w/ ~: ? w6 X7 O; J5 z
unsigned int i;+ s/ U1 ?; W! _2 ~/ a
. M9 `# N7 H* Q( a2 ^6 E7 g- G$ A
PeripheralsSetUp();
5 I% a% Q: V" \/ o
+ c( u% y6 S1 \ LOG_INFO("\r\n ============Test Start===========.\r\n");: {- o' u2 d) A
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n"); f/ L6 [3 n# U$ p$ C& X7 m
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");' q" U# b5 c) w/ |. k1 S9 h
7 V& M* b# A6 \
for(i=0;i<229396/2;i++)- D, |+ E- v9 O, ]" ^5 e, K2 ^" q
{0 n6 N% Q$ ~9 u8 o2 \6 \8 _
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;( h& h" @: A" L' N/ s+ N& n
}, @! G w: F9 c) H; N# s3 g1 G
# C3 K1 t6 f7 k/ p+ E" ?, |5 q IntDSPINTCInit();
( ]; P9 D8 R! q7 m1 [! }& v. |5 h; B7 a o; G% Y5 n- M/ e; e
I2C0IntRegister(C674X_MASK_INT6);% q! f) Q0 j; e9 \3 f4 f/ y: Y
; s2 T% {) [ B' b# c
IntEnable(C674X_MASK_INT4);6 I T o$ D" q" @' k
IntEnable(C674X_MASK_INT5);
" M* j8 F, V. C+ ~ IntEnable(C674X_MASK_INT6);0 z6 S/ c7 j/ o: I: d
0 o' x# z% h& p! T8 {( F IntGlobalEnable();# ]5 T) `/ q3 p d( I! w8 s
' a- z; \4 K3 @1 }
AIC31Init();
, ?: N( c: ~8 N+ N. z ToneLoopInit();
# N" X* ^* \; |, _. i+ Z: f Start playing the tone looply" R3 J- N* w% C" g4 t
ToneLoopStart();0 j+ [. Z' l" _* i
2 ?6 c" j# `$ K1 g9 A% g+ W9 }$ ?
LOG_INFO("\r\n ============Test End===========.\r\n", -1);
8 y$ k- _( j% a W4 u
4 j; p+ }0 b: K4 d( f( m}
( [7 F' z, n+ t$ x
' R! V' q. i* ~7 Y2 J" e从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
, J# N! v8 z: v9 i4 n, f) K0 m
* ]9 K# e# n+ E. q( ~, J- ^1 Z( u; I+ z4 U2 B* d& q1 ?
/ v! V9 O; r! [ ]: h# Z4 t
( @5 F! }9 ?! I2 z T( c% n9 _
5 n8 `2 ]/ c4 Y2 e$ t# S' T R4 K5 x. g0 v
|
|