|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。# Q ~- G8 F; w( D T
目标:AUDIO_LINE_OUT播放声音。ad采集声音。
( ^% R2 m# B# i' p) Y5 {4 d N现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
; Z% X. \+ ]/ A3 ~, h7 \3 N详细程序如下:
- R8 d7 ~0 T) kDSP侧 main_dsp.c( z4 ^+ [9 ]7 b6 |
extern int lineOutmain(void);
2 s( [- C, w* h' z0 m$ ^0 DInt main(Int argc, Char* argv[]) {
2 |4 m) S2 K7 Q. z6 t LOG_INIT();
+ d) b# v& `4 r) C$ u Error_Block eb;0 P" f* W8 ^) V' {: T
Task_Params taskParams;+ L( P( b- R7 q/ y/ k
0 k0 y& W N& n* h' l
LOG_INFO("--> main:");: v8 l7 k! d4 | l! z5 l9 [/ Q" n. ?
/ V- S4 W; X2 m6 G Error_init(&eb);
) ~' t$ t. T! T! r, J6 o0 B8 P' {4 P& x& O; L1 g- P, e
Task_Params_init(&taskParams);
2 V0 x, }+ R) C. F5 M' H taskParams.instance->name = "message_loop_fun";( N) t9 M' F; q ~' V" C1 Z
taskParams.arg0 = (UArg)argc;( I8 R$ O2 o3 y/ A O
taskParams.arg1 = (UArg)argv;/ U+ C3 p, L6 F _$ S1 Y- Y$ ~5 x
taskParams.stackSize = 0x1000;
+ h0 W* b8 S; @; Q Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */2 G4 J% O6 v0 c3 h1 ]& y% C
- j. M- u# q; R- j% t if (Error_check(&eb))
$ ~- {' u; J3 x LOG_FATAL("failed to create application startup thread"); 0 A/ I1 c9 r& T: U
% n f: y% i1 C) c2 J! |2 |+ f! p lineOutmain();8 r' I: T4 R' |1 [% W! A9 F
BIOS_start();. t+ t" r0 S9 X5 |$ ?. q. t/ u
LOG_INFO("<-- main:");; _5 ^ A$ k3 w; H
return (0);$ y9 a8 Q* Y6 h2 O
}
, k* ], E+ |. l v- y其中lineOutmain();是启动lineOut例程
2 _+ m3 @1 o! P- o) T8 T( L$ ~4 `int lineOutmain(void)
3 E3 H( z3 x( o' N" u {) U# z6 O- E) @{( P! ]7 @( [1 n& C0 }' o, d
unsigned int i;
: b& {0 @- S( A. x/ ]$ S& D/ D, H$ d( A
PeripheralsSetUp();
3 r( G# [3 ?0 a# _, @: N6 U
7 l0 J7 M9 S; I LOG_INFO("\r\n ============Test Start===========.\r\n"); s% F' L# j) J5 [! n5 S' T
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
' d7 [ S% R& O. Y5 u" e LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");% W& ~/ \0 Z$ k1 {" d) Z5 o
! W0 D. V& \" ?/ d for(i=0;i<229396/2;i++)/ S" c8 Z" G( l. v3 v4 j( z% ~
{
6 x8 O& d. b7 G% U$ v0 ?) W toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
; w$ P) N+ G$ x, k! o1 K0 M }6 `$ m# a. c3 K4 w4 E; F
, S7 J% v/ u- t P6 f+ v6 d IntDSPINTCInit();& _0 s# n2 Q: T2 w) h. I
% v6 m: `4 J" U( @; j$ D( U6 C* ?* [
I2C0IntRegister(C674X_MASK_INT6);7 u4 O7 Z/ F( I+ L4 i# d
6 q, T+ T+ P4 T9 d4 U4 R IntEnable(C674X_MASK_INT4);1 R2 q9 x5 l) w, v2 f
IntEnable(C674X_MASK_INT5);
: E( v) c% R+ K# v; E IntEnable(C674X_MASK_INT6);
: {, V! f; s. q$ x2 [& M+ [
/ x: X2 D# q0 o g& K% G: @ IntGlobalEnable();
! b1 B7 x2 `4 S! y8 b
$ r6 F& X) A2 U" Y; a. N8 R AIC31Init();9 m$ @' F: s4 E7 n/ p& B( p
ToneLoopInit();
* y0 D: W1 M2 R) G% b Start playing the tone looply/ x p" J4 o+ u2 q
ToneLoopStart();
; ~9 Z+ i5 H) L2 y! P: X3 {2 {' _; `
LOG_INFO("\r\n ============Test End===========.\r\n", -1);
3 s+ K- n( k$ q7 o/ \9 M" }$ H3 t/ Y
}" W" Q8 v$ \) Z6 O u7 H8 d
% j& V3 M+ ?5 h5 {从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
5 I/ l' K7 L) M9 L8 f
( Y7 G& r9 v$ b% z; H
) x+ r4 w" z m3 i: l% Z/ W/ l/ h" @. r; [- G! g
; C6 b3 v. \% ~- Q
/ q" P0 a% p1 m. Z
5 D& T% D4 m, o) X: a |
|