嵌入式开发者社区

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

作者: flh    时间: 2015-3-3 08:31
标题: OMAPL138基于SYSLINK的双核AD采集处理例程和线性播放有冲突
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
: o1 m! v9 a- I1 ]! k& \目标:AUDIO_LINE_OUT播放声音。ad采集声音。
0 g) H! \6 p8 n: G现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)
$ ~# g% c  t% X+ x0 z详细程序如下:
: g. a3 o: M4 \2 bDSP侧 main_dsp.c; `* T2 x( |- J, z
extern int lineOutmain(void);8 p& k6 _. ?" |( T' E
Int main(Int argc, Char* argv[]) {
" ~3 g( a2 ?0 g, _9 _    LOG_INIT();
0 d; {1 U( X" U6 m/ C$ k* Y    Error_Block eb;
: x6 D& x. c1 l9 Y    Task_Params taskParams;7 o, Y( g4 w& _/ }$ x1 z

  Z6 B; q9 b/ v3 K+ t  ?    LOG_INFO("--> main:");: t% M, E$ l9 l; ~: z0 x3 L
: }+ T$ r. l( @
    Error_init(&eb);& n! {8 g! j% M5 L& B

! ~+ B6 h1 E, Q1 M. f1 G8 {    Task_Params_init(&taskParams);
) d3 |# B4 [  P+ O    taskParams.instance->name = "message_loop_fun";
/ j2 |0 D# o" `& `    taskParams.arg0 = (UArg)argc;
' v) B) ]1 ^- j+ \0 U9 F    taskParams.arg1 = (UArg)argv;
! G' n7 ?: F, _4 d0 C    taskParams.stackSize = 0x1000;
. a+ C- ]/ P  U/ l% ]    Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
2 U6 x. Z" i9 H1 n* @9 l# |( W/ }; H, c0 d8 w
    if (Error_check(&eb))
' e& [  `% l7 ^8 J: r# @6 c  c+ w* X        LOG_FATAL("failed to create application startup thread");
9 M# {, ]6 M+ ?( q  D$ R       
! _2 ]$ d0 v$ ^& A& C    lineOutmain();( }3 p; x; x( `# X
    BIOS_start();* Z; a* }% k4 T" p
    LOG_INFO("<-- main:");
& i& T" f( d* Z2 X1 F    return (0);
' j" ^0 }- o0 E+ n) D% A8 U}
6 c6 F% @. B) e8 r其中lineOutmain();是启动lineOut例程
+ v% u; g+ P4 {: _$ {, Wint lineOutmain(void)
5 g6 S% r3 r' f0 V8 @{
0 z( A$ g- n! L6 k% _0 q        unsigned int i;6 L' h5 C6 `5 i$ r" H% b

3 x  a$ Z4 D6 R- `4 t    PeripheralsSetUp();$ \# l0 T# U  u
/ k2 U) e; [3 S- t6 P8 k. D# Q# i  q
    LOG_INFO("\r\n ============Test Start===========.\r\n");
& O. o! |6 I1 @    LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");
. V( h' U; D6 Z) i8 P/ X, A$ i    LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
4 `/ r# F/ \4 f+ }) w5 q9 ^5 `1 c1 w2 d- C
    for(i=0;i<229396/2;i++)
# y  U: L! w+ M8 r: E        {
8 z( E$ O/ e0 d2 L* p5 `/ M& f                toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
+ j% ^6 f& a1 S, T6 K) a# G! g        }* a0 [% ~0 v. A1 o) v3 w: @
' W0 |! c1 Q, L
    IntDSPINTCInit();$ {) ^) s; q! F$ r3 m7 v3 o
, s( f) U( j( O" k7 P0 A
    I2C0IntRegister(C674X_MASK_INT6);5 H& N/ T: R2 v: _4 Q! L1 C5 x
! u5 r$ m# Q7 f) N' k$ F8 Z/ w5 m
    IntEnable(C674X_MASK_INT4);
6 F. e8 {" q5 U+ B, i/ \) I    IntEnable(C674X_MASK_INT5);4 i/ V: z, v5 y% t
    IntEnable(C674X_MASK_INT6);
3 Z1 u; o$ h  t4 U; a, q5 ]/ e7 [0 ~* F2 ~
    IntGlobalEnable();# L, ~5 f, t2 A. }
, L, b9 f$ H) u2 Q
    AIC31Init();
2 O1 p& b. F# Y9 M    ToneLoopInit();0 j  \1 ]1 Q+ U+ G; ?
    Start playing the tone looply& Z& A& _( M( y
    ToneLoopStart();
  Q( y/ t5 N  T+ C
* z# K; l" v' \2 l- ^! D" C, y    LOG_INFO("\r\n ============Test End===========.\r\n", -1);2 I1 U5 ?4 ]4 u; @
# m( S/ C% ]% C8 D5 J$ Y. W
}% {9 {  S" b# \$ x2 I2 e/ c) ^! m% _" U+ J

, E8 B+ ^: J8 A& \$ S# x8 o. s从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。7 G% c9 q" D; j7 ^! e+ Q1 V" c
* S, O3 p* b# p. I: n/ ?

& b& C! U  S' j8 k2 G6 U7 A: [
9 z  a1 x, q4 x; y! W  `' b3 c% f7 \2 ]1 d' r) S2 ^, R* i3 e: i

$ [, H, a0 G2 v2 i( D, c. d2 x* e( [1 t; G

作者: 希望缄默    时间: 2015-3-4 08:57
请观看视频教程  18-1-硬件抽象层-硬件中断
3 v: e5 d' T! D5 B  s, S! e
4 E- k4 P2 r% ?在 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
2 k# N  V. M" s1 }% v$ k目前没有SYSBIOS下的音频驱动,不过移植过去不难。我们公司很快就推出StarterWare程序移植到SYSBIOS的视频 ...
" N7 h  \2 _7 Q
有音频驱动的
作者: 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)
8 I7 y# q# |2 ~* H{
% ?/ x2 N2 t0 x9 b# H9 n    Log_info0("\r\nAudio Sample Main\n");; c% g4 S  _% a; k' X! @

) v  N/ C$ N2 n  S    /* 使能mcasp引脚的pinmux    */& ]4 v7 j6 q3 Y( ?8 h( R6 ]" [
    configureAudio();( K& P1 A+ x' b1 r4 Y
  
3 f$ X7 j* N# B" J* m    BIOS_start();% K% @, }! v" g9 b7 s& g) ?

1 r* |8 ?3 Q! m4 L/ @! t3 a5 E    return;
( J$ s  v7 W0 o9 ?}! \1 z9 X9 O! R- S1 u$ ~; J6 ]% M
函数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.
- T$ u% E! K2 K8 Q(2)反复播放是在audioSample_io.c 的Void Audio_echo_Task()函数实现GIO_reclaim接收数据GIO_issue发送,你想要它播不播放数据那就完全由你控制了。
1 S* M1 \7 V  |8 E$ d(3)至于你要释放资源,使用biospsp只需调用GIO_delete注销驱动就可以。
作者: flh    时间: 2015-3-20 08:31
今天看了configureAudio()源码,正如Lewis所说就初始化PIMMUX了.
+ v. {) D' l. ]' D  |+ f- XVoid main(Void). H; C7 f# E" W
{' e9 u3 S* p) r
    Log_info0("\r\nAudio Sample Main\n");& U: c3 y( |! |  L& Z- H3 V

7 V' i' J  x" P- v% V# v( r; _: `    /* 使能mcasp引脚的pinmux    */
$ W/ G5 B8 O$ Z9 K, Q3 V4 _    configureAudio();/ y% U9 W' W0 c$ c
    BIOS_start();
) H5 B( c4 J: S1 n/ R, X& D+ P9 Q    return;
1 s2 n3 Q, W% V0 R& O}0 b9 i+ e. J) J  s* P& S! x
但测试中的main就调用了configureAudio(); 就能换回播放了音频了。Audio_echo_Task()这个函数谁在调用呢?




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