|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。& C9 N( C& I: q" n6 Q. M
目标:AUDIO_LINE_OUT播放声音。ad采集声音。- z3 p8 C/ R6 s- j+ }
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
1 n* w0 x$ g( F$ Q; d+ }0 {8 X详细程序如下:
; [7 c# ?6 ]4 W6 ~/ uDSP侧 main_dsp.c6 r6 i a% S; N* n
extern int lineOutmain(void);
0 v8 h. }- p5 c( m) G5 Q; \" oInt main(Int argc, Char* argv[]) {
! Y7 T! F; _+ ~ LOG_INIT();: r( t# E( P7 @: q, k( I- k
Error_Block eb;
$ f" }: q+ N0 w/ \; X) _% S Task_Params taskParams;
+ y2 R t% i' Q% d+ V$ S8 q
7 B# ]3 U& L+ G9 a7 x LOG_INFO("--> main:");
2 V$ W) ?: K1 s5 X
( f* @" U* c |5 } Error_init(&eb);
. ^( e8 ~& n" P. W" X$ @0 e4 K- B4 W
Task_Params_init(&taskParams);
3 }$ a: o; K9 k! L taskParams.instance->name = "message_loop_fun";
6 F2 t, K+ T- _# @% v taskParams.arg0 = (UArg)argc;
3 |8 @9 `- b {& l taskParams.arg1 = (UArg)argv;1 T9 m V% p' K: G4 [
taskParams.stackSize = 0x1000;0 G+ f) [9 l" y% v
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
1 K0 r. t3 b' y
3 N+ s* F4 x; N" k if (Error_check(&eb)) : h1 k% h+ Y- `) g) R9 i9 ]
LOG_FATAL("failed to create application startup thread"); ( h t) c. H7 a: D
& b+ A& y3 q+ [7 @; x2 T0 Z% B8 B5 n lineOutmain();- l+ y9 E+ ~. r; B P6 ]
BIOS_start();
2 ?( R6 h/ E5 `1 c! t. Z5 P LOG_INFO("<-- main:");3 p8 ^6 \+ A) f: X% c" H! k/ _7 c
return (0);
' j+ q4 }6 h& s6 E5 q3 S4 ?}
7 \8 R N) B) d+ Y5 u其中lineOutmain();是启动lineOut例程
1 t# A! C* E& N6 v8 nint lineOutmain(void)
; k( j. V2 V9 q+ o2 g{
! z l1 Q* U4 S2 g1 @ unsigned int i;6 l2 O7 g, }/ _1 w, Y3 y* p
* ?0 b$ o% `9 ]) w: N1 f PeripheralsSetUp();
& v q2 |- N5 O- f
( C, j4 }# p9 Y2 f) @! U LOG_INFO("\r\n ============Test Start===========.\r\n");
) Y$ B2 o/ q; [; b% b' x% |& w LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
2 B! G) v3 j1 k* o LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
- l6 a- Y: M1 c) D i$ b: g
% a a' r* v# v+ ?0 D9 `+ B' S for(i=0;i<229396/2;i++) X$ ]1 D- ]2 u! _) r
{/ r Q" e# t* j( E4 y3 U! }
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
) k6 D8 u2 b, b }
: P4 u) B' P/ h
9 e8 T- f* w3 D" F4 B IntDSPINTCInit();
) t" @3 s2 g6 D3 R8 Q6 S6 d. M9 F
I2C0IntRegister(C674X_MASK_INT6);
" H. L& C9 U6 ?+ y9 W$ o/ e9 x4 R( n4 k5 Q- A8 R# x u
IntEnable(C674X_MASK_INT4);
% m0 L0 A5 K9 W8 o IntEnable(C674X_MASK_INT5);
0 b3 d& K% b2 Z3 _/ P/ H IntEnable(C674X_MASK_INT6);
$ `# O( M. E. x6 h5 ?& J/ C9 X
& ]; t: U. U3 p; |- e/ g. Z IntGlobalEnable();, s* d1 N. ]3 @1 v% O! J* N
! ]# d. z# ^+ N G3 T8 x# \( z! v
AIC31Init();/ e: R# C) [2 I2 E1 M9 }& B4 d1 c
ToneLoopInit();/ s' P* e7 x a7 N. C4 K' @2 r! v
Start playing the tone looply
0 u! _+ r' F. d; g, u2 Z3 x7 Z, e ToneLoopStart();. K7 q: |7 {9 A% g `1 v
0 i5 |) v5 r u, t- l) `9 _
LOG_INFO("\r\n ============Test End===========.\r\n", -1);' Q2 Y: j) t2 r2 s- S; P
$ l/ I6 O/ J5 Q5 x
}, a+ P' T& h& P2 y- z
6 X W& e( [) Q+ P" c0 `( ^3 Z
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
3 x- v: d2 g2 s7 l* _5 k! S; ?
6 [! ]( o5 c( n! Z" r9 P
% ?2 j, b. ?! l
+ ~" ^$ {: i# e9 \2 K2 q# p. z# Y1 L: _8 h
& g! r* Y( s S5 k; d i
$ k4 p; h7 K8 `7 e L |
|