|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
% j/ w% g2 d8 d1 k% b目标:AUDIO_LINE_OUT播放声音。ad采集声音。
, X8 W. l. [1 Y- Z0 l8 j+ }8 q现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
1 u5 [& |% C& E6 A2 L( t详细程序如下:; V$ m# K9 ^' o( g
DSP侧 main_dsp.c
' O0 L( y: r* r1 f9 yextern int lineOutmain(void);
4 W4 U4 p' a( P1 A& |5 M( B* Y/ s7 `Int main(Int argc, Char* argv[]) {' I. S" e. x1 T4 ~1 ~1 b5 K/ J
LOG_INIT();
) B. s! c; E& s+ x Error_Block eb;- x+ X% |. |6 p0 C4 m
Task_Params taskParams;& \6 P/ i T$ N( h! \' @$ a; a
# f; S* G7 B& I$ f. e
LOG_INFO("--> main:");
. h1 }! m# i: z* D+ z8 J+ c% Z+ S5 t# s) i8 Z, o! {0 |: U
Error_init(&eb);5 D% {; q' S4 p( v5 z' o* p
6 n/ T8 F: H1 c7 X* f3 X( V Task_Params_init(&taskParams);; |8 f0 Z8 x+ }% W+ V$ Q
taskParams.instance->name = "message_loop_fun";
( Z1 d. F4 q6 Y+ E* L. ], K1 {5 @ taskParams.arg0 = (UArg)argc;% i8 w: Z! `$ Y0 B$ [
taskParams.arg1 = (UArg)argv;
5 k1 n: f& b0 n4 ?+ }7 M" F taskParams.stackSize = 0x1000;0 z( h$ l% d# p r1 U# _3 ~
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */% D# P1 U1 E4 K& a1 c. ~+ F) Q
0 a0 x# F1 c& f; Z) ^& }
if (Error_check(&eb)) 6 b; p/ G1 I7 Y) }
LOG_FATAL("failed to create application startup thread");
& U& k/ n. }8 t( c1 `+ m- S- E& T * n) O0 ~7 d0 i" q1 H) k3 M
lineOutmain();: s4 j$ |4 |6 j5 Y; b, k1 a3 B
BIOS_start();
1 w# T4 X! |5 }1 E LOG_INFO("<-- main:");
% l- ]! U' L* q- {- i return (0);
/ {( d. i0 o7 t}' {& x, z5 \7 H. Q% F" ^7 A
其中lineOutmain();是启动lineOut例程
" {' Q. N: @. B# T! N2 k! rint lineOutmain(void)- D5 W8 J; m% w3 q: u, x) X
{
& C2 R/ s K- G) f unsigned int i;! m& h! ]; L J
! U( ~! V4 m4 u7 q! O/ U0 u0 T PeripheralsSetUp();" ]% N0 F; w- l/ n) w+ X
$ j! @ b3 S/ q8 s& X7 ~6 } LOG_INFO("\r\n ============Test Start===========.\r\n");5 N# S3 x- c- w: a# l% u% d, \; \
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");9 |) Y! v0 t7 \; g u' p
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
0 ^6 } x9 L) C: a
% R% T2 s8 ~9 f* w( ^% d3 E2 ~ for(i=0;i<229396/2;i++)
# @! e1 `) Y* v( s {
1 b: |9 }. o7 h `' d: P) r0 N6 [3 ? toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
# [ [2 x9 h6 O- N }2 i8 ?' Q' `- ?' ]
: W$ d' r, l/ X+ L3 D+ D
IntDSPINTCInit();
; t1 q; q! v/ F$ e* p" D3 g* i {; H
I2C0IntRegister(C674X_MASK_INT6);/ @7 V& A8 Q6 G- T1 x4 Z$ J
) L/ A/ ^6 Q1 s' d! I% Y6 n8 m
IntEnable(C674X_MASK_INT4);9 A, v. ~2 Q3 O7 U4 U! `
IntEnable(C674X_MASK_INT5);, Y# [: O, b- t1 L
IntEnable(C674X_MASK_INT6);: x+ }% R! i9 i3 p8 l
: z f* A) l$ D# Z/ B
IntGlobalEnable();6 w( Y0 r3 v5 @' Q2 [" W
. x- q' K; i+ ?: u! K3 d: @ AIC31Init();- L. T; P3 F, c* s. |
ToneLoopInit();
# ~, J4 x" K5 N5 O, a) z& r Start playing the tone looply
1 n. x) v4 N0 O- t/ T ToneLoopStart();
& T6 ~- f5 q' y' z: D/ h3 ` j! q
: @* E8 P: G% l- b0 \ LOG_INFO("\r\n ============Test End===========.\r\n", -1);7 X8 J J* ]1 \
# S- a* {* C) R}
- o ?, h5 ~; A) ^4 C' Y$ V# Z9 i: s- ]7 Z4 ]4 ?6 ?0 G
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。) z1 l2 n! r4 {$ O4 p7 c1 E1 ]
! W# `# z7 ^; E' e% C
7 Q9 M. ^3 E; i. y) @
; B4 F( e& J" Q" z% x; n9 |% Z! C: N# {. I" v
; O' Q9 O: U7 Y- e
! E3 W+ w# ^( u
|
|