嵌入式开发者社区

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

作者: flh    时间: 2015-3-3 08:31
标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
1 j2 N. o- m, ~8 a( N, U目标:AUDIO_LINE_OUT播放声音。ad采集声音。
* X! Q0 Z, [. Y1 V) l( {/ q现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)* C& h, j1 m  G9 K
详细程序如下:
7 o. ~/ S; \- T: T* HDSP侧 main_dsp.c
, C+ v# a6 r+ f9 i$ l# Hextern int lineOutmain(void);
- h3 C* a5 p2 O, S# C* F. X! uInt main(Int argc, Char* argv[]) {, Z% {: [/ x$ {! u% [
    LOG_INIT();" m6 M7 y$ m" N1 W1 K
    Error_Block eb;: [6 B  W7 S8 ^# p3 w# [) ?, M* A
    Task_Params taskParams;  D! f' i8 a. b! Z6 O: m
; J4 J  v3 J) l0 n! S
    LOG_INFO("--> main:");9 u2 N, c0 S* M' s0 k" y8 s
1 e/ w$ x8 x2 n* r- n9 a
    Error_init(&eb);
0 i. ~2 x! t0 \  H7 M9 {" l5 V5 f: A7 b5 O
    Task_Params_init(&taskParams);
! q4 f) p& o6 b5 J    taskParams.instance->name = "message_loop_fun";
" H- `& x  S) R6 l6 i  _    taskParams.arg0 = (UArg)argc;( T4 Q. i* f2 H. |5 ^2 `
    taskParams.arg1 = (UArg)argv;
* i; f- @& o2 Y, h9 k    taskParams.stackSize = 0x1000;
1 I4 H2 s% i+ W    Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
" Z( ]$ ^7 x+ v
! @, c- e5 B( l  H, v! r0 G: h  N    if (Error_check(&eb))
4 ^/ O9 r  ?( o$ N+ B+ q3 u3 V        LOG_FATAL("failed to create application startup thread");
2 o' s# `7 Y/ G2 w2 m       
. c, T: F$ k7 g    lineOutmain();) S9 O7 A7 x* e) k+ l" \2 S
    BIOS_start();" s. J6 ?7 H. X5 T2 z. N
    LOG_INFO("<-- main:");) b, z" E) c/ k1 T
    return (0);
6 @& h$ M* r* X& {/ H; u+ a}2 S- y) [& B+ j4 |. n* E; H/ f
其中lineOutmain();是启动lineOut例程8 X' n3 T6 S/ Z8 O+ e4 T8 h% a  N4 }5 n
int lineOutmain(void)6 n1 ?- ?# K+ h( d
{
6 p+ v. T, D$ s8 V        unsigned int i;
' A# b  U9 f' c# @, V6 x0 W+ Y, p* i% b% H) R3 l$ N
    PeripheralsSetUp();# k* M* y' e* a/ X$ c0 Y! R6 X

) E9 s; w* T5 b7 z    LOG_INFO("\r\n ============Test Start===========.\r\n");9 u4 D, D* i2 W* F& m
    LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
2 v8 d$ |4 k! W    LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");# R  A" M/ U6 N8 W; e* @

/ Q( |8 a/ R! O& Y# i7 m    for(i=0;i<229396/2;i++)
& D9 N& [3 I- M- h4 q7 h, n; j        {2 S" z/ G3 K% R* R
                toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;. R4 D1 m0 x# F' |. p5 [; u
        }
3 O6 S: u/ |9 \) j# ?: i% t; g" D+ q/ l
    IntDSPINTCInit();3 w& V! f2 \% y4 @1 l% E- m
5 M5 M2 s8 K; N4 s% W. Z; Z. N
    I2C0IntRegister(C674X_MASK_INT6);! L. \9 K9 E# p
+ u  U- C& \. s' k' I
    IntEnable(C674X_MASK_INT4);
  R9 D- I  l2 o: t6 {  u7 c    IntEnable(C674X_MASK_INT5);
! H4 `6 L) G0 n# W+ C    IntEnable(C674X_MASK_INT6);
- O$ l# |6 F8 o* A8 n
) m4 d, O$ O: S2 c- I    IntGlobalEnable();
! M  p8 S% t9 U+ D0 R% B' d+ a) g0 Z! R6 e! j, R+ `( f  @' A
    AIC31Init();
) `( B( z; m2 J, W, |$ g    ToneLoopInit();
! m( p  ~) K# H7 T4 Q4 T; V    Start playing the tone looply$ ~! {  f& G5 k1 _& f
    ToneLoopStart();( B. _2 h$ w. w: A  u1 y
" T) o% z$ l3 w0 V. D6 |
    LOG_INFO("\r\n ============Test End===========.\r\n", -1);& f/ Z) L' @& s! R, t/ o, w
& w( L( A* ?# ]) w6 U4 L5 G# x: d
}
# Z* ?* R& ~0 D& }( d2 {. l
- S* F* w9 _  D$ U) J5 ]# Z' a从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。3 k3 m1 X7 P8 d* ]9 L

+ Y1 C% x; v" B. ~4 N) A
) K2 Y7 ?  F6 ?3 a! ?& O; T! P4 F) T2 S
3 b3 \' l/ m6 Y+ h1 d  T" a
- [5 p" n$ e; H9 h3 i

) a" x+ M+ I8 T& n+ L
作者: 希望缄默    时间: 2015-3-4 08:57
请观看视频教程  18-1-硬件抽象层-硬件中断
8 @8 u* w8 }- Y& d0 b6 S9 O& v
/ P: g# I' L6 h3 A, B. x在 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
3 c/ V% ~( m- T+ n7 n% i目前没有SYSBIOS下的音频驱动,不过移植过去不难。我们公司很快就推出StarterWare程序移植到SYSBIOS的视频 ...
/ Y( g0 @5 L, \7 Z
有音频驱动的
作者: 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)
; P5 p* h  A; k. Z3 q, W- r{* ^' A& h+ F' J, Q9 H
    Log_info0("\r\nAudio Sample Main\n");
* R: t/ a( |$ T& n! j7 `5 ~+ G; c( |
: ]4 a& L3 {: G    /* 使能mcasp引脚的pinmux    */
# q5 H- N% w' y- W    configureAudio();
' j( @; k2 |& i& m2 r7 q6 ^. K& i" c  
+ E3 W! v9 F9 q. P/ G& c5 H    BIOS_start();
. Y# N! e. _* u( a% c0 O/ C  B  ~8 o; x  X: K4 {  e
    return;
; j( Z; V( s6 `& g. f* A8 ]}! G- @3 t2 d# f7 m) n
函数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.' n& H" b% x) f: H/ @; L
(2)反复播放是在audioSample_io.c 的Void Audio_echo_Task()函数实现GIO_reclaim接收数据GIO_issue发送,你想要它播不播放数据那就完全由你控制了。
! r" K" W& H2 M(3)至于你要释放资源,使用biospsp只需调用GIO_delete注销驱动就可以。
作者: flh    时间: 2015-3-20 08:31
今天看了configureAudio()源码,正如Lewis所说就初始化PIMMUX了.
7 @) K$ ^! A$ n" s6 _8 |Void main(Void)
+ ]4 @$ p9 R. N. o4 {7 K0 C{0 X2 |( z' u4 N& p/ k3 y2 U
    Log_info0("\r\nAudio Sample Main\n");2 t8 s  P: s( v, g. ?, ?3 e! m5 b! P

, A# ~+ p. l" n1 q/ H* Y8 f    /* 使能mcasp引脚的pinmux    */3 C( J- U5 Q' A$ a0 H) B5 K* R
    configureAudio();
5 }* O3 K! @7 P    BIOS_start();
  v7 c* W0 N7 r% V    return;1 o% s9 h& e. Z
}
- P& k+ a! W) R& [- e! V% n1 ~但测试中的main就调用了configureAudio(); 就能换回播放了音频了。Audio_echo_Task()这个函数谁在调用呢?




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