Tiny210(S5PV210) U-BOOT(一)----啓動過程

      本文轉自http://blog.csdn.net/mutemob/article/details/8708401供學習參考

     CPU上電後,此時SP指針指向0x0000_0000,從這個地址取第一條指令。但此時:PLL沒有啓動,CPU工作頻率爲外部輸入晶振頻率,非常低(S5PV210中晶振在CPU旁邊,兩顆24MHz,一顆27MHz);CPU的工作模式、中斷設置等不確定;存儲空間的各個BANK(包括內存)都沒有驅動,內存不能使用。在這種情況下必須在第一條指令處做一些初始化工作,這段初始化程序與操作系統獨立分開,稱之爲Bootloader。下面以S5PV210用的U-BOOT爲例:


友善之臂Tiny210 SDK2用的是三星公司的S5PV210,在開始U-BOOT的移植之前,有必要弄清楚S5PV210的啓動過程:


由圖上所知,由OM(Operating Mode)pin導入到iROM中,OM是什麼?打開Tiny210V2_V1.0_120713_sch.pdf的原理圖,搜索OM

查找到一個表格,有上表可知,OM1/OM2/OM3決定的是從SD卡啓動還是從Nand Flash啓動。

繼續往下看,由圖可知,OM1/OM2/OM3分別接在XOM1/XOM2/XOM3上面。

再來看旁邊XOM的一個信號反相器74LVC1G04的圖


查看74LVC1G04原理圖,找到pin腳圖和邏輯圖



由圖可知,這是一個反相器,2中輸入高電平,則4中輸出低電平;2中輸入低電平,則4中輸出高電平,OK。
當XOM撥到1時,XOM1爲NC狀態,XOM1 = 0,pin4的輸出爲1,XOM2=XOM3=1,則爲0-1-1,爲SDBOOT;
當XOM撥到2時,XOM1爲輸入狀態,XOM1 = 1,pin4的輸出爲0,XOM2 = XOM3 = 0,爲1-0-0,Nand啓動模式,至此,OM的輸入判斷分析結束。

繼續看芯片手冊,手冊上關於iROM/iRAM及Bootloader描述如下:

  • The iROM code is placed in internal 64KB ROM. It initializes basic system functions such as clock, stack, and heap. 
  • The iROM loads the first boot loader image from a specific booting device to internal 96KB SRAM. The booting device is selected by Operating Mode (OM) pins. According to the secure boot key values, the iROM code may do an integrity check on the first bootloader image. 
  • The first boot loader loads the second boot loader then may check the integrity of the second boot loader according the secure boot key values. 
  • The second boot loader initializes system clock, UART, and DRAM controller. After initializing DRAM controller, it loads OS image from the booting device to DRAM. According to the secure boot key values, the second boot loader can do an integrity checkon the OS image. 
  • After the booting completes, the second boot loader jumps to the operating system. 
按照芯片手冊上的啓動分析圖及上面的描述,總結啓動流程爲:
S5PV210上電將iROM(interal ROM)處執行固化的啓動代碼,它對系統時鐘進行初始化,對啓動設備進行判斷,並從啓動設備中複製BL1(最大16KB)到iRAM(0xd002_0000處,其中0xd002_0010之前的16個字節存儲的的BL1的校驗信息和BL1尺寸)中,並對BL1進行校驗,檢驗OK轉入BL1進行執行;BL1執行完成後,開始執行BL2,BL2加載內核,把OS在SDRAM中運行起來。
BL0,BL1,BL2:
(1)BL0:是指S5PV210的iROM中固化的啓動代碼
作用初始化系統時鐘,設置看門狗,初始化堆和棧,加載BL1
(2)BL1:是批在iRAM自動從外擴存儲器(nand/sd/usb)中拷貝的uboot.bin二進制文件的頭最大16K代碼
作用初始化RAM,關閉Cache,設置棧,加載BL2
(3)BL2:是指在代碼重定向後在內存中執行的uboot的完整代碼
作用初始化其它外設,加載OS內核
(4)三者之間的關係:(Interal ROM固化代碼)BL0將BL1(bootloader的前16KB--BL1)加載到iRAM;BL1然後在iRAM中運行將BL2(整個bootloader)加載到SDRAM(DDR);BL2加載內核,把OS在SDRAM中運行起來,最終OS是運行在SDRAM(內存)中的。
在這個過程中,u-boot需要初始化的硬件是CPU和DDR,所以,這兩個硬件必須在u-boot階段就做好初始化的工作。
發佈了39 篇原創文章 · 獲贊 37 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章