|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
2 }1 G' v) q! h' r C& e目标:AUDIO_LINE_OUT播放声音。ad采集声音。- b) Z8 c* u' L! n2 h4 d
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)' a% N% A: N4 @5 D4 r
详细程序如下:5 d8 S6 X- I- {" }; b' E1 _! f) [
DSP侧 main_dsp.c
4 v/ Q# C4 X# }4 Iextern int lineOutmain(void);- Z9 {9 b6 ]9 [- K8 s
Int main(Int argc, Char* argv[]) {. M$ J' s. @. G- ]. N+ D
LOG_INIT();4 B# I' Q. |+ @
Error_Block eb;
! ?+ @4 q# p M# S5 [ H# O Task_Params taskParams;
: w; O% ] q! c7 V/ S+ n8 o, A7 \" @& u% @7 f, N. J
LOG_INFO("--> main:");) e3 K2 p1 F! x' V+ c
" P5 y2 t+ q1 I' F& C _, w Error_init(&eb);- r. g; Y' @1 N+ h
& t/ x" } U( Q Task_Params_init(&taskParams);- ^3 K6 Z0 q+ d7 n6 r5 B
taskParams.instance->name = "message_loop_fun";
$ t! o( m- D4 @' v3 V! F% e ` taskParams.arg0 = (UArg)argc;
- K P) L+ i% N: N6 O. m6 | taskParams.arg1 = (UArg)argv;& c6 `1 v4 [8 y: i
taskParams.stackSize = 0x1000;
" I: y: m" u& ?& M Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */0 r1 T. k) ^& C* L4 }& i5 t& g
2 l9 H( k: [+ Z5 d, l if (Error_check(&eb))
5 }2 }$ M# v2 E2 F LOG_FATAL("failed to create application startup thread");
4 D( \4 x' B) U' Y4 ~9 `
; t* Y, c: v! i7 ^4 C/ `: Z lineOutmain();
. U$ ?$ n8 e$ O3 W7 c$ D( E! q* `' W BIOS_start();
8 D2 o1 M, }, I LOG_INFO("<-- main:");
% k$ D9 ]* P5 O return (0);
; q, Z1 a) `0 u% q" G}
' m0 Q* u, \/ W0 B/ X* }/ t其中lineOutmain();是启动lineOut例程 I9 O; Y, W. X. U0 S9 M; N; |
int lineOutmain(void)8 R$ r+ K: `9 W% b
{% ^! {; B& Y+ _( a' R8 w
unsigned int i;5 u2 p6 u( ~" C: K
P+ V0 A0 E' Y& o8 ^# U ? PeripheralsSetUp();$ b1 u) |0 a+ ]( R; G6 @
# M: M" X: ]( {4 y& C. X LOG_INFO("\r\n ============Test Start===========.\r\n");
* ?6 L8 r% ~* V& P LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
# }9 c) |" A6 s, S% O# ]! W. u LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");1 q% B3 G; e9 g
i) F8 i" |2 N
for(i=0;i<229396/2;i++)
5 B9 _$ P9 n! j' I V9 A c0 r {( X$ F2 X* S. g5 r
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
% c8 W3 o' T' ? }
: O2 D4 Y: S; E( T
( Y0 C4 D6 X/ v) F0 ?* P/ v% ] IntDSPINTCInit();
; M9 B" i6 ` |+ {2 t* F% A3 e6 Q+ W+ Y# H6 d X% v7 c \
I2C0IntRegister(C674X_MASK_INT6);
) n: S4 k( U# p/ e- ^" F7 q' F X& Q
IntEnable(C674X_MASK_INT4);
4 H7 L# @/ o: A4 B1 B1 U1 D, A IntEnable(C674X_MASK_INT5);3 `* n, ^$ C8 Q2 _
IntEnable(C674X_MASK_INT6);0 x! |0 T8 n6 h: Q
4 M( T) G. K {: r4 i& I
IntGlobalEnable();8 R0 |% V' Y( }1 _
5 u5 y! R- I9 L) y+ _
AIC31Init();
j% T! J( ]; k4 } ToneLoopInit();3 {* w9 n( V P S3 `# ]
Start playing the tone looply" _4 y8 K6 K: w' L- Q* I+ |
ToneLoopStart();
1 F) U/ S7 [: i+ x6 F! H1 u, F8 _' A5 e. y9 n% U% Q4 M
LOG_INFO("\r\n ============Test End===========.\r\n", -1);3 r8 j [. H5 y( b r
% i4 \1 r) A& b
}
, _5 ~* Y6 V& p- y) D1 R- ?& ^0 S! D" |) X6 o- _
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。+ |; H; ? z/ q' @
. Z* j4 `# B! X( M o5 l/ O5 m/ x/ ?* l8 l1 ~8 M0 A: T
, W( t* S3 ] T/ }% ~" L5 s! p B' g9 p4 N3 J
- ]2 g( |& O3 c% O4 p
1 |* @' N5 a" e |
|