|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。$ y) ^1 `' x8 }1 q( X1 T- x' Z {
目标:AUDIO_LINE_OUT播放声音。ad采集声音。
' S* h$ E8 q; W" e5 m* ^现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)' R" Z7 B4 b, [5 `
详细程序如下:
1 L: X" ^2 p9 a" ADSP侧 main_dsp.c, w; ^% A5 v7 t% n! E P5 f# {( k3 H
extern int lineOutmain(void);
( k) ^# A! l2 I; w7 aInt main(Int argc, Char* argv[]) {
8 K% I+ x3 ~/ Z5 H @ `& h LOG_INIT(); U g" q. ]9 C {* q
Error_Block eb;2 B# i, V; r- N' t- R. ]3 U
Task_Params taskParams;
6 X- x5 S0 s5 M! K3 A
9 e, }6 W5 R, m. L% D- K% } LOG_INFO("--> main:");
9 {: N- ~* x" g; v4 j2 Z+ D" W3 }% g; l v0 e7 v# N7 }8 u. h
Error_init(&eb);
; I$ H+ w q: V% C5 }; h3 w3 m% K; z% ^3 Z
Task_Params_init(&taskParams);
3 U( ^2 B2 v* p( P; T taskParams.instance->name = "message_loop_fun";6 g; Y* g7 }: J* Z
taskParams.arg0 = (UArg)argc;
1 P d! y. X1 ?3 } W+ b taskParams.arg1 = (UArg)argv;
M/ w- _4 B' D9 v1 i8 l taskParams.stackSize = 0x1000;. o9 K( @. g5 k
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */7 Y5 W3 L+ D( y6 Y- t
5 n; C4 y0 V9 U
if (Error_check(&eb))
% t+ n L; w$ r7 q- r( U LOG_FATAL("failed to create application startup thread");
' X6 `& u4 L+ h2 n0 T) D! z/ J ) ?% i2 V8 Z. b; g! N
lineOutmain();
( w$ V5 Q; c8 k: P2 g BIOS_start();- \/ }9 p/ ]9 t+ _4 N
LOG_INFO("<-- main:");
1 r8 w" ]2 J# |' W return (0);6 D" v8 _3 |3 u
}
0 @4 V4 |! d/ |" V0 u其中lineOutmain();是启动lineOut例程# A3 K5 T3 P/ E& H) U& l
int lineOutmain(void)
3 `, @$ b8 P4 L0 [' u5 {{
+ g# t6 L8 e; M, G2 k, Y7 E! N+ T. y) C$ n unsigned int i;9 j1 {% U! B2 C
, }* w8 a+ c9 G- F+ a# \% k PeripheralsSetUp();# [! p6 U% j0 |4 e9 N# l. M3 V
. K/ ~$ x: z9 w. S LOG_INFO("\r\n ============Test Start===========.\r\n");5 E, v0 X& G1 r( R& h
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");. K5 K+ c3 B. e, A+ f
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
% }$ ~* l+ M5 C! N- R
0 C( Q: J2 {. L: z# O W for(i=0;i<229396/2;i++)
0 E. K9 W( \6 N# @, Z {
$ n# w! i9 l2 I toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
( g- \! S9 F( O, ^* n5 b) d' Z }8 l- ?% c$ i- n& X
1 s* T/ R4 ^9 Q( e; h IntDSPINTCInit();* C# n C* C2 U
2 _, p* ^9 g8 H
I2C0IntRegister(C674X_MASK_INT6);/ a+ z0 P! v% @/ F& a
2 p7 `% d+ V) W8 U* D J
IntEnable(C674X_MASK_INT4);
+ N& O X- j# @1 i# R* b5 { IntEnable(C674X_MASK_INT5);9 I8 g, `4 }( I2 F+ p0 W% X3 d e8 E
IntEnable(C674X_MASK_INT6);9 A% }2 E7 ^) C( P( s) p9 K e
8 m2 `! ^& c6 y; v$ a. ~
IntGlobalEnable();
8 q4 M$ [" h& C3 K L, M4 \/ l- t- R" ~- W2 g& e
AIC31Init();3 l- e& L4 ? l- C1 a9 b' m6 k
ToneLoopInit();
2 O3 N) u% X) N) R6 u& S Start playing the tone looply2 M0 B4 q4 N# z! g- `' Q# X
ToneLoopStart();
! t% l4 E* l6 h4 k) ^% Z; P: m9 m+ {7 i: u% R5 r) I6 V7 Q5 m
LOG_INFO("\r\n ============Test End===========.\r\n", -1);
- d$ [; B3 g( e2 A3 L0 `, x
& A- `+ e! A( h# p o$ l: p( C}
& ?1 z& Z* B$ b: b; S0 S% m
9 F, l. |) t; e5 p& K( r$ Q从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
1 Z) H, E0 @$ F% B3 \( Q
; V6 w5 W: Q5 R' S5 O
& \) o0 }1 j+ a+ w4 z" {1 K
2 f x" T) s* r" R- R4 {7 A" }" d- |# g3 {6 |
, C& E: f) ?2 x3 F- |7 N; p( ~8 Y
2 ]( P6 {( L+ _, m" i |
|