|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
9 h( ?# M8 N# \6 p( ?目标:AUDIO_LINE_OUT播放声音。ad采集声音。
5 }8 @# Q1 D3 V/ I8 A1 s: P现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
% T' w$ \2 |8 I! ^% T详细程序如下:/ v5 A: L$ J# N9 H7 ?! o$ x* N- k
DSP侧 main_dsp.c& E* s5 d: c2 }3 N4 S4 e5 T! L; N
extern int lineOutmain(void);- c" |8 e3 v6 i* F: ~
Int main(Int argc, Char* argv[]) {' C9 I# b1 Y5 w$ o" D2 h
LOG_INIT(); p1 N( |) x" {
Error_Block eb;
0 N W P* n- y" m; f: o Task_Params taskParams;+ M; A P0 Q5 @$ d+ j% C
% o& ?. T( g2 i" Z LOG_INFO("--> main:");
/ I; a! P, d% ]6 x0 j, W3 q/ w, v" t4 a4 j0 m2 u: b
Error_init(&eb);
: S7 M- C) L$ N2 D- C3 Z/ b- X. R& _$ w& }5 Q
Task_Params_init(&taskParams);% T; F: B4 e7 _' ]/ X, T1 Z+ W' z6 ~
taskParams.instance->name = "message_loop_fun";( k7 d- d) I( \
taskParams.arg0 = (UArg)argc;
% P/ Z& `; j& ?0 Z: x: [ taskParams.arg1 = (UArg)argv;) L1 m. W, f- n' V) O |0 w% d
taskParams.stackSize = 0x1000;
: h2 p( K H6 S4 X4 R! \7 l5 j0 c$ l6 s Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */3 F* W( ^' ~0 h0 Z
- L! m, {. j" S1 _/ V if (Error_check(&eb))
3 D: x. ~* _3 z: y LOG_FATAL("failed to create application startup thread"); ' R% q& `) H/ L9 |' U$ s# D
+ h1 Z7 U$ a/ m X! y. I( h) q3 {5 N
lineOutmain();
$ f7 L3 e0 s5 a+ _# V3 ?# y BIOS_start();
2 p, E: l8 C" y: v1 M5 |* ? LOG_INFO("<-- main:");
1 c- _. L: t7 x! R. d' i return (0);- M2 x# w, S8 g
}
( @; a4 ?2 i9 m1 u其中lineOutmain();是启动lineOut例程( m6 [7 C' I% L5 V5 O
int lineOutmain(void)
( [6 J* n; F/ h$ |6 a. M% X' u6 X{
, {( I) G& U3 k. j( p9 v unsigned int i;/ V' L# P, W0 K8 |
$ K v+ T' n2 I* L2 Y' a5 D* h
PeripheralsSetUp();; O4 Y, ~ F6 G1 H- b0 x" n
$ l( ~) a* I& `6 X# V x5 z
LOG_INFO("\r\n ============Test Start===========.\r\n");# |/ ^! U$ L. }
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n"); k2 C! f; X' n
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
1 Y5 m W \2 v% U+ A+ @
2 x4 `9 W# T) \* |, ?# x for(i=0;i<229396/2;i++)
* J `9 l4 `! g# l {) x9 W1 U. X! V5 R
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
+ g4 L2 x! X# ~, J! n" j4 D }
1 L ~9 `* u. Y! k, k' {+ W* h) ~6 Z
9 @+ F0 C& r7 k, R! m1 A7 I IntDSPINTCInit();1 t0 n ]: ^5 R3 n, C8 N
4 e6 X( g" s% w) Q7 r+ ]9 Y' o; w
I2C0IntRegister(C674X_MASK_INT6);
& q: Y: f, h+ K3 F2 o f2 T B* N
3 |9 h' [" f% R( ^" L/ `1 \( d IntEnable(C674X_MASK_INT4); E5 O9 {" e% n
IntEnable(C674X_MASK_INT5);
# [7 G* B% f) c8 o) C, W. J IntEnable(C674X_MASK_INT6);6 i r3 u/ E( ]
6 s+ ?1 G2 u+ s9 B! ` z, z, d8 H
IntGlobalEnable();- A" D0 p8 w7 Y' a4 K x
6 u' a$ h! N* p& u1 Z/ |; U" N
AIC31Init(); U' T6 Q2 \+ l; ^5 X, N4 C
ToneLoopInit();
# y+ a) V" o5 Y5 H0 w) E Start playing the tone looply
( @ T. @( r w ToneLoopStart();
$ Q4 G1 P3 b, W0 A8 u4 @
# g: F" m3 d- G% R. c LOG_INFO("\r\n ============Test End===========.\r\n", -1);. w; H; s& x7 ]/ Y5 s/ w
- K5 s0 o8 G: y2 D$ a0 N}
& \/ s* q% p( D) a/ F: ~* j
5 A1 Q/ d8 O& h# v& p从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。- i7 p: }% b+ X7 ^/ E
" q& D/ A% y5 L2 \$ Y) I6 p+ f* A3 U6 }# w3 G: n
+ M2 y6 r- H; e- a& ^7 B
: M0 B9 ]" y% r, [
+ h, T( l1 G/ ]& I
|* a p5 \3 S/ I |
|