|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
! \9 q1 Z$ B* @8 R# D4 _) K0 C目标:AUDIO_LINE_OUT播放声音。ad采集声音。! }2 w" @5 X' J7 S( ?
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?). G0 R, q7 F) p3 j
详细程序如下:
' Z1 e% I% a4 ]( K4 _4 R1 ~DSP侧 main_dsp.c3 T! c; e- \3 n( g
extern int lineOutmain(void);
9 s' N+ Q* T) ~7 _7 X+ GInt main(Int argc, Char* argv[]) {
3 w1 ?% \+ o. i& S5 N# _ LOG_INIT();0 H) _, Y6 S# b) Z9 C
Error_Block eb;, r) s1 |/ h: A
Task_Params taskParams;
3 @: H( m3 \/ c4 J6 y9 H' Y* x; X! C3 k! c! r2 r
LOG_INFO("--> main:");/ u1 {1 {3 N) E/ x, I
2 F' C0 h$ V+ A7 h/ C F Error_init(&eb);! ]! Z4 E. R. W
3 B- T" ?) J, D! n. S Task_Params_init(&taskParams);! f+ T C* @- q4 w
taskParams.instance->name = "message_loop_fun";- [5 E. u) l$ \2 c/ l. x1 Y
taskParams.arg0 = (UArg)argc;
/ s6 ? @; v/ \2 y2 u taskParams.arg1 = (UArg)argv;1 W9 v" _5 K" ?
taskParams.stackSize = 0x1000;7 [* r' [" ^, D
Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
1 d4 ^1 G& q3 a* C4 @ @. i
! w% o2 `! k+ E1 R) j" {& w$ W if (Error_check(&eb)) & O. G" I5 q+ t. M* m3 w' q
LOG_FATAL("failed to create application startup thread"); 5 d7 n( C2 e( S- ]0 O8 ^
, p4 T6 f7 [- H1 W, ~' H% q. o
lineOutmain();1 r6 q& H6 `9 o* ]6 P# S) S5 d
BIOS_start();0 }6 P0 ]1 h0 H- X" |& s6 n
LOG_INFO("<-- main:");+ i3 F. V5 n& k* {, w! V& w! o
return (0);: v2 F B2 H6 I& Z& V- } e
}
( v8 a/ R* l9 }其中lineOutmain();是启动lineOut例程2 \& F! _1 ]$ Q* f5 ]
int lineOutmain(void)' U. G1 @! W" Y M2 r" G) w
{
2 \. ~8 B. T0 Y! `9 ] unsigned int i;
) V" f: k# s9 {( }' R
( n) v9 f; m6 N& h. P" M; | PeripheralsSetUp();. j# c( D% Q- c$ Q) p
+ p! [6 D# C0 b W1 h
LOG_INFO("\r\n ============Test Start===========.\r\n");$ S6 f0 z. z1 l+ p6 R$ R8 d) j! h
LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
. c! H1 n6 @: r& _! b LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
/ s2 Q: U; _6 m" u2 u. h
3 e; ~. S0 p, ?- T for(i=0;i<229396/2;i++)
q3 E4 ^2 p! } {4 c, t4 u. C0 E" [, B( d# E o
toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;/ T7 S# }$ z6 S4 n$ j' e I
}$ e1 e9 ?9 o. h2 a. q4 u) _+ Q
+ }; m0 O4 G0 u& v/ C IntDSPINTCInit();4 `* }+ Y( T5 }7 U: f$ g9 ]
/ m; s' R) C3 ]7 f6 {# O
I2C0IntRegister(C674X_MASK_INT6);
6 _. U- R% W5 M) Y- p6 |2 q0 B+ d/ ^- I; N5 A
IntEnable(C674X_MASK_INT4);) i9 G: J# V4 |* K
IntEnable(C674X_MASK_INT5);
' V" R) }- b) a0 Y IntEnable(C674X_MASK_INT6);% W+ ], d# u% ~: v. e: O
$ s* k, R2 ~( ], w& ^
IntGlobalEnable();6 {8 ?. {& J! U" G3 Q
) f, B1 D& b. Q5 d3 q/ `8 F4 _
AIC31Init();" A7 `$ c0 `0 B1 o( y
ToneLoopInit();, P9 H% M7 o; d" k
Start playing the tone looply
1 e$ Y+ Z4 a. l7 l% S- w% V& \; c ToneLoopStart(); W$ I8 d3 u6 o8 _
3 t1 `( W. e4 j6 @ LOG_INFO("\r\n ============Test End===========.\r\n", -1);, ]/ D" Y$ k) C
' C; s. |; h3 k& g
}
* e4 Z) D6 ^6 ]0 i# ]2 l: X
, K+ Y- a X4 K( D从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。' {6 H3 t+ l( k- L5 h, T
1 j. e1 \/ W7 ] U9 F0 Z2 n t+ v' n$ z
) I0 U2 ~6 r7 ~5 o3 l9 L% Z
$ O* Y' C6 T# x2 u+ i& H! l
: k) V: F+ [$ Q+ z
5 ^6 o' C/ A* T. O; @ |
|