OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9554|回复: 15
打印 上一主题 下一主题

OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突

[复制链接]

2

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
跳转到指定楼层
楼主
发表于 2015-3-3 08:31:16 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
操作步骤:将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; @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

2

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
沙发
 楼主| 发表于 2015-3-6 21:54:03 | 显示全部楼层
按照seadistant的方法:把IntDSPINTCInit(); 注掉,AD无法正常工作。lineOut也没有声音输出。请问如果两者有中断资源冲突,修改哪个地方(AD 或lineout)使两者能同时使用?
回复 支持 反对

使用道具 举报

2

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
板凳
 楼主| 发表于 2015-3-9 08:28:55 | 显示全部楼层
谢谢楼上提供的信息,我现在很想知道,tl的光盘中是否有这样,在用 SYSBIOS 调用line out的demo。或者能否为我提供一个这样的简单demo(能用,不冲突就行)
回复 支持 反对

使用道具 举报

2

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
地板
 楼主| 发表于 2015-3-17 08:33:16 | 显示全部楼层
当前SYSBIOS的例程,关于line 的只有audio—line-in ,经测试可以支持环回播放,有两个问题请教1)Void main(Void)
, a8 z7 f) s0 I. @9 z/ \{% K$ ^$ n4 @! X8 A
    Log_info0("\r\nAudio Sample Main\n");
+ ?9 c$ j/ N5 B: R* v, {' b7 D* K$ Q& K# U
    /* 使能mcasp引脚的pinmux    */3 L  i$ j7 g' ^8 M
    configureAudio();' a$ J. n$ X# y+ V* T
  
' T+ {8 u4 s" ]& f2 `    BIOS_start();& q( |  `' z" R% o# m2 w, H

! o: C$ g2 v+ [* ^8 T$ R# p    return;6 ?& `9 d5 j, g7 P) e9 [& d, e
}! y) d6 s) t- g; c
函数configureAudio()看不到实现,不知道调用了什么?   2)缺少一个资源释放的函数,使其能反复的播放停止。
回复 支持 反对

使用道具 举报

2

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
5#
 楼主| 发表于 2015-3-18 23:16:30 | 显示全部楼层
configureAudio() 的实现在哪里? 和io.c 中函数的调用关系是什么?
回复 支持 反对

使用道具 举报

2

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
6#
 楼主| 发表于 2015-3-20 08:31:26 | 显示全部楼层
今天看了configureAudio()源码,正如Lewis所说就初始化PIMMUX了.
! _0 S% B/ |- F0 K9 J5 C4 KVoid main(Void)
, c  M/ ]! F- M) I{" C% X4 F! P  d2 J, L
    Log_info0("\r\nAudio Sample Main\n");; _# {( M8 p: f8 }! G4 p& G
, |, L4 w, a+ A1 @$ j8 z0 K: I8 [
    /* 使能mcasp引脚的pinmux    */. M! y' t/ ^, l- q; R  V
    configureAudio();( j  x* E/ ?! f& \  Z* I- j
    BIOS_start();! s; T6 A" q& X: x" i0 d
    return;
4 O, @7 J5 L% n$ e: h0 Z}; u6 y- v- s' T5 t8 }
但测试中的main就调用了configureAudio(); 就能换回播放了音频了。Audio_echo_Task()这个函数谁在调用呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-2 09:05 , Processed in 0.038837 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表