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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

请教关于MIPS启动时的问题

[复制链接]
发表于 2006-1-9 15:31:36 | 显示全部楼层 |阅读模式

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

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

x
我的嵌入式Linux产品用的是R4600的mips cpu,有些关于启动的问题不了解。
MIPS启动时的地址是0x1FC00000吧?我看了我的这款CPU的spec,发现0x1FC00000处是Internal ROM,然后flash放在0x10000000处,sdram放在0x14000000处。此CPU的线路图显示:boot from flash,也就是从flash启动。但是我看了boot code,发现boot code的link文件中flash的地址为0x90000000,sdram为0x94000000!
请问cpu启动时怎么能跑到0x90000000呢?难道是因为MIPS的kseg0,kseg1,kuseg的关系,使得0x10000000对应0x90000000?
百思不得其解,请大侠请教,非常感谢!
发表于 2006-1-9 19:58:35 | 显示全部楼层

请教关于MIPS启动时的问题

这是kseg0段,一般用于存放操作系统内核或大多数程序,并且通过cache来访问。TLB会将高位清成0来映射到1xxxxxxx物理地址。
这些知识在mips的手册上都有,你仔细看看就知道了。
 楼主| 发表于 2006-1-10 09:24:32 | 显示全部楼层

请教关于MIPS启动时的问题

谢谢老扁。
但我还是不明白啊。CPU刚刚启动时就有TLB了么?不是先跑boot code,在boot code中再进行系统的初始化,再进入Linux内核的吗?
我有疑问,可能是因为我看到ARM的启动就很容易理解:ARM是在0x00000000处启动,直接把复位异常向量放在0x00000000。
为什么MIPS分几个段(kseg0,kseg1,...)这么复杂?
盼得到答复,非常非常感谢!
发表于 2006-1-10 10:27:09 | 显示全部楼层

请教关于MIPS启动时的问题

1、kseg0是unmapped-cached空间,因此不需要tlb。
2、kseg1:操作系统初始化和i/o用;
   kseg0:内核其他部分用;
   kseg3、ksseg:当内核超过512M时使用;
   kuseg:用户空间。
3、其实俺们对于软件也不是太懂,不当之处请包涵。
 楼主| 发表于 2006-1-10 10:51:31 | 显示全部楼层

请教关于MIPS启动时的问题

谢谢bigbird和老扁的快速回答,我学到了不少知识。
我是这样理解的:CPU启动时会到某个地址处运行,ARM的是0x00000000,MIPS的是0x1FC00000。这个地址应该放的是boot code(uboot,redboot,pmon等等)。请教了一些做ARM的同事,ARM确实boot code是放在0x00000000处。
但是我的MIPS CPU(TI的TNETD7300)的Spec手册中,flash是在0x10000000,SDRAM是在0x14000000,0x1FC00000处是Internal
ROM(老实说,我不知道怎么确定这个CPU到底有没有Internal ROM,是不是会先跑它)。看TI提供的boot code,Linker文件将flash放在0x9000000中,SDRAM放在0x94000000中。
我有这些疑问:
MIPS CPU应该先到0x1FC00000的Internal ROM吧?但是线路图上设定boot from flash,那是不是就直接跑flash了?假设确实是跑flash,也应该是0x10000000啊,怎么Linker文件写的是0x90000000呢?我猜测,CPU刚启动时,肯定不会有map,cache的,这些需要boot code设定吧?没有了map,没有了cache,CPU怎么能将0x90000000和0x10000000对应起来的呢?
还有一个问题,我觉得CPU启动时,应该只能跑到unmapped,uncached的kseg1吧?
非常感谢!
发表于 2006-1-10 11:56:41 | 显示全部楼层

请教关于MIPS启动时的问题

刚启动时,确实是先进入0xBFC00000空间,对应物理地址0x1FC00000,完成初始化指令后取得跳转指令就进入自己的flash空间了,你的cpu的flash空间估计是kseg0。
 楼主| 发表于 2006-1-10 13:12:01 | 显示全部楼层

请教关于MIPS启动时的问题

谢谢老扁!
我想可能是我对CPU的地址理解不深,所以还不大明白。
例如:“刚启动时,确实是先进入0xBFC00000空间,对应物理地址0x1FC00000”。为什么会有两个地址0xBFC00000和0x1FC00000?一个是虚拟地址,一个是物理地址?不会吧,刚启动只有物理地址啊!为什么刚启动,kseg1中的地址0xBFC00000会和kuseg中的0x1FC00000对应?如果能对应,那岂不是用到地址映射了?
老扁能不能帮我解析一下到底这些地址段kseg0,kseg1,kseg2和kuseg是怎样对应的?难道这些段中的某些地址中是可以对应的?
我想,如果能清楚了解这点,一切都好办了。(我查了一下《See MIPS Run》,也没什么发现)
根据您的回答,我猜测我的CPU是这样运行的:刚启动是,CPU确实是进入Internal ROM(0x1FC00000),然后Internal ROM中有跳转指令,根据跳转指令就能跳到flash(0x10000000),对吧?
盼答复,谢谢!
发表于 2006-1-10 13:19:48 | 显示全部楼层

请教关于MIPS启动时的问题

你参看see mips run 37-38页的说明
 楼主| 发表于 2006-1-11 13:23:14 | 显示全部楼层

请教关于MIPS启动时的问题

谢谢老扁。你指的是电子版的《see mips run》吧?37-38页说的是页映射啊:“6.1.3页映射最佳”,“6.1.4 我们真正想要的”。好像没有我要的答案?我们指的不是相同的内容?能不能把它的节名列出来?
非常感谢!
发表于 2006-1-11 14:20:11 | 显示全部楼层

请教关于MIPS启动时的问题

2.8节 basic address space,电子版似乎把36页丢啦。
37~38页不会到第六章的吧?不知道你是咋看的,呵呵。
如果是中文版应该是32页:基本地址空间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-20 21:44 , Processed in 0.034651 second(s), 9 queries , Gzip On, Redis On.

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