|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
1 l' {/ p" q$ z+ V& I目标:AUDIO_LINE_OUT播放声音。ad采集声音。
5 }7 o# I6 I* c, ^5 ~' b现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
! u( \! _% L! o% n, u0 ?+ u详细程序如下:1 @1 Z ^6 r7 T/ ~( u" p6 f
DSP侧 main_dsp.c% m N! G5 h4 B: u8 N9 e
extern int lineOutmain(void);9 J% I+ _( J Q2 O
Int main(Int argc, Char* argv[]) {4 P5 d' d/ `* M
LOG_INIT();' J2 M9 E2 n& ^+ H, Q$ L
Error_Block eb;
" ^" a+ ^7 o7 Q1 d" ] Task_Params taskParams;
/ Q' B# p1 }% b; @) u" n
0 q, {' [) g4 z% X; O, r4 j LOG_INFO("--> main:");8 \! i& u5 c, Y5 g
9 V% t$ m5 n: \5 U4 X6 ~ S- D! l Error_init(&eb);( p/ u5 M$ N5 |" l
! x3 D0 [$ |8 c$ j
Task_Params_init(&taskParams);
3 i1 W8 ]1 ~5 h* M9 M taskParams.instance->name = "message_loop_fun";- g; V7 w2 d$ G
taskParams.arg0 = (UArg)argc;
$ Q6 @4 X& ~2 Q2 g/ b* W* R$ m/ S taskParams.arg1 = (UArg)argv;3 B% \! l5 v0 y" u# K: A0 F
taskParams.stackSize = 0x1000;
& d6 e4 ^& x5 k* ]' ]* W3 `0 _1 m Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */) o$ I( ? p/ K2 j3 |" I
" Z& f" L0 t. a# g1 k
if (Error_check(&eb))
; i0 J& q. b! s! [ LOG_FATAL("failed to create application startup thread"); 5 O2 y. e+ s: i$ d
/ z7 K$ y, ?/ [3 s" P lineOutmain();) ]- ]# u5 ^/ p- K- _2 q
BIOS_start();6 P! O. | u1 v5 o5 B
LOG_INFO("<-- main:");7 ?' N. c, G0 e R/ B
return (0);5 g# L* r( o1 f
}% y; _/ b. P9 z, h
其中lineOutmain();是启动lineOut例程
0 |$ A! K; b) ]+ c1 j& g0 kint lineOutmain(void)
$ @3 q2 h3 T2 `{
- e/ D( s7 }1 K unsigned int i;" O/ t2 w8 w, g4 U3 i9 p% ?4 m
! W# ]: U# |' H* k PeripheralsSetUp();
4 p3 d7 J8 i8 [7 ^; u7 n% |
' y9 s5 i, `7 z! { } LOG_INFO("\r\n ============Test Start===========.\r\n");
+ Z' ]- }" m: ]- T7 s* g LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");; r$ p. Z- M$ Y) F0 X$ |4 X# b
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
2 j+ E+ \: R1 ~, L, Z' ~
% y& M* A J' z4 X0 d for(i=0;i<229396/2;i++)
! g6 w ~8 M/ t {
# P, r( a, c5 T2 a4 l toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
& j, k2 M) G+ q9 ~% f" M+ v! ^ }
" k* f: p% Z6 U; \/ d9 ?) O Z, a. Y0 Y( v5 {
IntDSPINTCInit();
T" D$ _% [( Y3 R: @( k
9 z' ^$ V) O$ r9 x) X' J; n1 v" w I2C0IntRegister(C674X_MASK_INT6);; L' }& p; V0 w; a% H! A0 Q
* o4 t7 z# `7 s6 |& |8 O IntEnable(C674X_MASK_INT4);
: {3 }. B8 c8 L: l1 ` IntEnable(C674X_MASK_INT5);/ f: w2 `+ a7 }# v
IntEnable(C674X_MASK_INT6);/ D: h; U! T/ G- s+ o7 q, k/ o' R
/ G: O. W! h+ G M! z IntGlobalEnable();
2 T& u9 G, R# R
* V7 a: m: t3 Z AIC31Init();
; \8 D! \2 w7 D( h) ~4 ` ToneLoopInit();* h3 k+ K0 Z& T/ ?! a( u
Start playing the tone looply
- f' M: Z' B; M% C) V; Q ToneLoopStart();
$ L) N( p" c& ?- ~1 W/ {0 B/ G& I7 g3 x7 s/ j
LOG_INFO("\r\n ============Test End===========.\r\n", -1);
4 F4 A+ H- q T* u5 r7 l* h8 c' Y+ M: z2 P5 L
}
( W. \$ O* l5 @# n' `, G: K" N) u- T8 p
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。4 P c% j$ [# V; D' T/ [
# ~ ]/ s8 L1 N- G; I% G8 t" V
' M* V' O3 v0 l F( s e" r1 y! l' t$ Y; g( s' v% c
5 ] g3 s: H5 ]! |
4 j) R# J0 E' }) Y
: g* f- {" y9 H) P; F5 x |
|