嵌入式开发者社区

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

作者: flh    时间: 2015-3-3 08:31
标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。0 l3 V8 F2 b0 ^$ V; e
目标:AUDIO_LINE_OUT播放声音。ad采集声音。7 t: A+ z6 M. k6 z$ s
现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?), F$ M$ a6 j& G% j, t3 G+ q
详细程序如下:
( v5 F0 f. P6 j7 M7 B& GDSP侧 main_dsp.c
2 a. j. g) E" l5 c2 ~extern int lineOutmain(void);; |+ o, N+ N+ _7 P( g3 ?: ]
Int main(Int argc, Char* argv[]) {
9 F3 ~) }3 w' n/ [; L+ U    LOG_INIT();
! Y, t+ `3 v5 A/ U% y7 N; w) G    Error_Block eb;% l4 ]  M, l% ~: v+ i( ~: w5 P
    Task_Params taskParams;
' ~3 K, |8 Z0 `9 i# \! P4 Y3 Z* s& N7 V+ A
    LOG_INFO("--> main:");$ `0 h% Y7 Z5 |% Y4 R

' b. c) @6 B6 b8 d& A3 _9 t5 s    Error_init(&eb);
; E! d* I. f9 ]2 s0 J9 m# F2 }8 ]* v
    Task_Params_init(&taskParams);
! f+ o: F) J: i4 T) Z4 S  |    taskParams.instance->name = "message_loop_fun";4 @* W5 ?; R, N
    taskParams.arg0 = (UArg)argc;0 w6 O- j5 |$ S9 O
    taskParams.arg1 = (UArg)argv;; O4 w% ^. o% J
    taskParams.stackSize = 0x1000;
# a# [1 m' X7 u, N$ ?) i: A; O+ u    Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
' F/ a7 N8 D3 T4 c. @6 C8 d6 T& T
    if (Error_check(&eb))
% Y% O$ v& A4 G        LOG_FATAL("failed to create application startup thread");
5 @7 w7 `7 Y; B- N4 h" j) ~( k+ x) Z       
5 q, D7 E1 U3 q9 s! b/ S5 @    lineOutmain();8 ?0 B/ z; q) \% H; W
    BIOS_start();
6 j% n# V4 X( `8 N    LOG_INFO("<-- main:");
  `( F3 Q0 I9 S, b  [    return (0);
$ M4 A: f+ q. x6 O$ }$ j5 c: ~* a}
6 _3 `6 P! w+ e% B其中lineOutmain();是启动lineOut例程, p- }& V) V$ W0 r5 u
int lineOutmain(void)
1 i$ f3 i# ?3 N) R6 z5 u" b1 U/ I5 s{, v/ a1 o4 [$ X
        unsigned int i;" H+ P# Q  @9 }+ r! `4 E1 W! G1 c
7 K- l" |: I9 ]& ^
    PeripheralsSetUp();
4 Q+ d& `! D* |  S
1 r5 f7 @( A" l    LOG_INFO("\r\n ============Test Start===========.\r\n");$ ^- J+ z( [! L; x! x# S+ E, e) U
    LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");! N; ]: v8 k9 p/ y+ H; I7 Z0 h' X; P
    LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");9 ]4 S2 A5 O( C( K2 d) x- C% s. @

2 u7 C- ~' K, x$ D! n; i; L    for(i=0;i<229396/2;i++)* i1 j) |5 O! z6 v( W$ N
        {
. i& x% Q- ]: R: n. `8 m& V                toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;% f: U" M( R+ I+ L% Z6 ^
        }
6 A8 q& a/ J" n* v) m# |' Z. p4 b! ~# P+ k# s
    IntDSPINTCInit();
# K1 R" {9 q4 Z; j. I% A
5 a8 f/ P/ H4 P( r    I2C0IntRegister(C674X_MASK_INT6);' b' X% {- r9 H: \7 G8 e
, c' I1 m# O( @+ w8 s
    IntEnable(C674X_MASK_INT4);
+ d. t" e0 }& S0 R3 I    IntEnable(C674X_MASK_INT5);
9 [5 S' h4 `- a# Y  I    IntEnable(C674X_MASK_INT6);
1 p' S$ y+ l6 r. f! f+ w) m
6 v* `# q& M8 o% y    IntGlobalEnable();3 X9 Y4 q; K1 A! j$ N1 I
; G9 T# i0 [$ f. Q$ a) P  H
    AIC31Init();/ s4 O  L4 a0 K. U3 `
    ToneLoopInit();! F+ C6 f4 v0 e
    Start playing the tone looply
; b8 Q9 n+ g* I1 r    ToneLoopStart();
7 a/ N# a' N4 E$ Q: u; `( j
0 j2 o3 p! C6 S: }. A    LOG_INFO("\r\n ============Test End===========.\r\n", -1);; l& l6 y' K! \7 z

1 x: {+ F9 x: p% n% k! n}
& C( c& h* F* n! U" _- m2 y# c6 G8 |
从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。# |0 I3 K% J  w4 I

" L) B- Q5 y- |0 a; h' B( z% M  B9 A4 q
3 @- W+ l2 ?" T/ N, q: F/ v6 f0 B
9 ]( |9 d( E$ q4 I6 p3 u) t( [

! K: v3 i$ [7 E; @; b: D; W5 l! Z2 o' k1 G& B" m% [

作者: 希望缄默    时间: 2015-3-4 08:57
请观看视频教程  18-1-硬件抽象层-硬件中断, B4 o! Z# [: o: V. G
  g" X5 u3 L3 a( L
在 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/ d; \" y3 `8 p: R( E9 ?. K) t
目前没有SYSBIOS下的音频驱动,不过移植过去不难。我们公司很快就推出StarterWare程序移植到SYSBIOS的视频 ...

: V* \' [& q$ y5 h( g- X" G有音频驱动的
作者: 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)
) h, e* Y# x; @' H* Y/ W{
, g& @+ ]* C5 j    Log_info0("\r\nAudio Sample Main\n");
/ W! G$ o. D& C, B# \3 {; ]$ E
* Q9 G/ E7 L+ C9 _5 L/ E5 k    /* 使能mcasp引脚的pinmux    */, W# g% G8 a3 Y8 i
    configureAudio();
1 f- U* j7 _3 X! R' Q* i* I# L  [6 t  / L2 I9 u& S6 _/ |
    BIOS_start();$ k- n2 ?$ h! o( |

" Y% V! O1 I( V' N! G( S    return;
; m: d5 j  W4 B  o5 P4 w}
" h3 K! y, U/ |9 |: {6 H函数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., E9 ]/ w; E" N1 {
(2)反复播放是在audioSample_io.c 的Void Audio_echo_Task()函数实现GIO_reclaim接收数据GIO_issue发送,你想要它播不播放数据那就完全由你控制了。8 ^7 |, s+ e  u4 ^0 P
(3)至于你要释放资源,使用biospsp只需调用GIO_delete注销驱动就可以。
作者: flh    时间: 2015-3-20 08:31
今天看了configureAudio()源码,正如Lewis所说就初始化PIMMUX了.
1 @0 h2 P0 f! [* K4 ?Void main(Void)
: u) v1 X- {  F9 V. _. P6 J  c{
" G9 f( j6 W! g0 k8 ?4 T  L    Log_info0("\r\nAudio Sample Main\n");# I4 v- Y" m( `& a' d+ F

- h$ B% }6 X  c# a    /* 使能mcasp引脚的pinmux    */$ j* O/ t) D) X  `  J7 B0 b
    configureAudio();; H3 Q  R8 Y* w
    BIOS_start();& L" c- P/ S, Z2 W9 [7 Z  D
    return;, P+ a5 P8 o. c
}8 W6 J- h1 \0 p" v% Z
但测试中的main就调用了configureAudio(); 就能换回播放了音频了。Audio_echo_Task()这个函数谁在调用呢?




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