|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。, G# w1 j$ v# y5 Q
目标:AUDIO_LINE_OUT播放声音。ad采集声音。& V, O2 e, W M8 a
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
* z# @: n4 \; ]# n: o* i详细程序如下:- J$ p+ M! o9 p: L) Y& R
DSP侧 main_dsp.c `- K6 w s- N' C' T i
extern int lineOutmain(void);" a6 l Z" o+ u4 u2 \
Int main(Int argc, Char* argv[]) {
7 v# G' |% {/ Q% s# ]% P LOG_INIT();
; W8 c2 T( h5 i' P Error_Block eb;
' N6 x2 r! q2 n6 h1 o Task_Params taskParams;) h6 W( x# w8 U- s& d
' U5 f$ ^+ i7 [9 ?1 X2 u
LOG_INFO("--> main:");+ s% O5 |3 m0 G
$ N, ~9 B9 r/ v3 M t# Y
Error_init(&eb);
, X/ i1 {: D1 }) P2 Y% l3 O/ Q2 d9 Q( h
Task_Params_init(&taskParams);
: Q4 T& y0 z: k# b7 E taskParams.instance->name = "message_loop_fun";
3 n; f/ M3 k7 K0 B" l5 s2 G- g taskParams.arg0 = (UArg)argc;
; Z2 Y: B; Q1 z7 } taskParams.arg1 = (UArg)argv;; T" `9 l' s& j9 d
taskParams.stackSize = 0x1000;* {1 B- P, t2 D3 N1 t, `# p
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */3 w+ x# ]+ s0 K) g7 Q
$ J) L/ ?! Y5 ]% Z! `3 K q. J if (Error_check(&eb)) 9 e+ L B9 u/ \; b, m. R
LOG_FATAL("failed to create application startup thread");
5 h: Q0 V$ [* [9 N, M7 A6 T
% V% D, {% z: f3 V' `3 } lineOutmain();
+ f' w; T) C4 w+ ?! L x( J _ BIOS_start();
( Q/ C9 [) l2 U! @' D LOG_INFO("<-- main:");
* {/ \, p m! Y2 F, x$ x return (0);
( I4 ^# a' e9 A" U}
6 B& q) _7 b/ Z: K其中lineOutmain();是启动lineOut例程/ ~6 d ~& |$ P. y% v% d a
int lineOutmain(void)
" z$ z+ z1 m2 C5 q! Z{
- U [( z) o M. D% f unsigned int i;! c1 R5 ~0 x/ b% y4 n+ \
1 J* W. Y8 G( H( p8 V PeripheralsSetUp();
* U/ U* L3 b: e% ?$ H
! }& U& q* P q! u LOG_INFO("\r\n ============Test Start===========.\r\n");
' A5 a/ h' w7 S4 K8 h* i9 O LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");% ]* ~; N5 J! q: U) Y
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
+ c9 u: v5 y4 G, M% c7 V& ^% l
" l+ N2 G# e" i0 F0 p s for(i=0;i<229396/2;i++)* q i: [6 M$ J @
{
7 g8 o. s- t) y: B1 d& l/ x' m toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
9 O0 X$ S/ S( S. n) _5 Y8 X1 U4 c$ r }
9 a' F6 M. q* `1 ` w6 ~) j) z; ?& B" C7 x0 Y
IntDSPINTCInit();
~6 _$ n. v& l
( ?9 c% c& }/ ?3 I2 k I2C0IntRegister(C674X_MASK_INT6);! [: _# H" T4 j; b2 d
. Q" q5 a, u2 }' o8 y6 f
IntEnable(C674X_MASK_INT4);1 y2 t2 e r3 C T9 D% [
IntEnable(C674X_MASK_INT5); ^. B# N. a! p- U9 k
IntEnable(C674X_MASK_INT6);& c; P- x4 ?3 f; I: s% Q3 l" R
' @. f* p+ ?% c# k) f
IntGlobalEnable();
# L! x6 A( j. ] H! P5 E5 {8 C/ \* {2 T/ n
AIC31Init();* B' b* ?7 ?1 K& _
ToneLoopInit();
7 | _6 |" {2 `' R# y# z, D Start playing the tone looply7 w& p$ c# G1 E' E! }/ @
ToneLoopStart();
3 \9 u ], d" G+ O7 v! w9 }; k9 _
; n; N7 X! N) Y* A LOG_INFO("\r\n ============Test End===========.\r\n", -1); ?1 q' j3 E2 J5 I) Y* W% a
: _% @+ p* h. @
}8 V( v. v* f1 R/ n/ _/ C! [0 e
5 E, G" Q- Q" |, h" y) H; j" m
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。/ ~+ k+ e; z' R4 Y @
: o6 t6 |3 U; T* g
& E2 Z9 i) u0 h F# }. w7 I" w3 Z+ w) D5 ]$ S* f% D
+ f& [3 O4 @0 v5 d0 b
$ c& ], U/ x! S; A9 n" F; p* M4 ^( g3 `4 U& x
|
|