|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
+ W# E* S. a* V; B- z目标:AUDIO_LINE_OUT播放声音。ad采集声音。$ l" x d( j9 c i2 f
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)2 U9 w- y) e" ^, D$ j
详细程序如下:2 q8 [/ L4 D) P1 M/ M" t, Z! u
DSP侧 main_dsp.c$ f0 Z6 F# [" b3 [' [+ z2 |, u
extern int lineOutmain(void);
/ Y: r6 S0 E. C* t/ w3 z xInt main(Int argc, Char* argv[]) {1 E" S1 n) `8 d3 n3 v
LOG_INIT();
; a) k8 _9 {) N2 d9 o Error_Block eb;
+ d) U. P! k# L0 A Task_Params taskParams;; H* p0 q3 D0 c# x4 w
& W$ P/ ?; c% g7 ?8 w" J
LOG_INFO("--> main:");& [- u' @# V" v) \: ^/ }. u
* R' `6 b; V6 l+ I8 E
Error_init(&eb);) l# A" |& e. R; n+ B$ }
3 y3 k2 k# H: _- k# V- \ Task_Params_init(&taskParams);6 p5 q) b4 Q& z5 K' v! [* F$ H
taskParams.instance->name = "message_loop_fun";* K+ J( ]; L/ ~9 K' V1 [3 J+ \
taskParams.arg0 = (UArg)argc;, I) W4 ?- H7 J) K# T4 ?# m: ?: E& p
taskParams.arg1 = (UArg)argv;
8 ?$ D9 p% D; _; g% e o) |, k taskParams.stackSize = 0x1000;( M0 C( G e6 S+ q1 e. G- j% \
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
0 _0 U! h. e) `. G) c' ]+ P
2 ~! I" f) Z" H' H& v& ` if (Error_check(&eb))
7 @* [9 ]6 t0 I6 O3 x LOG_FATAL("failed to create application startup thread");
; f4 [, u, M/ i% u' t8 z3 \ ; J# A1 P2 M8 T( x ?7 D
lineOutmain();- I- b/ v0 i3 L6 {
BIOS_start();
8 a- g/ x+ k3 K# f LOG_INFO("<-- main:");
/ t5 z( P; _5 A1 q2 a8 ] return (0);
% h& i% g+ S& O- v, X}6 `2 B4 m- I* |; e: G
其中lineOutmain();是启动lineOut例程
& A# G( |% G- _& mint lineOutmain(void)9 d& O; r" {$ v {% c; @
{' ~* B) \2 m, y5 e
unsigned int i;
: s/ y7 @) @. C$ ^2 I1 F3 m O" X1 S1 A9 D' Q3 r5 W K
PeripheralsSetUp();
, O( F4 R T* A. u
5 ^# @/ x( O* P9 x* } LOG_INFO("\r\n ============Test Start===========.\r\n");
9 K$ C, A$ E1 m+ s) |; f LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
! E& a: r9 p% n' n7 ?# |" d LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");/ L. Y/ ]8 Y: ~
: E+ G% W @/ y9 c3 Z5 ^/ w
for(i=0;i<229396/2;i++)
; U% D+ K5 n X {9 n, Q0 z; |( @$ k/ ?
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
! p1 z; B1 g( a: A& L }
: |9 }3 J; y) H o" V! I" D) c5 W d* S2 A; G
IntDSPINTCInit();
& R9 d1 y8 p- L' m# @/ f
" ?- y) s" Q5 h! \8 w; k I2C0IntRegister(C674X_MASK_INT6);! J5 ^) T2 K$ Q* D# F6 w& b! Y2 v
, k4 x+ @% ~ C+ q$ h IntEnable(C674X_MASK_INT4);: d# }0 Y" W! P7 C
IntEnable(C674X_MASK_INT5);) e1 a- l' J. i# R
IntEnable(C674X_MASK_INT6);
5 {$ c8 h- C: N( J4 {) `1 M/ w# X9 K8 H3 q( a* b
IntGlobalEnable();) i* P. `2 x. b" N1 V
0 M+ @* t ]6 k* e; x4 c' D AIC31Init();9 S( B- l$ k8 }" S% a2 A
ToneLoopInit();
2 B" P# V: y6 b; Z }7 a+ h' o Start playing the tone looply9 R, u1 d5 R. K
ToneLoopStart();% M ^" b+ b# N7 l- X V, _5 {! E
" Y; ?9 J. A: F2 ^ LOG_INFO("\r\n ============Test End===========.\r\n", -1);( M( B& h# X+ J v+ u
8 f) |$ i6 L$ @ K# s( i8 v}/ A9 q5 B( l+ Y
. H7 R+ @1 a" ]: c" w/ W9 t
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
+ X3 x0 P) C) W- l# e
* {! K& J* w* `6 z, `4 I! @
& @/ l F' i1 i" }8 E* I1 C
3 F& _( g6 f9 ?; [) d
7 k% m1 O# I. R/ ]. M% p5 `+ y+ S: { ^& V
( D: Y/ F2 e% c$ k+ j# }6 N |
|