|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
4 l+ w) n9 }6 f+ r0 }. L3 I目标:AUDIO_LINE_OUT播放声音。ad采集声音。3 @# D& _5 {& ^. g7 B# s- w4 T
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)" }, x/ F0 }6 H4 Q- H8 ~
详细程序如下:
* U7 ~3 n$ v: L4 Y- }2 A) `DSP侧 main_dsp.c
) P5 T/ b/ G; L3 S s% c$ ?extern int lineOutmain(void);
0 q, j. k6 A% o+ p1 ^# {Int main(Int argc, Char* argv[]) {
$ R, V$ p0 ~/ Y0 h, _1 [# q& @0 _ LOG_INIT();0 }1 V' ?# ~/ D- @$ l" `& m
Error_Block eb;$ Z K0 Q t7 [+ |$ n* ?! p
Task_Params taskParams;# K) w5 s; \- w$ X+ \. O
3 k& w+ A. D1 S4 S0 a% P
LOG_INFO("--> main:");
) \5 G3 U6 Y$ y- c7 J
7 K0 m- H4 [) p; a1 k5 i Error_init(&eb);
8 j* |1 ~* m8 y; E, @6 L
: ^. ~6 M! t0 V5 P' A' L) E Task_Params_init(&taskParams);
2 z1 c; ]6 i1 M* R taskParams.instance->name = "message_loop_fun";
# r) Q5 b! z2 d8 g taskParams.arg0 = (UArg)argc;, { N5 v( _% G( e! ~
taskParams.arg1 = (UArg)argv;$ }/ F: m: k! z; n' H
taskParams.stackSize = 0x1000;5 k- w8 B/ R) Z
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */' u1 ]7 f$ _( Q7 }
4 K" Y9 m& F0 _5 E7 m; h. n
if (Error_check(&eb)) 4 s0 V+ B* k/ i+ ~- v
LOG_FATAL("failed to create application startup thread"); . C6 y7 ]2 N& S' m5 W) w7 k
/ I8 f! _# ^4 ^: x( } lineOutmain();
9 `1 x, Q& I# x+ L" O- v BIOS_start();1 Y: x% e0 D4 p. a; T: d& S
LOG_INFO("<-- main:");- j% T* O/ ^/ m5 R" L
return (0);
! m: C* p5 y' a6 F: P/ `}# N. k1 f) c1 U" a. r
其中lineOutmain();是启动lineOut例程
0 q/ ^9 X O7 G; {" n3 G' Oint lineOutmain(void). K' U9 Z g4 d
{- B9 o3 f" T8 b' J
unsigned int i;
0 I7 `5 W) W p, j% B. [9 a* Z" _; g# I
PeripheralsSetUp();
( C, C4 C+ \9 Z" ?" X# P- L
1 i8 C7 A7 N" W LOG_INFO("\r\n ============Test Start===========.\r\n");
4 |; B. y# ^% O7 D LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
0 w1 \+ F# z+ w( t& y/ R7 b LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");4 U2 |; M0 Z9 T, s; P
: r5 Q N! Q7 ~6 r/ {
for(i=0;i<229396/2;i++)8 k, ^9 u& p/ V- a3 O* u
{5 I! B0 ?& Q- T
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
! F: E5 R, w" H* h0 B% e }
. X& [9 l! I7 g4 Q% z
: p" W& l/ W- x4 Y1 V5 R$ ^; O5 y/ A! @4 ^ IntDSPINTCInit();
0 V1 g# h d( w& z+ a# w
1 a% l2 `" z. p' N! `' a I2C0IntRegister(C674X_MASK_INT6);
8 G$ `% v6 Y' ~( v
8 M5 P0 @5 U, T& c# a$ B2 X/ d IntEnable(C674X_MASK_INT4);: t2 _) ~' D4 b" K6 y$ g$ U/ x5 {! j
IntEnable(C674X_MASK_INT5);
9 b9 _7 r& `7 E+ \4 p6 K5 F IntEnable(C674X_MASK_INT6);, P" [: s% u! t7 |6 w' d/ N
' U* q; I$ I& ~+ Q4 R& Z. y3 C; `4 f IntGlobalEnable();
' M$ x( u& j) _5 w
# `+ c6 r* o7 H5 U AIC31Init();
3 N4 `" v6 ^- f8 y ToneLoopInit();
@3 ~, [3 N7 z. E7 J1 l Start playing the tone looply
s+ t* m' G: J/ S7 C6 r/ z ToneLoopStart();
4 b% s0 b( `% s- u" S- u" `
( ~: p( b. @% x' o# N7 s8 u! n4 g LOG_INFO("\r\n ============Test End===========.\r\n", -1);1 T) ?' H6 z: P' G( L9 I$ X; _# `2 ?5 d/ O
5 G+ o" W4 ~1 S+ P
}
/ Y! f4 }% z$ ?( \8 f
1 E; j8 ~% X* e% w5 n H从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。2 a7 H6 t( p. m
0 `* P* m7 [+ i/ [
$ D% h1 ?" ]& P2 s! q7 b
" V5 V3 Z0 `) r4 L' _. x& l1 A8 Q! N% Z" X& P' s% f
+ L5 X6 x# b% |! z1 F6 I, R* W
9 ?% }' V \2 H& @$ @0 X
|
|