|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。- t7 t6 P6 C6 V9 S) d
目标:AUDIO_LINE_OUT播放声音。ad采集声音。
5 H# q( G: V: j; k' r5 J% ^现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?) K) y* I G X7 n% K5 r4 O
详细程序如下:
5 U, {1 ^7 T! g- \! f2 F" rDSP侧 main_dsp.c
; o% C$ U/ s( m, E. ^" y8 Lextern int lineOutmain(void);- A& d$ W K! P# W% v3 W3 F" {
Int main(Int argc, Char* argv[]) {, p' T* g% Q' W+ H0 M
LOG_INIT(); d4 z" n9 u3 J* v$ k- ]
Error_Block eb;
5 D; b5 [/ G2 g! m( M/ o2 v Task_Params taskParams;
9 ] r0 S# o& I7 ]1 I; G+ D; W$ r$ T$ [8 [8 F) ^
LOG_INFO("--> main:");
4 S1 G. Z: ?' H" M9 Q+ u8 Y9 s: u& i- Q9 m) ^ h9 U1 T. o% ?
Error_init(&eb);. H7 R- J. G q9 g, E/ C7 {, C
( ~" z0 X5 L1 S9 x, q6 u2 Z- _, ^
Task_Params_init(&taskParams);& c( b. e' [ S! t& e+ G
taskParams.instance->name = "message_loop_fun";
3 Y+ E! U3 k) b, f: V8 I taskParams.arg0 = (UArg)argc;' j2 ~! ?2 |. j& c/ W: v& R
taskParams.arg1 = (UArg)argv;7 \3 r3 C5 @0 ~7 X
taskParams.stackSize = 0x1000;
$ m' Y1 f3 S# |: d# V" S; D g Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
2 C; p+ l5 g0 j; J/ `1 E2 r, Q# N7 f$ P6 [) M. H* ~5 |6 O
if (Error_check(&eb))
) M% C, ?. Y; m. }3 K LOG_FATAL("failed to create application startup thread"); ' Z! I0 |# V- c0 ~
% {( j$ n8 L, f8 [ p8 O: {1 ^) ^
lineOutmain();
k7 a" N% E& Z+ J7 X" K3 m BIOS_start();
0 O) o" P h. X, k5 F LOG_INFO("<-- main:");6 e" D( o3 w/ A. k2 e
return (0);
1 K7 \; R& b) O/ Y! N" Y, F# k}! f5 Z# `; n! |- s0 o7 N
其中lineOutmain();是启动lineOut例程
% R8 e# m# _, H5 K0 eint lineOutmain(void)3 ~0 h; L5 p' ^5 Y/ K: o
{
& s$ n2 `( O2 M1 a } c unsigned int i;
( w% ]4 k1 y+ C$ M3 s2 u Y# e' r; N9 g: E0 _" n0 {
PeripheralsSetUp();
* m& @) t3 V/ y% W/ I$ P4 ~$ I) I5 V1 u; y5 x, ~
LOG_INFO("\r\n ============Test Start===========.\r\n");! {; o) G V# }, d0 ?' N6 q' z+ s( j
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");9 R, T1 U) |. D( q4 `
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");# d: o- @* ~; ~6 N8 G' V$ ?
@; Z \, m: x# i
for(i=0;i<229396/2;i++)
+ B! {- e" G+ E$ l k2 N% t/ E {
* x: B; m- x8 M1 o7 \- c toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
9 w7 p: w4 c, U0 ?8 }* N6 d }( B) i n7 h3 w3 b/ [! [1 j
; U6 |& w8 L+ Y9 R4 @# D+ ~7 [5 d IntDSPINTCInit();4 `# K# j3 G$ i9 [. Z7 q# w8 E/ {
: `$ {9 d6 o6 @+ u; i- e I2C0IntRegister(C674X_MASK_INT6);; L( q* @+ X$ [/ r& s3 Z9 V( N
4 G! R* x. t, p6 d0 m
IntEnable(C674X_MASK_INT4);9 x6 \# }5 e, v; L3 l
IntEnable(C674X_MASK_INT5);- Q9 M6 a3 ^& `% p2 G5 E* H) l' r
IntEnable(C674X_MASK_INT6);
0 H$ U2 n4 J |- x3 D/ l8 k, `6 t Y- j* y' G
IntGlobalEnable();
. q! z U% z3 G7 f6 Y }' c$ G, }6 C/ y% I9 p: |2 R2 d8 ]/ \, Z7 H
AIC31Init();( `' T% \5 A" l' C Z2 o$ q
ToneLoopInit();
) B9 ~6 N- c# B' L1 a/ y6 T Start playing the tone looply
d D: [4 Y) B3 a ToneLoopStart();
7 |5 X8 M, t9 \, E" S
/ i3 t; d4 i9 |! D" [ LOG_INFO("\r\n ============Test End===========.\r\n", -1);
; r r# J1 B, f6 s* z1 {5 ^1 Q4 V! k3 x* }
}6 n/ `; G* e& Q) n
* u; a$ C! o7 [9 G% e7 J从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。) l, G8 m0 e$ d+ v* Z1 ]1 p7 O ~
4 B/ g5 v% d' k& v6 H, G) g: \
! Y, p1 ]! l8 v4 P0 T0 c
9 Q) w! b3 A# S: F+ s% ^, y) s7 L5 E6 t* J- S6 Y- a" |0 C* p8 B
; K5 G' I8 ?. E4 d7 T" `" x
, l3 G/ }' _! F+ D
|
|