|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
! [8 V9 k2 \' `目标:AUDIO_LINE_OUT播放声音。ad采集声音。: W# d3 I" i& J# p9 ?
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
; p: P8 J k- v! x8 f详细程序如下:. x6 Q1 m' L9 P0 J |
DSP侧 main_dsp.c' ]) M: c7 ~6 x
extern int lineOutmain(void);2 N9 k2 v- w1 r2 N' J j8 q4 A
Int main(Int argc, Char* argv[]) {3 k! v. Y* g, X& }9 X5 F
LOG_INIT();
( Y; S+ E- L# U. Y Error_Block eb;
% u: T; F' ?! o3 J7 N3 } Task_Params taskParams;
/ K1 F9 U3 G8 F! S4 y9 K
8 R* R$ b" Q: A ~$ a LOG_INFO("--> main:");
4 U! {! O# B0 Z- G
) x+ r' s& \/ q+ v r0 V" @ Error_init(&eb);
% R- ^3 ^! K2 ]4 q a* E& L' `; C3 ^9 b; g3 p" ?- m" Z
Task_Params_init(&taskParams);
& B4 N0 w8 C* ]4 A& E' Q6 G% f taskParams.instance->name = "message_loop_fun";
; ^7 D, i; _, N* q0 o- W$ s taskParams.arg0 = (UArg)argc;
8 f: Z0 U% x& d7 r) B% l: Y" i. V' z- d taskParams.arg1 = (UArg)argv;% _4 e( Z( p/ Z" d1 j/ i: f# u
taskParams.stackSize = 0x1000;
* Z( y" ?: |1 X- r3 T' r/ ^& x Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */: i' u2 w/ K, g' t3 a' P2 K# \9 P8 |
9 Y7 S4 o. e8 y9 F2 p( _7 d. K) u* ?3 O
if (Error_check(&eb))
9 S2 ?: H2 u4 d4 x LOG_FATAL("failed to create application startup thread"); 3 `1 R, G. B B- _; x2 j
6 c2 r; l% \* Q lineOutmain();' @% c/ _# t$ Q- a
BIOS_start();; I! H/ Y7 v" y6 i& a& I1 q. B
LOG_INFO("<-- main:");
1 n* h8 F1 K5 H/ B return (0);
! E2 I0 n, w- d}! j: s8 ^5 P! {3 e/ n
其中lineOutmain();是启动lineOut例程5 l* F9 i3 s2 V* U# K
int lineOutmain(void); l8 o% p4 Z9 }# O- P7 ]' q
{
8 O0 J' ^. L) `( V8 ]! V unsigned int i;
% y9 W% o* S5 G" _' M! `9 c2 \2 g5 g
PeripheralsSetUp();3 S$ x' M) m4 Y3 t% ~
, G. V# e: e) y" `
LOG_INFO("\r\n ============Test Start===========.\r\n");
* d1 j8 `' U! O% _1 E; \ LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
: C B! g( R& Z: e9 Y1 W5 r LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
" P! E0 @8 B4 @3 A% F. k) o# S0 G$ o/ O1 l, y3 Q: C: o
for(i=0;i<229396/2;i++)
9 m/ ]4 A+ T2 Y+ u; S {9 }3 _: y) q" _+ S6 [9 Y; h
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;9 p6 _+ H1 m( r- l! k, Q9 |7 A, q
}! Z9 _* k! G6 a: w c" f
6 D" B K' Y6 F5 h& R/ N IntDSPINTCInit();3 T0 V) G. F6 v- S
, {. r6 A5 P; P% ?
I2C0IntRegister(C674X_MASK_INT6);! [8 u) n* q5 p
" X0 P/ I1 F' o) S IntEnable(C674X_MASK_INT4);! X$ K) K) G: i; o* x2 y7 Q+ n( @
IntEnable(C674X_MASK_INT5);. W" [: f9 Q' r5 k
IntEnable(C674X_MASK_INT6);
7 ?8 G* m5 B( l* ~
" u9 |& \. b, H0 R9 R( H IntGlobalEnable();
n* P1 p9 G; a ]( m7 `8 o2 P
4 H" `8 K( U" \& O, v# ? AIC31Init();
' f& R% G4 ?4 E) B* b ToneLoopInit();
/ ]' _% z% q9 S1 r0 m @4 k1 t Start playing the tone looply
0 M; J6 w) w5 u& G1 l! x ToneLoopStart();% }9 y5 Y5 H* i/ P6 X
+ y9 L* C& d" F& X
LOG_INFO("\r\n ============Test End===========.\r\n", -1);
" a( \8 t; F# P. j: ?5 P5 T9 w; ^& U
}
3 h& t4 L9 l& O @; ]# g; Y: m: w8 G/ \0 v0 Y) o+ ?+ S: ?7 t# K" _6 R
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
: n& r- n( Y: D5 @7 v- _& ~4 [1 W2 ]! S+ G
0 K" p T/ s0 D# c; p# h# b: i
0 y0 O( [: R( Y0 Q6 \. a& L6 \4 o$ G" y6 t
* [9 ]: z! M. D- z: [5 }7 Z
* \: _2 P& r/ T+ t ] |
|