在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5642|回复: 3
打印 上一主题 下一主题

[已解决] 在DSP启动EMIFA的CS4片选来进行通信出现问题?

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-5-30 11:10:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
端午节快乐,请教个问题,ARM端启动linux,DSP端sysbios,我在DSP端初始化了EMIF,使用的是CS4,初始化参考了创龙的DSP单核时初始化的过程,单核下是可以使用CS4进行读写数据的,但是当双核启动的时候,就不能启动了读写数据了,然后我就用创龙的syslink案例ad7606_dsp,我用创龙的开发板和创龙的ad7606开发板进行AD模数转换,是可以的,那么我什么都没有改,只是将ad7606_dsp中的EMFI初始化部分,将CS2改为CS4,包括以下内容:static void ad7606_emifa_init(ad7606 *ad) {: Y' z3 s  X! {1 E) x. i
        /* Power on the EMIFA */
6 v( F8 p7 k5 i0 e% _9 D        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,- u" a# s3 k" m# i, x0 l
                        PSC_MDCTL_NEXT_ENABLE);
+ J0 T+ E$ h5 H( F
. k5 L+ f4 p; Y        /*selects the EMIFA pins for use*/
& @1 B, D, s3 L9 ^* a/ K% \        EMIFAPinMuxSetup();
5 X" G5 O( U+ I! ?  _7 Z) L. ^+ g, E' Q( s
        /*set the buswidth of async device connected.  16bit*/
7 C2 X$ y  c+ P! a# V        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
# U5 P$ S1 l, l( E                                        EMIFA_DATA_BUSWITTH_16BIT);3 K% x0 J' X3 l8 e7 K+ L6 e! M

& d! g) Y# _$ H. ^0 [3 Y        /*selects the aync interface opmode. :Normal Mode*/
: X, |: {9 Q4 f! v5 c6 V* D        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
* P- |5 [  g) W        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);9 U/ A- e8 K$ `) k5 B0 n" X

! J: i5 T5 Z. `5 O) g+ g; t0 h        /*Extended Wait disable.*/8 y& o$ _+ p3 ~7 t/ s; o
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
% L# G% `3 i4 \5 ]+ u) I" s        EMIFA_EXTENDED_WAIT_DISABLE);! {  K( H$ g, e# I8 t& d! E
* P  G2 ?- c  [1 k
        /*configures the wait timing for the device interfaced on CS2/ |) |( d1 Z5 X+ ]
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/& T7 M: f& n' l5 L. X# [( I! m
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
. Z" Q* v* M" y" `# r; H                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));, t( X3 T. @. w
, i1 ?" }9 G6 _3 r
}
' z6 u3 U; `, R& Y* M还有cs4引脚的复用:6 h9 j! S" X9 i' N4 E
SYSCFG_PINMUX7_PINMUX7_11_8
" d$ h, I# h8 S* [7 Q1 o6 f' ]8 Q4 R& F: d1 n/ s  M
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?# d+ W% ]! h7 x8 k
谢谢!3 ^1 Z! J, h: f7 C& F+ ~9 P
3 r6 f8 g5 z6 z) }% W, x
, E( h2 d: U: a1 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-6-2 08:54:31 | 只看该作者
厉害
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:# f4 q7 }" b3 K+ `" W8 z
谢谢了7 N! u: Y; f0 x1 C; D( ?# Q3 l
http://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
9 S8 P2 }2 Z$ H( g3 K8 h#if defined(CONFIG_SERIAL_8250_EXTENDED)& K& n5 a3 n4 }/ P
#define TL16754_CLK                14745600
5 _* k' j/ O6 O1 k9 y& z7 |$ b#define TL16754_PORT_N                8- u1 I5 X7 U# `7 K8 U! `
......" N/ x. U. }: C% `1 J
static struct plat_serial8250_port tl16754_serial_pdata[] = {2 c7 W' S3 ~+ L& @4 e' x, X
        [0 ... TL16754_PORT_N - 1] = {
  z2 p) y) e+ T; [$ t$ [- t                .mapbase        = DA8XX_AEMIF_CS4_BASE,
9 d; S! a; U7 T% {: c) I                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |3 ~' c. i% q( ~/ S- k: _3 ]6 r5 w" d
                                        UPF_IOREMAP | UPF_FIXED_TYPE,- I( h% O% t2 n% G
                .type                = PORT_16654,. o8 h# X6 K. d1 e, X
                .iotype                = UPIO_MEM,
3 Q: g* ]8 s' z1 I9 b* i* ~                .regshift        = 0,- X! F( _5 \$ ]# V% X) f
                .uartclk        = TL16754_CLK,
- p) ]0 c/ }! R, Q! g' X3 V        },
+ O/ B% {( |1 v* a# j/ Q        {
, O1 |  j+ O$ K$ _: {: I/ o/ Y                .flags        = 0,% q: p: V+ X/ \3 ]3 u/ W: @0 V
        },
" a+ O3 ~" R% b# }- C};
" C. l! J7 @& b5 x+ e0 j+ e$ _# X$ z
......
1 o" S5 l" v7 o$ c2 G+ }9 Zstatic inline void da850_evm_setup_tl16754(void)5 L, v7 F# n4 p4 l$ C. Q+ c8 @- E
{5 S! a5 n5 b/ S2 f7 v( y( Y
......
! P5 N' s' b2 Y1 f        /* Configure data bus width of CS4 to 8 bit *// B# v8 z6 v5 T3 g1 e( L3 _
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &6 ]: |( g) a. r7 J4 D
                (~DA8XX_AEMIF_ASIZE_MASK),  L% u8 Y; d0 L1 l5 }
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
1 L6 W( D3 Z4 C0 S
+ Y# b; U, F- m        /* setup timing values for a given AEMIF interface */
( ^9 N  n0 b- j- h/ I        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |/ d( D  N! N! I* H7 Q1 t8 ?5 S
                WHOLD(3) | WSTROBE(10) | WSETUP(4);, T/ t2 b! S" ?1 R1 r" d3 d
. u) w( ?4 k. Z. _3 e# a
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);( v, J* ^! S' e' D% Y
        val &= ~TIMING_MASK;
) D1 A% u& D6 y9 {" c$ f5 @        val |= set;
7 B/ L$ t" z  ?7 E7 G0 b2 {. Z( Q        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
' [  l6 o% p* ^$ s& K7 R......
% g8 p+ X& p, x# Y}
! w4 z0 Y7 F" \* r5 J* C) b  c* d
# ]$ [0 m4 I; o而且在Menuconfig中已经对, u3 Q& m$ f! D/ S
CONFIG_SERIAL_8250_EXTENDED 设置为 y4 a- O/ [; Q+ ~- L: z2 I
所以此模块函数是被加载的,
* W6 x! B' F' }& V2 j% i
1 _8 p- `* ?5 {5 y8 i% Y4 ?请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 22:44 , Processed in 0.042574 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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