|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。6 ^! |# Z8 M& t* `+ g' u
目标:AUDIO_LINE_OUT播放声音。ad采集声音。
+ x" `/ D; e. t0 c6 Z% q3 d$ \现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?) C4 Z/ Q- k& g% c, e# b
详细程序如下:
9 D8 K& T7 j. A) V4 E8 X( ~DSP侧 main_dsp.c
0 r& t3 Z& D$ ~5 Y1 Lextern int lineOutmain(void);9 h/ s2 T8 w3 r% ^2 o9 p7 |
Int main(Int argc, Char* argv[]) {
e) p* }& ]7 O3 c; f! O LOG_INIT();. M, Y; I) O2 `
Error_Block eb;
1 G3 ]( O3 \) R% D: z$ v Task_Params taskParams;
3 ` i3 | C4 t. L9 z# D* n Z0 X
/ ^8 c$ T2 J+ q LOG_INFO("--> main:");
1 Q( s* j) a6 @' _5 l1 s( W
* S. G# L4 b# f# o) |6 F' c Error_init(&eb);4 o& o) L- m( A* V: m
% z8 O+ X4 L4 [1 J! u Task_Params_init(&taskParams);
& t9 M4 W3 m/ r, q taskParams.instance->name = "message_loop_fun";0 n! {3 L; y" |* v- O0 I% j' u
taskParams.arg0 = (UArg)argc;
* l8 x0 K5 N3 S$ N# F/ N( B8 n2 [ taskParams.arg1 = (UArg)argv;
+ {6 t1 J8 w8 i) U2 A6 d taskParams.stackSize = 0x1000;! U3 O( ^+ X E5 U4 B
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */# ]: q0 h! q" D$ G6 ~: e# R! I
( t) V, t0 ]% h5 b0 H
if (Error_check(&eb))
4 y. ~: n) ]0 ` ]& V& N LOG_FATAL("failed to create application startup thread");
( o+ _8 u7 o" s4 K, C5 t & O4 M( b6 l5 T# C ?0 o( v) Q
lineOutmain();
+ s5 U& K3 \; C+ i$ M$ { BIOS_start();% B. a1 F8 L" I# T3 J) v
LOG_INFO("<-- main:");
9 C- l, V3 v0 f: @ return (0);% D1 U; X) _- ^. w8 N& ]3 m. A
}' K- E8 @/ j. W& k
其中lineOutmain();是启动lineOut例程3 F7 _7 ?# y# e2 ]% O8 c/ @
int lineOutmain(void)* I$ X- }/ c y; u5 C! S# e w
{
! _, t2 u% q5 ]3 }: {# M5 h" i k% n) u$ q unsigned int i;7 l! x- r7 o, D& M, }2 K% f
5 | `* I2 L; R. d, c
PeripheralsSetUp();
: {5 p' E# W9 [1 r
B1 s# \. _& I/ X: w2 Y LOG_INFO("\r\n ============Test Start===========.\r\n");. J8 A' n0 R# P& x5 X% z
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");" H+ ?3 z/ r' P3 `: h6 Q
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
/ ^* l$ z" j3 Z9 }& ]; j; d
; k+ t( o2 L% ^5 g/ r7 `6 ~' s for(i=0;i<229396/2;i++)
0 S4 C" o: d) K, d9 [" B {7 @# m' ], b2 q
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
1 h) w1 u* R2 Y- T7 d3 I }: A9 Y) j" |% R8 H7 E
/ l/ t$ g0 n6 P! b& S8 o
IntDSPINTCInit();7 ~, R% k# Z# y
4 {8 b7 W( ^3 z$ U6 b$ L* w
I2C0IntRegister(C674X_MASK_INT6);
G" c$ U( P5 x
5 h& S$ p6 j O6 C' ?2 _ IntEnable(C674X_MASK_INT4);
9 s0 O6 w& A% F; W2 s IntEnable(C674X_MASK_INT5);
( w1 ^( l4 _* Y* k/ _: Z/ ^* j0 d. Z& f IntEnable(C674X_MASK_INT6);- W" k2 H8 b6 p! s8 K
) I) K1 [/ |1 C2 J
IntGlobalEnable();: o' d! |( G" E5 n& F; ?/ n( r
. V. P0 [& t6 i AIC31Init();# u/ s- ?. C( K! c/ c
ToneLoopInit();
( J6 E- h/ L7 L% c Start playing the tone looply
5 \+ h! A% b s& P ToneLoopStart();
: M) w [* f! w
1 t' A+ w6 C) Y. j, v LOG_INFO("\r\n ============Test End===========.\r\n", -1);+ h3 {) r7 ]3 C% p% E
+ t( \( s5 ]+ ^# P/ [2 q
} G: C7 |! ^, Y7 f6 H' U1 w) l
5 e, S T4 [0 t- K: `
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
% a# e( _7 @3 B9 q8 p4 E; \% k. c0 p q" O* |
- Z5 l" Q8 a: V& U7 Y$ l
& }, _- S" }2 j% [ F( d) c, f
5 T) l/ y' e9 `9 A' j' B
2 \' C1 ?% v, ]/ F
# _+ ?4 p- g1 d# h7 E, n( y |
|