|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
v" `% ~4 B2 |目标:AUDIO_LINE_OUT播放声音。ad采集声音。# @& K3 S5 Y, v i/ K" w
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)9 g) K0 u) d! \) c
详细程序如下:- j( H' ^+ g0 ~* W
DSP侧 main_dsp.c( Z2 P' ?! p; y6 p1 ]
extern int lineOutmain(void);4 _1 {6 ]& ]9 l& c0 V g4 Y0 M- t
Int main(Int argc, Char* argv[]) {
: [6 C# d, S3 x LOG_INIT();2 Q+ I# |: I8 C6 a
Error_Block eb;- j! \1 M1 Z/ D, Z
Task_Params taskParams;! B& S& Q2 W: g
$ S6 \ Z( ?7 |' }4 p. ?
LOG_INFO("--> main:");2 e0 y: L% W5 A
$ }' |: _- ~/ _0 e# s2 I2 e! w Error_init(&eb);% {+ [) Z7 T6 E4 Z2 ` C+ A
2 z1 m: e) h) U) |7 [: E* K" S8 `1 H, y Task_Params_init(&taskParams);4 y& [( E8 _6 n) M/ [: S
taskParams.instance->name = "message_loop_fun";) r4 o& f+ \4 N; E$ Y7 `
taskParams.arg0 = (UArg)argc;
! I9 G7 }! f$ L7 g p( k taskParams.arg1 = (UArg)argv;- D# I/ Z: ^' @: }3 X
taskParams.stackSize = 0x1000;
& y+ A- `! N0 j7 ~ Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
G/ t) A! o" |2 u% h- R* F# c- p2 q7 O# O. o4 n, A4 k
if (Error_check(&eb))
7 q/ R& U2 d0 s/ }6 {" ]% f LOG_FATAL("failed to create application startup thread"); M0 H% @5 I% X) s
# X; }( D& P( D: Q# l lineOutmain();& V1 r0 c2 \0 s7 m! e
BIOS_start();# ~; f) [ I5 _! c1 O& Z9 v7 E
LOG_INFO("<-- main:");/ {+ g- u$ E9 y, F* B, t! a5 ~" E1 _
return (0);) `5 R# ~$ L, i8 p/ P
}
# }9 P X6 t* ~其中lineOutmain();是启动lineOut例程4 h7 T* Z0 ~8 c2 i
int lineOutmain(void)/ w0 B# C! L: ]; u; x( n
{/ `" [9 \8 y% u w5 k
unsigned int i;; m% Q8 I- }( y6 ~" D
5 |! s- [$ O8 T( Y @- d' n PeripheralsSetUp();2 N% ]: i5 f5 k
' d; p6 M j& Y, \
LOG_INFO("\r\n ============Test Start===========.\r\n");1 x) n! b- v; Q' H
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
- ~* y9 r6 O1 m# J4 k" O; A LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
! E! T( q& }# g5 J
* E5 g& `3 }8 T8 ^+ g9 N; a X- { for(i=0;i<229396/2;i++)' |* O) ~; |% M. ~6 G& |1 ?
{
, I! a) _$ O- d1 Y1 I( i" | toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;2 y' R2 S! \% V5 a; f
}
, g' |* J7 A9 j* c3 q" ^/ t( y
+ r( Z! L; a& ] z0 [; c( |7 f IntDSPINTCInit();
! |2 N% ]' P# \ C! T. P6 e3 e/ D7 w0 U( T, l" p' C
I2C0IntRegister(C674X_MASK_INT6);2 E5 J- a& [6 ^) q. d
. F3 V% s) x" `- v
IntEnable(C674X_MASK_INT4);
1 z6 T/ N" b6 d3 Q3 y: o IntEnable(C674X_MASK_INT5);
U& O& ^# L2 d4 d5 @8 f* t( R IntEnable(C674X_MASK_INT6);
" X3 a1 r2 x& i: ^- D8 A4 x+ J, u9 S/ {" W0 Q. _# }' S- @
IntGlobalEnable();
/ o0 ]' {( ~+ l, X S: x/ _. M/ h0 o' f+ v* w
AIC31Init();% r- j- s3 x0 Q& C3 X. V* w" ~ v4 f: _. R3 w
ToneLoopInit();
* [8 ?* Q3 A$ ?) Z% h Start playing the tone looply5 ]- z! j( y9 G( l* t# t. Q
ToneLoopStart();
) d9 G. ^( \2 u' e* E; o( [& v# O9 U8 J0 l- b# D+ ~5 H0 J! K8 E
LOG_INFO("\r\n ============Test End===========.\r\n", -1);
: L8 z4 k& [+ I L( I' g" C% W9 r
; }( j4 F# n) h8 P( r- W) u* y}5 i4 P8 Y: p$ [6 a" ?. V& d
% p4 S Y* O1 s' L& b; |: s: c2 R0 F从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。; `1 y% H! `% c- N; Y; y/ C
: S5 h0 J3 e9 {' E. o A) [9 L
2 s. H/ V2 |( C+ |! g
3 a7 R$ Z5 `& L. B7 { b( p8 Y6 \; A% n- u/ N+ r0 W7 c
, B2 E0 {% d" \
8 O. Z4 e: x/ }7 Q$ I |
|