norains的专栏

只专注于WINCE开发

用户操作
[即时聊天] [发私信] [加为好友]
norainsID:norains
142907次访问,排名598,好友0人,关注者53人。
代码其实是一种乐趣
norains的文章
原创 189 篇
翻译 0 篇
转载 10 篇
评论 274 篇
norains的公告
联系方式请看置顶文章
最近评论
dfdf:讨厌MFC!我觉得MFC就是太乱了!看似无用的代码不要不行,MD微软啥都给我们做完了,原理性的东西我们却永远没法搞懂了!
ironox:有个地方 我觉得很别扭,不知道怎么办好

比如说 CReg reg(HKEY_CURRENT_USER,TEXT("ControlPanel\Volume"));
ControlPanel\Volume 有可能不存在呀,这个该怎么处理哦?对象虽然创建了,出错了也没提示
szterry:呵呵,果然工作狂技术狂,同感,一样的感觉……不过我才刚毕业一年……搞IT就是玩……
jinlking:这个botton的实现只是在主窗口画了一块区域,对于事件的处理还要放在主窗口的窗口处理函数之中,在对应的消息处理上调用CheckTap来判断是否是此“按钮”,问一下,这种方法与把按钮封装在子窗口中有什么区别,二者使用那个更好?
KUODY:博主真是好人
文章分类
收藏
    相册
    动漫
    文章图片
    程序交流
    xumercury的BLOG
    狗友们的博客
    清蒸石斑鱼
    美女如刀锋
    茁茁的BLOG
    魅力老姐的窝
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 DBAu1200 Development Board Boot Flash 地址释疑收藏

    新一篇: S-Record格式详解 | 旧一篇: 小议DBAU1200 Development Board的Boot Flash更新

    //========================================================================
    //TITLE:
    //    DBAu1200 Development Board Boot Flash 地址释疑
    //AUTHOR:
    //    norains
    //DATE:
    //    Wednesday  16-April-2008
    //Environment:
    //    PB 5.0 + DB1200 BSP
    //========================================================================
        看过我这篇《小议DBAU1200 Development Board的Boot Flash》的朋友,可能对BOOT FLASH的地址还有所疑惑。该文说道,BOOT FLASH的地址(含PARAMETER FLASH)的地址为0x1C000000~0x1FFFFFFF,那么这个地址是如何定义的呢?
       
        这个地址可以在“$Platform\Db1200\Inc\db1200.h”中找到:
       
        // FLASH on RCE0
        //
        #define FLASH_BASE                 0x1C000000
        #define FLASH_SIZE                 0x04000000
        #define BOOT_VECTOR_OFFSET         0x1fc00000 - FLASH_BASE
       
        Base地址为0x1C000000,Flash的大小为0x04000000,两者相加等于0x1FFFFFFF,恰好为flash的TOP地址。
       
        虽然我们知道定义是在该文件,但对于为何定义为此地址,现在我们还是不明了。所以,我们要查看AU1200的文档,发现对于物理地址有如下列表(如图):
        
        我们很明确可以看出,0x0 18000000 ~ 0x0 1FFFFFFF为定义的专门用来作为BOOT ROM的地址。而解释中明确指出,BOOT ROM的地址一定要包含boot vector,也就是说要包含0x1fc00000。因此,对于DBAU1200 Development Board来说,BASE地址的确定是采用如下方式:0x1FFFFFFF - 0x04000000 + 1 = 0x1C000000。因为以0为起始,所以其后需要再加1。
       
        对于DBAU1200 Development Board BOOT FLASH的地址取值已经很明白了,现在另一个疑惑又来了:仔细查看该列表,会发现 0x0 20000000 ~ 0x0 7FFFFFFF段也可以作为memory mapped,为何文档中要将其与0x0 18000000 ~ 0x0 1FFFFFFF这段分开呢?其实问题很简单,不过这又要涉及到MIPS处理器的机构。我们知道,MIPS处理器的KSEG0和KSEG1所能映射的物理地址范围为512M,而这个范围基数则刚好是:0x 00000000 ~ 0x0 1FFFFFFF,而这正好落在文档中介绍的BOOT FLASH范围。换句话说,通过KSEG0和KSEG1所能访问的物理地址只处于0x 00000000 ~ 0x0 1FFFFFFF范围段,其余只能通过MMU机制。细心的朋友可能已经猜到,如果我们的BOOT FLASH大于128M,比如说为1G,那么我们通过KSEG0或KSEG1只能访问到最前面的128M,至于剩下的容量则是无计可施。这也是为何文档会将同样都能做memory mapped的空间划分为两段的缘故。

    发表于 @ 2008年04月16日 23:09:00|评论(loading...)|编辑|

    新一篇: S-Record格式详解 | 旧一篇: 小议DBAU1200 Development Board的Boot Flash更新

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © norains