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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5558|回复: 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) {
0 G, I# D) D3 d        /* Power on the EMIFA */
6 z& R! v1 w, c        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,7 j3 C- Y3 M& B4 S6 ]. V3 r+ y
                        PSC_MDCTL_NEXT_ENABLE);
" s5 Q5 w( z, Z, w: V' G, H0 n3 ^& z% u4 @
        /*selects the EMIFA pins for use*/
. J' J5 N- z0 J, k4 E3 q        EMIFAPinMuxSetup();3 l5 O& ]) n# g; g

1 P- R/ n; ^! I/ o, B8 p        /*set the buswidth of async device connected.  16bit*/
2 _- i/ m2 L7 s7 N) _        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 ^  y* }& m* g/ ]. I' E                                        EMIFA_DATA_BUSWITTH_16BIT);+ U+ i/ z' o- m7 a2 p8 J0 l

$ J9 J6 t8 s! o  F5 x        /*selects the aync interface opmode. :Normal Mode*/: U8 C3 H* A2 Q+ p
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,- s, b- v- M9 M+ ?0 M
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
. h6 l* L1 H) @" N3 M& U- i- i: o4 w: p% Y0 J: |5 W
        /*Extended Wait disable.*/! W, w% H0 {  r& S, L: b1 R3 a$ h: A
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
2 O4 P5 P* J7 ?5 d( Y        EMIFA_EXTENDED_WAIT_DISABLE);
8 j. V. z4 o. D  z6 t: E. r1 |" d- t' T9 `* }" T
        /*configures the wait timing for the device interfaced on CS2+ t+ h" Y) e- |! \6 K
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
0 k8 Y( E2 T: a% C0 B! {        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
2 F, l1 Q7 D; F; E$ A! q9 J, Z                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
( m4 G/ T. q' o# Z% \/ {: D1 ?8 c- p4 P3 d# ^* Y/ c
}& e4 l  x* l, ?+ c8 [
还有cs4引脚的复用:
  D% ^5 @  r# R" C- ~8 SSYSCFG_PINMUX7_PINMUX7_11_8( t' O/ a6 Q- Y% t3 w

" C0 w% ^0 C5 ^5 X0 x: h1 ]4 T; J最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
. n- o6 T/ Y* @8 T, v. b谢谢!% x. r5 k' X6 Z" f; m. W
- J. s# d; {* b* n% ^4 G

& Q  R) w( [2 @6 H; N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作," v5 l5 a" A  J& w) o3 e: I; `
#if defined(CONFIG_SERIAL_8250_EXTENDED)
% n6 d  m1 [0 Q#define TL16754_CLK                14745600
5 e+ ^6 b* z$ A( H#define TL16754_PORT_N                8" r  a/ d3 [2 p$ S' h" t
......
. q! G7 U$ N& W; Y. P  ?  t8 A- @$ ^static struct plat_serial8250_port tl16754_serial_pdata[] = {3 U& z  L0 f) c. k
        [0 ... TL16754_PORT_N - 1] = {" t% [9 h7 K1 B
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
( l+ i, t4 C0 ~8 v5 N+ W2 n* H                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
: W" }. [# G: \: \' n3 _4 a                                        UPF_IOREMAP | UPF_FIXED_TYPE,/ s1 a* k  _7 t; O  ]0 T
                .type                = PORT_16654,5 U" f7 J7 R* P4 W7 q2 ^
                .iotype                = UPIO_MEM,( t8 Z1 w1 \. t8 E6 Y# I% K' q
                .regshift        = 0,8 z9 @, p3 B6 m# [8 V" H
                .uartclk        = TL16754_CLK,% E( I$ @% H( f. M7 H& G
        },3 _" w, K6 z# \9 W/ v
        {9 `4 u. V7 h9 ]1 b) d
                .flags        = 0,0 O- I: o% l+ {5 _: Q, x4 Z* k
        },
  r9 [( |# {& {. Z2 u" t/ Q};
9 i3 R2 A3 a  Y! D3 |' x& t% F; F  r# N# o% n; T4 }
......
$ u, @8 V' X4 |static inline void da850_evm_setup_tl16754(void)
) R$ d1 q; Q2 F* M+ @4 i{6 }+ v; J5 z& b6 |" I
......
2 t5 ]; H7 y( D3 h2 @0 k        /* Configure data bus width of CS4 to 8 bit */# o. r" e% e- w. H
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
' w: I2 g& N5 B' l& q                (~DA8XX_AEMIF_ASIZE_MASK),
- p6 O. j" [1 S' b0 b                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
2 s' O, n8 |5 m' n
3 {/ ]! C  h8 V' d& Q        /* setup timing values for a given AEMIF interface */
5 V3 p6 \/ |) c) Z        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |) j9 r& l9 K0 I. V. \
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
/ I& V/ V  |4 q8 o# X2 Q2 ?4 e5 r* A- v9 W, J) F/ p# F6 ]. V" x
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
* ^: B! ~# K* g        val &= ~TIMING_MASK;! j: K' O4 p" \5 V
        val |= set;
: c4 q6 J7 S* ]4 K8 S# {        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
( N% {. U6 Q1 Z  C! Z* P' P1 X4 J; k......7 @7 k2 ~' I7 l3 M( v. c
}; o- U6 V& p2 d% U- Y2 U/ P
+ o% b; f0 Z! S0 U* B! V( Y
而且在Menuconfig中已经对1 j, p' ]3 o1 i9 G
CONFIG_SERIAL_8250_EXTENDED 设置为 y
. _! W- x4 K7 E# T所以此模块函数是被加载的,% A( m! _  V3 L! A! Q3 c3 J* o
( g5 X* j1 v/ k0 ~* s! s( t
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
% `) ]' u6 O! o* ^谢谢了
# P3 A5 F, e$ f! b  w: n& Lhttp://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 03:34 , Processed in 0.037981 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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