|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
# `( a. C0 |( M目标:AUDIO_LINE_OUT播放声音。ad采集声音。
+ J2 y6 k6 u" _现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
# A u8 X. |5 z3 s! J2 v详细程序如下:
8 V% v/ M6 y. R3 vDSP侧 main_dsp.c
: j( D' A' U- L4 sextern int lineOutmain(void);0 R( u, i7 l! R* n2 q6 ]
Int main(Int argc, Char* argv[]) {9 C; X$ W! z9 S; C
LOG_INIT();2 `8 i8 J! b! S$ e& @1 Z& E
Error_Block eb;. }% G; k% a" z6 h% L# ]( H
Task_Params taskParams;) J X* ?5 S+ o, E! a' E' U- K4 s
) k- [& z, @+ W. m' ?
LOG_INFO("--> main:");
2 Y- h/ ]3 o$ q, O" M# s3 ]+ J) Y, i" H5 U# M
Error_init(&eb);
& e! f ~8 ~* ]( ^) u+ q' E' n) D
Task_Params_init(&taskParams);" P; r b. U; y" b# X# c
taskParams.instance->name = "message_loop_fun";8 X* E/ k2 o% d( B/ W
taskParams.arg0 = (UArg)argc;. ]4 Q; ~; L. f( i- b* s# s- V
taskParams.arg1 = (UArg)argv;
2 `8 c) d' S4 X0 T' w0 i1 a3 s; b; a taskParams.stackSize = 0x1000;6 O+ U1 A$ h: W& ?3 w) B8 C
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */; Z1 d7 K6 S3 T
/ @% _, n8 k" M5 o! L
if (Error_check(&eb)) - t) U6 k) O* u5 o: n
LOG_FATAL("failed to create application startup thread"); 0 ~* t, v8 ~5 ]0 k: d) h9 v( d
, `+ A; p! L: w9 j( ?& ]' k+ P
lineOutmain();
% q+ [' _' A8 h2 X0 [4 U5 F% Z BIOS_start();
' V1 A+ R& E+ ? w( t LOG_INFO("<-- main:");
8 N/ t/ i" g8 g( Q return (0);" n0 A1 s v! `1 r
}
/ n( I, j6 X; T3 m0 `其中lineOutmain();是启动lineOut例程
+ r/ p1 x4 V) v" k" qint lineOutmain(void)1 Q: s1 p' C# d' I
{
7 v& w" h; W- u+ W/ D unsigned int i;
; m+ l2 w. A4 V! R1 D. [
% q! O% J4 I; X, Q& w+ ?& w: ] PeripheralsSetUp();
2 w0 E C1 d7 `, ?4 q
, W# H8 E# Z t V LOG_INFO("\r\n ============Test Start===========.\r\n");
; u' u/ r- X5 @; M; ^& _ LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");2 L( J8 ~' q7 O0 h6 h
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
( J3 R2 u' c4 F! B1 t) H
0 i/ ~% z# \4 Z# s5 z for(i=0;i<229396/2;i++)
% e2 x* M: \/ w3 _) M, t& f! |: @ {; h7 }: d, A1 E( Q Y1 D
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
4 J! U7 Y0 d/ D( ~- D2 P" ^' E }+ T3 i I# N7 i6 V; e5 f
$ F# `) t! k7 S6 j: g$ n IntDSPINTCInit();
7 X8 S: ]% F* \. K0 x' L I6 V1 \9 ^2 i
I2C0IntRegister(C674X_MASK_INT6);
' q3 D) @4 p0 d; z) z: ?* \$ d7 I. X( ^" m# @7 b1 k
IntEnable(C674X_MASK_INT4);
: w- ?$ E! O n2 f- R5 F IntEnable(C674X_MASK_INT5);7 J5 a" A! ?; c
IntEnable(C674X_MASK_INT6);
6 |% W3 I6 C. B4 S1 O) R8 X
! ?; X# C, z8 o" j# m+ S IntGlobalEnable();% I1 |& x% T; F. t( G
5 H7 i" ~. B! w) o AIC31Init();
1 u# v' W9 Y. P: c ToneLoopInit();
) b$ Y0 R& R3 v% c6 @ Start playing the tone looply! [9 ?" d/ i4 A' m8 A( X5 H
ToneLoopStart();
3 A0 I4 s3 v( z; O- |+ {3 ]$ R4 ^% j7 d
LOG_INFO("\r\n ============Test End===========.\r\n", -1);' _, ?" \) v9 U) G9 G) T9 U0 i
, o+ T3 z$ K$ D+ g1 G2 ]0 |}3 K3 {6 l( \# O; P$ v4 N
1 p5 B5 t1 ^: t' H7 {
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
4 k9 Z8 E% H1 X5 Z
$ J) O, \! _/ L! f
- o- M+ U$ w$ l3 Z; M9 i* \* P- E. |- G. K+ _
5 l' H" C" M# ?3 `* g3 Q2 {- o( E; U( C) U$ I3 D
! A$ K( c! b9 |3 G |
|