嵌入式开发者社区

标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突 [打印本页]

作者: flh    时间: 2015-3-3 08:31
标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
# V' p; k+ f& L7 M1 e6 T- ?4 a目标:AUDIO_LINE_OUT播放声音。ad采集声音。
/ p# r* w4 w! A% Q# {9 R% P+ g% f: ?现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)& q* v" ?' X& u- @) E/ F
详细程序如下:* x) R: F1 o" Q0 `+ s9 E! [
DSP侧 main_dsp.c  g$ K' g; K* E/ @
extern int lineOutmain(void);
* ~4 K- v( _' |Int main(Int argc, Char* argv[]) {% B7 T& ?1 f, U. k$ P
    LOG_INIT();
' u8 J; V8 g% D' A) l: p    Error_Block eb;7 j0 U. Y/ s+ l$ k3 j4 a
    Task_Params taskParams;
3 s7 f; l# M! z6 @! l: X- [
  P$ s7 @- w4 x/ h; U1 l- M) p. P9 V, h    LOG_INFO("--> main:");
. q! \( v) F- E$ i" j2 `/ S* I$ p! `6 O: o' I7 V. x
    Error_init(&eb);
# [3 S, {. l) Z$ E, l* A6 K3 h  l' ^! ~- g3 U) L6 M: ~- z3 F
    Task_Params_init(&taskParams);
# L8 d# W; @1 A5 _( B    taskParams.instance->name = "message_loop_fun";
- i. f, q9 j9 d! M0 {    taskParams.arg0 = (UArg)argc;
$ Z  O- C& o8 K9 @" y: [; y    taskParams.arg1 = (UArg)argv;& x' L. @& X% J# O- z. Y
    taskParams.stackSize = 0x1000;  M3 V# q( L9 f" e) |6 b( E" k
    Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
! U0 o7 D- w9 s) O! U' I- e/ n% Y- ?- |0 y8 f
    if (Error_check(&eb)) 5 R( n! c; Z$ L! t0 r4 O) x
        LOG_FATAL("failed to create application startup thread");
9 S* h! y: }% H* e6 Q' m' d       
7 \' K5 B' J8 \6 Y) K) P    lineOutmain();4 j# {: R3 R& |/ z5 W% x5 G
    BIOS_start();# V. @. c% ?/ E- ]: y9 o
    LOG_INFO("<-- main:");3 o' A3 D8 v% P8 V) z
    return (0);' R; K( D) ]: n! J' G/ M; k) _
}: x3 T; r( g6 ]; c* Q3 ^
其中lineOutmain();是启动lineOut例程! q. h- Y9 z8 \
int lineOutmain(void)2 `$ Q/ I) k$ }" h$ V2 |
{
/ a2 v" h: ~, G( J        unsigned int i;
6 C& p3 O: k+ ?$ h2 H
1 y9 N# m, |% I    PeripheralsSetUp();
6 z5 P5 F9 c" C! o6 j
" E8 G9 H/ h& K! a: t% V( E    LOG_INFO("\r\n ============Test Start===========.\r\n");' b" @7 K3 @/ F% i! O5 D5 P3 H& ^
    LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
6 a" i% Y0 u6 l4 d3 B8 _. s5 ^    LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
2 `$ e* u, x* L
2 `4 e' d& r  W- i" Z0 g    for(i=0;i<229396/2;i++)% I( {& K8 c& R! W- x
        {
4 o5 n0 w! t. K; b4 ~- \& V; n# U                toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
' t% q( K2 a( {$ O        }
& O! Z5 t8 H' h: A6 H3 p% {
. h- J" M9 e, z9 h( ^: i    IntDSPINTCInit();: {) L, P/ `: ]9 M( c
7 B1 w% ?- D* L+ V; A8 p, q3 P2 q( ~
    I2C0IntRegister(C674X_MASK_INT6);
" V+ t4 B1 [# Y9 A  ]. h( t3 Y8 L0 T& h
    IntEnable(C674X_MASK_INT4);
+ p+ Q1 |6 u. B3 S0 F' i6 R+ K    IntEnable(C674X_MASK_INT5);
+ m$ q. s. I( B1 y: L* m    IntEnable(C674X_MASK_INT6);# {. _" H  @% r/ w
1 S6 _2 w  v9 l. K! H
    IntGlobalEnable();
! o; k9 H4 b- c' p
3 I+ v7 R2 n- ~  T7 j    AIC31Init();0 f+ m9 q1 [3 f4 d# L# U) Z0 G
    ToneLoopInit();
* e) W7 d1 u/ H% n    Start playing the tone looply+ ~. j7 c* ?" l  B1 k0 e
    ToneLoopStart();
+ K2 [6 j6 l8 U% Z1 c0 L' Z. y
6 ~9 ?2 d; ]/ B/ I, G, q    LOG_INFO("\r\n ============Test End===========.\r\n", -1);
* Y- C+ F/ |  a/ S- |! ~  M* W0 U* ?. ~7 ~
}0 p5 Z" o/ Y: R$ P
; A1 L4 C: l& B3 l
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。
& X: [7 R' I/ d5 p, X
. v# o% c* j0 V0 x; q" u" C8 H( \/ P1 W& Z$ ^

4 o: ^" m/ K! s' {; B) q! V7 m0 h

$ Y4 o& J6 T& a( O$ ~% t
% ^& [8 \0 u4 ^
作者: 希望缄默    时间: 2015-3-4 08:57
请观看视频教程  18-1-硬件抽象层-硬件中断
4 c  P1 T! B) g% B
; \; J: I6 h0 A( f% M( x9 \# i在 SYS/BIOS 中断应当使用 SYSBIOS 提供的 API
作者: seadistant    时间: 2015-3-4 13:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: flh    时间: 2015-3-6 21:54
按照seadistant的方法:把IntDSPINTCInit(); 注掉,AD无法正常工作。lineOut也没有声音输出。请问如果两者有中断资源冲突,修改哪个地方(AD 或lineout)使两者能同时使用?
作者: seadistant    时间: 2015-3-7 14:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: Lewis    时间: 2015-3-7 16:44
看一下AD7606和音频使用中断时,是不是映射到了同一个中断
作者: flh    时间: 2015-3-9 08:28
谢谢楼上提供的信息,我现在很想知道,tl的光盘中是否有这样,在用 SYSBIOS 调用line out的demo。或者能否为我提供一个这样的简单demo(能用,不冲突就行)
作者: 2532609929    时间: 2015-3-9 10:42
目前没有SYSBIOS下的音频驱动,不过移植过去不难。我们公司很快就推出StarterWare程序移植到SYSBIOS的视频教程,敬请留意。
作者: 2532609929    时间: 2015-3-9 10:42
目前没有SYSBIOS下的音频驱动,不过移植过去不难。我们公司很快就推出StarterWare程序移植到SYSBIOS的视频教程,敬请留意。
作者: seadistant    时间: 2015-3-9 11:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 希望缄默    时间: 2015-3-9 21:54
2532609929 发表于 2015-3-9 10:42
! Y1 w9 Y# t5 C1 e; p" ?目前没有SYSBIOS下的音频驱动,不过移植过去不难。我们公司很快就推出StarterWare程序移植到SYSBIOS的视频 ...
( D0 k7 j2 T9 ]5 q& l  b
有音频驱动的
作者: 2532609929    时间: 2015-3-16 23:42
刚刚查了用户手册,是有一个LINE->LINT OUT的SYSBIOS例程的,请去看看
作者: flh    时间: 2015-3-17 08:33
当前SYSBIOS的例程,关于line 的只有audio—line-in ,经测试可以支持环回播放,有两个问题请教1)Void main(Void)7 e- x6 i4 C& a$ C
{
* ?; L# `3 O; L/ ]6 j& V% B    Log_info0("\r\nAudio Sample Main\n");
9 V; [" u) R+ a- A) s% j& ]# P' L7 e/ G' x
    /* 使能mcasp引脚的pinmux    */3 [* ^  K: w4 J9 K3 j
    configureAudio();
3 v. Q- x0 p; B; |7 d  
& s- L6 }  Y8 k! h" ~) `# t    BIOS_start();
. Y7 Q. T( Y# l; K( g  v2 n" C$ u, M% T5 R5 B
    return;
) z# h3 k) \9 t}
$ R& [5 d- \* x  f7 D- V" z9 V7 d函数configureAudio()看不到实现,不知道调用了什么?   2)缺少一个资源释放的函数,使其能反复的播放停止。
作者: flh    时间: 2015-3-18 23:16
configureAudio() 的实现在哪里? 和io.c 中函数的调用关系是什么?
作者: Lewis    时间: 2015-3-19 00:11
(1)configureAudio()函数的源码要到biospsp安装目录下找,在biospsp_03_00_01_00\platforms\evm6748\src\audio_evmInit.c下,其实就是初始化了PIMMUX.
, y8 e5 h# d& d. v# }- J(2)反复播放是在audioSample_io.c 的Void Audio_echo_Task()函数实现GIO_reclaim接收数据GIO_issue发送,你想要它播不播放数据那就完全由你控制了。: H; {: g0 ]* a- b; J# w
(3)至于你要释放资源,使用biospsp只需调用GIO_delete注销驱动就可以。
作者: flh    时间: 2015-3-20 08:31
今天看了configureAudio()源码,正如Lewis所说就初始化PIMMUX了./ v( h/ n: b) ]5 k' a8 {' b
Void main(Void)& z* _, [5 l# o  ~% }3 c" o
{, j- Z; V* O& D, N4 @, l
    Log_info0("\r\nAudio Sample Main\n");- G2 |( a& T% C7 W
0 G" n9 l( \4 a$ u4 Q: |- s, ]
    /* 使能mcasp引脚的pinmux    */
- W7 ~+ M0 ~: P, O; v! y    configureAudio();) \2 F3 }8 o; G/ N# E% L
    BIOS_start();
' x* f5 M- d/ i    return;
1 o. ~1 E, I! x  i/ F% V2 v( ~# m! w}
8 p, j0 w8 o' C0 g1 _4 s但测试中的main就调用了configureAudio(); 就能换回播放了音频了。Audio_echo_Task()这个函数谁在调用呢?




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4