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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
楼主: swcims

各位,我还是不明白MIPS的内存布局和启动过程。。。

[复制链接]
发表于 2007-3-23 09:23:46 | 显示全部楼层
阿三多发送到非
发表于 2007-4-26 18:01:21 | 显示全部楼层
好贴,顶!
发表于 2007-5-11 15:20:53 | 显示全部楼层
强烈支持看哈see mips run可是要是有中文版的更好,英文版的看不懂啊,尤其是一些术语!!
发表于 2007-6-22 17:20:00 | 显示全部楼层
努力学习。。。。。
发表于 2007-6-23 21:52:51 | 显示全部楼层
mips启动代码的地址就放在0xbfc00000,位于kseg1区,而这个区是固定映射的,即虚拟地址高三位清零,所以做PCB时,启动代码的物理地址应是0x1fc00000所在空间
kseg0也是固定映射的,即虚拟地址最高位清零,kernal一般放在这个区域
发表于 2007-8-7 14:19:36 | 显示全部楼层
learning...
发表于 2007-8-27 15:15:51 | 显示全部楼层
在32位下,程序地址空间划分为4个大区域。每个区域有一个传统的名字。对于在这
些区域的地址,各自有不同的属性

kuseg: 0x000 0000 - 0x7FFF FFFF (低端2G):这些地址是用户态可用的地址。在
有MMU的机器里,这些地址将一概被MMU作转换。除非MMU的设置被建立好,这2G地址是不可用的。对于没有MMU的机器,存取这2G地址的后依具体机器相关。你的CPU具体厂商提供的手册将会告诉你关于这方面的信息。如果想要你的代码在有或没有MMU的MIPS处理器之间有兼容性,尽量避免这块区域的存取。

kseg0: 0x8000 0000 - 0x9FFF FFFF(512M): 这些地址映射到物理地址简单的通过
把最高位清零,然后把它们映射到物理地址低段512M(0x0000 0000 - 0x1FFF FFFF)。因为这种映射是很简单的,通常称之为“非转换的“地址区域。几乎全部的对这段地址的存取都会通过快速缓存(cache)。因此在cache设置好之前,不能随便使用这段地址。通常一个没有MMU的系统会使用这段地址作为其绝大多数程序和数据的存放位置。对于有MMU的系统,操作系统核心会存放在这个区域。

kseg1: 0xA000 0000 - 0xBFFF FFFF(512M): 这些地址通过把最高3位清零的方法来映射到相应的物理地址上,与kseg0映射的物理地址一样。但kseg1是非cache存取的。 kseg1是唯一的在系统重启时能正常工作的地址空间。这也是为什么重新启动时的入口向量是0xBFC0 0000。这个向量相应的物理地址是0x1FC0 0000。将使用这段地址空间去存取你的初始化ROM。大多数人在这段空间使用I/O寄存器。

kseg2: 0xC000 0000 - 0xFFFF FFFF (1G): 这段地址空间只能在核心态下使用并且要经过MMU的转换。在MMU设置好之前,不能存取这段区域。除非你在写一个真正的操作系统,一般来说你不需要使用这段地址空间。
发表于 2007-8-30 11:47:25 | 显示全部楼层
最后这个帖子对4段存储区介绍的很好,一个问题:

对应kseg0和kseg1如果映射为同一段地址,mips如何存取?
发表于 2007-11-15 14:39:50 | 显示全部楼层
有些理解了,谢谢!
发表于 2007-12-5 11:12:33 | 显示全部楼层

佩服

gaowei,您的专业英语非常牛必!佩服啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-1-5 15:47 , Processed in 0.021857 second(s), 8 queries , Gzip On, Redis On.

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