天天看點

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啟動位址

繼續閱讀