在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 3327|回复: 1

在线急问mips的几个问题

[复制链接]
发表于 2009-6-23 19:43:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
以前一直在搞ppc的,最近还没来的及看mips,就要在mips的板子上调flash,所以好多迷惑,想问下大家,可能问的比较业余,希望大家见谅!

板子cpu:cavium  octeon5020


1、关于开片选的问题,ppc还比较熟,cavium上不是非常了解,是设置 MIO_BOOT_REG_CFGn 寄存器吧!
然后我今天看到一段代码,是为512k的flash开的片选,好像是用做boot flash的,代码如下:

  BOOTBUS_FLASH_SIZE=512 *1024;

    /* Remap flash part so that it is all addressable on boot bus, with alias
    ** at 0x1fc00000 so that the data mapped at the default location (0x1fc00000) is
    ** still available at the same address */

    reg_cfg.u64 = 0;
    reg_cfg.s.en = 1;


#if CONFIG_FLASH_16_BITS   
reg_cfg.s.ale = 1;
reg_cfg.s.width = 1;
#endif

   
reg_cfg.s.size = ((BOOTBUS_FLASH_SIZE + 0x400000) >> 16) - 1;              /* In 64k blocks, + 4MByte alias of low 4Mbytes of flash */
reg_cfg.s.base = (0x1fc00000 - BOOTBUS_FLASH_SIZE)  >> 16;                       /* Mask to put physical address in boot bus window */
    cvmx_write_csr(CVMX_MIO_BOOT_REG_CFG0, reg_cfg.u64);

我想问的是上面紫色加粗的2段,为什么设置大小的时候要加上4m的空间呢? 还有设及地址的时候为什么要减去flash的大小呢?请指教!

2、4G的空间,为什么要用物理地址和逻辑地址呢(如:0x1fc00000和0xbfc00000)?片选设置是物理地址吧~那以后访问的时候用什么地址呢?

谢谢大家~
 楼主| 发表于 2009-6-25 20:03:15 | 显示全部楼层

cavium寄存器设置求助

这两天ms搞的差不多了,不过现在flash的读写只能写一块,连续写会不对,可能和下面这个寄存器有关,望用过cavium的达人指教,不甚感谢~~

MIO_BOOT_REG_TIMn 里面的参数设置不是非常清楚,求教!


cavium自带的一个例子(boot flash的),望达人解释为什么这么设置,以及具体参数含义,谢谢。。。
cpu :octeon5020

#define FLASH_RoundUP(_Dividend, _Divisor) (((_Dividend)+(_Divisor))/(_Divisor))

  ECLK_PERIOD = 1000000 / 1000;
    /* Set timing to be valid for all CPU clocks up to 600 Mhz */
    reg_tim.u64 = 0;
    reg_tim.s.pagem = 0;
    reg_tim.s.wait = 0x3f;
    reg_tim.s.adr = FLASH_RoundUP((FLASH_RoundUP(10000ULL, ECLK_PERIOD) - 1), 4);
    reg_tim.s.pause = 0;
    reg_tim.s.ce = FLASH_RoundUP((FLASH_RoundUP(50000ULL, ECLK_PERIOD) - 1), 4);
    if (OCTEON_IS_MODEL(OCTEON_CN30XX) || OCTEON_IS_MODEL(OCTEON_CN31XX))
        reg_tim.s.ale = 4; /* Leave ALE at 34 nS */
    reg_tim.s.oe = FLASH_RoundUP((FLASH_RoundUP(50000ULL, ECLK_PERIOD) - 1), 4);
    reg_tim.s.rd_hld = FLASH_RoundUP((FLASH_RoundUP(25000ULL, ECLK_PERIOD) - 1), 4);
    reg_tim.s.wr_hld = FLASH_RoundUP((FLASH_RoundUP(35000ULL, ECLK_PERIOD) - 1), 4);
    reg_tim.s.we = FLASH_RoundUP((FLASH_RoundUP(35000ULL, ECLK_PERIOD) - 1), 4);
    reg_tim.s.page = FLASH_RoundUP((FLASH_RoundUP(25000ULL, ECLK_PERIOD) - 1), 4);
    cvmx_write_csr(CVMX_MIO_BOOT_REG_TIM0, reg_tim.u64);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 17:49 , Processed in 0.037517 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表