PowerPC-MPC56xx Flash模式啟動過程


 
Flash啟動模式為最常用模式。
一般情況下,芯片上電之后,從flash起始位置讀取第一條指令的地址,然后跳轉到改地址處執行,進行一系列初始化動作。
flash起始位置存放的一般為reset中斷處理程序的地址。
 
MPC56xx SoC的啟動模塊,做的更多。但背離了慣常做法,增加學習成本,吃力未必討好。
 
一. Flash地址區間
芯片邏輯System Status and Configuration Module (SSCM)模塊按地址從低到高,逐個檢查Boot sector,看是否包含合法的BOOT_ID(0x5A),如果有,則選擇該Boot sector使用。
如果所有的都找完之后,沒有發現合法的Boot sector,則進入靜態模式。
 
二. 靜態模式
找不到合法的Boot sector,SSCM執行如下動作:
1. 為從BAM起始位置開始的4KB區間,創建MMU TLB entry,默認為VLE指令模式;
2. 設置CPU的程序計數器(PC)指向BAM首地址,並開始執行以進入靜態模式。
這個程序執行如下過程:
a. 打開看門狗Software Watchdog Timer (SWT);
b. 執行wait指令,暫停CPU執行;
3. 大約10ms后,SWT看門狗觸發reset程序,再次搜索合法的Boot sector;
如此周而復始。
 
三. Boot sector
Boot sector包含兩項內容:
1. 16-bit Reset Configuration Half Word (RCHW),包含BOOT_ID和VLE模式開關;
2. 32-bit reset vector,如果Boot sector合法,則SSCM將CPU的PC指向這個地址開始執行;
 
PS. 從flash結構圖可以看出,可以配置多個boot sector,存放多個系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM