- 论坛徽章:
- 0
|
MIPS上电跳转分析
本文原创 欢迎转载
Cy158358.cublog.cn
之前一直想看看mips的上电跳转具体是如何实现的,无赖网上基本上就没有能让人一看就明白的相关资料,所以抽时间将这个知识点整理了一下,请大家批评指正.
下面将以一个具体的例子来进行分析.
相关硬件信息:
Cpu:OPL-06752-AG
Flash:s29gl064n90tfi04
Cpu的CS0做为Flash的片选
相关的寄存器信息:
Cpu有以下几个关键寄存器:
CS0 Configure Register:
缺省配置为:CS is valid, Select Parallel Flash, 8-bit mode for data bus
(CS0有效,使用并行flash,8bit的总线模式)
CS0 Base Address Register:
缺省配置为: the value of ADDR[31:12] of the base physical address is 0x1FC00
CS0 Address Mask Register:
缺省配置为: The address mask of ADDR[27:12] is 0xFC00
(以上两项决定了在 [0x1FC00000 ,0x1FFFFFFF)这4M空间进行寻址时CS0片选有效)
根据以上内容我们可以确定cpu与flash的硬件连接方式为:flash地址和数据总线并到cpu的地址和数据总先上,flash的片选和CS0连接,flash位宽模式设置为8bit模式.
好了,明确了以上硬件信息后我们可以来着手分析mips的上电过程了:
1. 上电后mips从0xbfc00000地址处取第一条指令,这个地址位于kseg1区域(只有这个区域是unmaped且uncached的,相关的知识请自行查找),注意这是一个虚拟地址,必须由cpu转换成物理地址后才能使用,这个区域的转换原则是将bit29~bit31剥离(由于只是进行了如此简单的转换,所以通常会把这个区域的虚拟地址叫做”未转换的地址”),从而在地址总线上出现的逻辑为0x1fc00000.
2. 注意前面说明的CS0 Address Mask Register和CS0 Base Address Register寄存器缺省值, 0x1fc00000恰好落在CS0的片选地址空间,所以CS0产生了,flash被使能.
3. 到这里看懂的人就要发问了,flash只有8M字节,而寻址的地址为508M空间的位置,这是怎么回事呢.打开flash的数据手册,看一下片子的地址线,原来它只有A0~A21共22根线,然后由于工作在8bit模式,数据线d15被用做地址线的最低位A-1,所以最终应该有23根地址线连在cpu的地址总线上,又由于A22被mask掉了,所以flash看到的地址为0.
到这里是不是对”从0xbfc00000处取第一条指令”这句话有了更深的理解呢?
地址逻辑图:
0001 1111 1100 0000 0000 0000 0000 0000 base:1fc00000
0000 1111 1100 0000 0000 0000 0000 0000 mask:0fc00000
0001 1111 1100 0000 0000 0000 0000 0000 addr:1fc00000
0000 xxxx xx01 1111 1111 1111 1111 1111 2M 地址线21根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 4M 地址线22根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 8M 地址线23根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 16M 地址线24根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 32M 地址线25根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 64M 地址线26根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 128M 地址线27根 addr & ~mask = 10000000=0
0000 xxxx xx11 1111 1111 1111 1111 1111 256M 地址线28根 addr & ~mask = 10000000=0
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69239/showart_2185354.html |
|