|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
3 I5 X1 r& U1 g. U- w3 p目标:AUDIO_LINE_OUT播放声音。ad采集声音。2 I8 q- D) u0 M6 E# v( W
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
$ m9 H# A- i( ?* z6 ^8 w详细程序如下:3 d8 b2 C+ A7 R' q
DSP侧 main_dsp.c! s" M. h7 X' |9 y
extern int lineOutmain(void);6 U, }: P: H2 F4 c$ B
Int main(Int argc, Char* argv[]) {
& Z5 L: l' B+ }' h, t0 O2 h/ b4 j LOG_INIT();
& m# ]. a# L+ z: |& { Error_Block eb;' R+ b2 W* a V5 C" b2 Q% s% X
Task_Params taskParams;/ z0 g) A" n3 r; q' Y/ ]* [( d7 V
# E* t! o) F) x f LOG_INFO("--> main:");9 S- B( q7 e2 h( o! }
+ B' {, j8 t1 Z8 H: |
Error_init(&eb);; |- e1 C: v8 w+ m: i. f
- b* i! b6 f' ~% ?
Task_Params_init(&taskParams);6 `0 ` [1 }+ Z: @! p
taskParams.instance->name = "message_loop_fun";
% F- l5 U2 H& R8 o$ P9 C taskParams.arg0 = (UArg)argc;, m; m# W/ V2 q* b3 c, e$ n2 C
taskParams.arg1 = (UArg)argv;; Z' R' M+ K, p, d% a- [( W
taskParams.stackSize = 0x1000;
7 N( B& T) ^9 i/ j6 C1 ^ Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */- Z; d4 z+ k( C' q; B
j: L2 @: A$ m/ J x
if (Error_check(&eb))
! B$ _* ~( d: m, o LOG_FATAL("failed to create application startup thread");
% f8 s' }. \" g" I* q1 W* w
' I8 E9 L6 h/ I7 b lineOutmain();
0 @9 J ]9 A2 E0 C BIOS_start();
! }- E$ |6 x0 _6 s0 ~2 T- x% L LOG_INFO("<-- main:");* S- X; \2 [8 v+ P b1 T8 e3 K
return (0);
( M( o, V6 S5 m}
d* w6 s* T; y! _! ?- \4 U其中lineOutmain();是启动lineOut例程
. k; e$ [) ?* f, S9 I0 _int lineOutmain(void) `# w) g- G4 E( i- ?) m8 L
{$ u/ M: x8 U6 }; ^2 l5 K5 m9 p1 P
unsigned int i;
1 D8 i6 c; J: s+ B& A" V4 ^1 g
$ G0 e5 b6 b6 c5 ` PeripheralsSetUp();, o. G) A0 y: Z) j4 D; ^+ h) u
9 a. Y0 \3 |- L4 K
LOG_INFO("\r\n ============Test Start===========.\r\n");
$ p* v. L9 K. [: U LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");1 ?( A$ [& Y) Y+ l' g) T# P0 h. y
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");- E/ @: t8 b) g: b1 X$ H3 ^
+ i3 j' Y( K0 s0 O
for(i=0;i<229396/2;i++) I8 ]( i( T ?2 f8 @( r& J. W2 d
{
% P* @5 m+ G! |# f# n, z toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
" a, _+ X/ g' }( D2 ]% a* q6 V }8 Z# `3 e# `, @
& f# Y6 t% S- ~- o/ J! P2 r1 S
IntDSPINTCInit();
1 d5 z4 x7 |# [, b1 r+ l4 N8 i9 @2 G, ~' ~ C. o
I2C0IntRegister(C674X_MASK_INT6);, `6 v3 n; t% o; F
! g; ~3 V4 }- g9 t2 F IntEnable(C674X_MASK_INT4);
" i0 Q( _# k7 h IntEnable(C674X_MASK_INT5);6 ]% \' y* A0 f# @/ f
IntEnable(C674X_MASK_INT6);
# K2 u( y- }0 Y) B5 B2 W, N" }3 m! T; m9 k$ l# P" b$ K
IntGlobalEnable();" t* H( c" {& {7 t) I: d1 ?3 V1 F* ~
" ]/ n) h* ?4 H2 V AIC31Init();, D% A0 I' V; g; T# I. }+ w& q
ToneLoopInit();" S# R1 ]0 O, \0 A
Start playing the tone looply3 d l6 t* {% O8 U5 {
ToneLoopStart();
4 I3 K; c1 X' A- S2 [$ j( ]! [. n/ c9 D$ J$ K H
LOG_INFO("\r\n ============Test End===========.\r\n", -1);1 c4 o: z3 J1 F2 _
! m0 x. p) N/ E) J3 o}
) I9 q. i9 h6 d0 z/ a( L8 {
. x8 B' x: U* b7 ~% ?2 u从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
& L: e3 U O5 B: |
& O, u: G8 b2 A" d1 @+ B, `+ u; c) e
7 w+ n; I* B! j
" @, n6 K: g/ z4 o1 m0 Q* i w5 [
4 ^$ S2 {, u4 \; F. C6 S' P" c! W# K* C& g
|
|