|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。! Q0 C: j7 S: @5 T, d2 M
目标:AUDIO_LINE_OUT播放声音。ad采集声音。; X6 n$ L3 V: h0 E* E
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)" M( _0 ]/ x3 Q6 M6 Y
详细程序如下:
3 A& s, Z$ M" f3 x c! E oDSP侧 main_dsp.c2 v$ V0 R( Q3 D7 F, w* {7 W
extern int lineOutmain(void);
) v- c2 @# l! H2 @" q- b* ^Int main(Int argc, Char* argv[]) {$ k0 i1 K6 s1 x, Z
LOG_INIT();
+ r# q. A( [/ B! _ Error_Block eb;
0 i& z! ^4 `! w4 N* @1 j1 F Task_Params taskParams;0 E1 j& C0 f6 {, u" _
+ K. ?) W5 l( ?
LOG_INFO("--> main:");: _+ p6 S9 m* |( s3 |0 Y# q1 ^) V
) S5 ]6 I" z$ K3 K, F Error_init(&eb);
. P: g. g6 `8 P/ G+ A4 j1 B1 \$ i4 ]6 c
Task_Params_init(&taskParams);
" i* J: t; A9 p3 [ taskParams.instance->name = "message_loop_fun";) h) D6 E# y0 z _
taskParams.arg0 = (UArg)argc;
* ]! u- B. r& f( k taskParams.arg1 = (UArg)argv;2 L3 o4 v8 s% d" i
taskParams.stackSize = 0x1000;- f$ V4 Z( C- V" Z3 {: f x
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */" ]1 k& Q9 }6 N) Y
( l7 l; h- ?$ u
if (Error_check(&eb)) # r2 P' a4 ^1 B& D9 z' g" b
LOG_FATAL("failed to create application startup thread"); ( h7 Z1 ?+ L7 n/ |% |9 N1 A
$ J$ `* _: [+ Q. `3 F( S
lineOutmain();
# `6 w7 ?2 n M2 c. o BIOS_start();! k) n) `0 {9 V3 T4 t5 O
LOG_INFO("<-- main:");. `9 _* [/ s4 ?
return (0);
5 t: e7 T- E' c}; K; F4 E/ K1 ?* E1 i# D5 F
其中lineOutmain();是启动lineOut例程' D- P: {" d2 U1 M% Y
int lineOutmain(void)2 `( v5 Z) x1 d; A
{
9 T6 u, ?; t/ w$ @: {3 ? Z3 d unsigned int i;
! d* z8 c1 u8 L7 |5 K, ^: ~/ K8 T/ Q- {1 x4 M( n+ S% t
PeripheralsSetUp();
2 n- V1 O9 `0 O# C
0 h- ?: L4 F! T' ]: J% [* J LOG_INFO("\r\n ============Test Start===========.\r\n");; y/ {6 V6 H+ \! h
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
: k& Z2 I1 H0 j( a) Y1 c5 T LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
% o# j4 ?' M4 O6 b) v- d8 i) ?) t8 @- F
for(i=0;i<229396/2;i++)
! I1 y9 f0 y; ?; v: l3 v2 o/ ~ {
3 w, ?( A3 w* X1 W' ^" @2 m6 g toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
- Z! S1 m9 J5 v, J) V \/ e1 i, E }( p1 a: i0 q6 E: o6 x% O6 v
! I+ i+ o K& e1 a( k IntDSPINTCInit();* n* K* U3 \ W8 |
7 R3 }4 c _1 q- E, m. M I2C0IntRegister(C674X_MASK_INT6);
4 `# m8 j9 J8 K9 ]5 Q0 i# E3 L8 \$ e- X! t4 q, W0 ?
IntEnable(C674X_MASK_INT4);
* _( s; f/ o, W/ c& J4 Y IntEnable(C674X_MASK_INT5);
- J0 s5 o* @3 l L( \* J IntEnable(C674X_MASK_INT6);% N4 o) S! }) j: d) D+ V& k0 O" e
+ N1 t* u7 J& V: j s8 w IntGlobalEnable();6 Q) C5 w7 o0 R, d5 [' t
6 s/ \; T& U; h5 A
AIC31Init();
9 h! n+ Q8 |# t" b6 n ToneLoopInit();
# P, I* u) o+ q Start playing the tone looply% b9 r1 e! z" Q+ I
ToneLoopStart();
' R: {/ L! I( ], Z3 \8 r- g5 V g5 P9 X4 A9 F
LOG_INFO("\r\n ============Test End===========.\r\n", -1);9 P6 V, u+ S4 h& K2 j: A5 J; r
) Z% D9 W" P' Q+ m6 b7 v
}
* U; g# C2 V6 P+ K" f3 u6 {4 }, ?, B
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。4 \5 {# n5 ^( r# N( \ W0 K" P' L
/ a$ Z6 E7 G, X$ }
% {3 a& w0 w! V9 t( | [' J& p' O0 T
4 a$ r0 h R! W8 r g( \* {: J9 Q7 T. y2 I6 I
# P( S$ j3 C q S6 m7 ^$ z. @, D' n8 [6 Z" b' O
|
|