U-boot移植(一)--基本概念

Bootloader基本概念:Bootloader是系統上電後,需要運行的第一段程序。主要完成硬件的初始化、準備軟件環境,調用系統內核。Bootloader具有很強的硬件依賴性,根據不同的CPU和具體的硬件平臺,需要做相對應的配置,移植是必須的。

Bootloader和BIOS是有區別的,個人理解從實現的功能上來說:Bootloader=BIOS+MBR(X86結構中Bootloader就在硬盤第一分區的MBR中),兩者所要完成的工作基本上是一樣的——硬件初始化和系統引導。

Bootloader啓動方式——啓動加載模式、下載模式。

CPU上電後都是從指定的地址開始程序的運行(不同的架構體系,首地址是不同的),例如:MIPS體系的CPU從0xBFC00000開始執行,而ARM則從0x00000000開始。

啓動加載模式:產品發佈後的工作模式。

下載模式:產品研發調試階段使用,通過串口或網絡等通信手段從主機下載文件。

Bootloader啓動過程:大部分的Bootloader都是多階段啓動(通常是兩個階段,分別由彙編語言和C語言實現)

第一階段(stage1)——依賴於CPU體系結構的代碼,主要完成和CPU體系結構相關的初始化,主要功能如下:

  • 定義入口,通過修改連接器腳本來完成;
  • 設置異常向量
  • 硬件設備初始化——關閉開門狗、中斷、設置cpu速度和時鐘頻率(不是必需的,s3c2410/s3c2440放在第二階段)、RAM初始化等;
  • 爲加載第二階段代碼準備RAM空間;
  • 複製第二階段代碼到RAM空間(也是非必需的,Norflash可直接執行代碼,但效率太低,不推薦);
  • 配置並初始化棧;
  • 跳轉到第二階段代碼的C入口點。

第二階段(stage2)——剩餘功能的實現

  • 初始化本階段要使用到的硬件設備——系統時鐘、定時器、串口控制檯、網絡設備、Flash等等
  • 檢測內存映射
  • 複製內核映像到RAM空間(如果內核映像是經過壓縮的,還需要解壓,有些內核具有自解壓功能則不用Bootloader實現)
  • 複製根文件系統映像到RAM空間(不是必需的,根據根文件系統的類型和內核訪問方式決定——這個有待學習)
  • 設置內核啓動參數
  • 調用內核
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章