天天看点

powerpc启动地址

本文以芯片MPC8308为例介绍芯片上电时的启动地址

CPU 在复位时通常都从地址 0x00000000 取它的第一条指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如: ROM、 EEPROM或 FLASH 等)被映射到这个预先安排的地址上。

以下摘自mpc8308芯片手册:

4.3.2.2.1 Boot Memory Space (BMS)

The device defines the default boot ROM memory space to be 8 Mbytes at addresses 0x0000_0000 to 0x007F_FFFF or 0xFF80_0000 to 0xFFFF_FFFF. When the core comes out of reset, if it is enabled to boot, it fetches boot code from one of two addresses, 0x0000_0100 or 0xFFF0_0100, and exceptions are vectored to the physical addresses, 0x000n_nnnn or 0xFFFn_nnnn appropriately.

就是CPU会设置8Mbytes的启动空间,启动地址可能是从0x0000_0000开始或者0xFF80_0000。而取指令的地址也因空间不同而不同,第一种地址是从0x0000_0100开始,另外一种是从0xFFF0_0100开始。(详细见:/学习资料/u-boot分析/PowerPC上电复位的过程描述)而具体从那个地址启动是由配置决定的。(配置字 ->RCWHR ->BMS寄存器)

powerpc启动地址

系统复位时需要加载一个复位配置字,而这个复位配置字可能存在于NOR Flash,NAND Flash,I2C EEPROM 或者 使用硬编码的默认选项

具体从哪加载要通过CFG_RESET_SOURCE[0:3]来决定,而这几个值由TSEC1_TXD的4个引脚决定

powerpc启动地址

(PowerQUICC II Pro MPC8308硬件规范Table 53)

通过问硬件工程师,该值配置为1010,由Table 4-5可知,该配置字使用硬编码的默认选项

powerpc启动地址
powerpc启动地址

Reset Configuration Words包含RCWLR RCWHR RSR SPMR 4个寄存器,默认选项定义了这几个寄存器的值,其中RCWHR寄存器中定义了BMS的默认值,如下,由此可知boot的起始地址为0Xff80_0000

powerpc启动地址

继续阅读