嵌入式Linux--MYiR板--系統引導(system boot)

1.概覽

 引導過程從上電覆位(POR)開始,在此硬件復位邏輯強制ARM內核從片上引導ROM開始執行。

 引導ROM代碼使用內部寄存器BOOT_MODE [1:0]的狀態以及各種 eFUSE 和/或 GPIO 設置的狀態來確定設備的引導流程行爲。ROM的主要功能包括:

  • 支持從各種啓動設備啓動
  • 串行下載器支持 (USB OTG 和 UART)
  • 設備配置數據(Device Configuration Data ,DCD)和插件
  • 基於數字簽名和加密的高安全啓動(High-Assurance Boot ,HAB)
  • 從低功耗模式喚醒

引導ROM支持下面這些引導設備:

  • NOR flash
  • NAND flash
  • OneNAND flash
  • SD/MMC
  • 串行(cs,clk,mosi, SPI) NOR flash and EEPROM
  • 四線(cs,clk,SIO1,SIO2,SIO3,SIO4, QSPI) flash

 引導ROM使用BOOT_MODE和eFUSE的狀態來確定引導設備。 出於開發目的,可以使用GPIO引腳輸入來覆蓋用於確定引導設備的eFUSE。

 引導ROM代碼還允許下載要在設備上運行的程序。 該示例是一個配置程序,該程序可以進一步利用串行連接爲啓動設備提供新的映像。 通常,將配置程序下載到內部RAM,並允許對引導設備(例如SD / MMC閃存)進行編程。 ROM串行下載器在非流模式連接中使用高速USB,而在流模式連接中使用UART。 引導ROM允許從低功耗模式中喚醒。 復位後,ROM檢查電源門控狀態寄存器。 從低功耗模式喚醒時,內核會跳過從引導設備加載映像的過程,並跳轉到保存在PERSISTENT_ENTRY0中的地址。

 設備配置數據(Device Configuration Data,DCD)功能允許引導ROM代碼從駐留在引導設備上的外部程序鏡像獲取SOC配置數據。 例如,DCD可用於對DDR控制器進行編程以實現最佳設置,從而提高引導性能。 DCD限於對於引導目的必不可少的存儲區和外圍設備地址(請參閱寫入數據命令)。

 引導ROM的一項關鍵功能是能夠執行安全引導或高安全性引導(HAB)。 HAB安全庫支持此功能,它是ROM代碼的子組件。 HAB使用硬件和軟件以及公鑰基礎結構(PKI)協議的組合來保護系統,防止執行未經授權的程序。 在HAB允許執行用戶映像之前,必須對映像進行簽名。 簽名過程是在圖像構建過程中由私鑰持有者完成的,然後將簽名作爲最終程序圖像的一部分包含在內。 如果配置爲這樣做,則ROM使用程序映像中包含的公共密鑰來驗證簽名。 除了支持數字簽名驗證來驗證程序映像之外,還支持加密啓動。 加密的引導可用於防止直接從引導設備克隆程序鏡像。

 除串行下載器外,還可以在芯片上支持的所有啓動設備上執行HAB的安全啓動。 引導ROM中的HAB庫還提供API功能,從而允許其他引導鏈組件(bootloader)擴展安全引導鏈。 SEC_CONFIG的出廠設置是開放配置,其中ROM / HAB執行鏡像認證,但是所有認證錯誤都將被忽略,並且仍然允許執行鏡像。

在這裏插入圖片描述
在這裏插入圖片描述

2.引導模式(Boot modes)

 復位期間,芯片檢查電源門控控制器狀態寄存器。 引導期間,內核的行爲由引導模式引腳設置定義,如引導模式引腳設置中所述。 從低功耗啓動模式喚醒時,內核會跳過時鐘設置。 引導ROM將檢查PERSISTENT_ENTRY0(請參閱持久位)是否是指向有效地址空間(OCRAM,DDR,QSPI或EIM)的指針。 如果PERSISTENT_ENTRY0是指向有效範圍的指針,則它將使用PERSISTENT_ENTRY0寄存器中的入口點開始執行。 如果PERSISTENT_ENTRY0是指向無效範圍的指針,則內核將執行系統復位。

2.1 啓動模式引腳設置

該設備具有四種引導模式(一種保留給NXP使用)。 根據內部BOOT_MODE寄存器中存儲的二進制值選擇引導模式。通過在POR_B的上升沿對BOOT_MODE0和BOOT_MODE1輸入進行採樣來初始化BOOT_MODE。 在對這些輸入進行採樣之後,它們的後續狀態不會影響BOOT_MODE內部寄存器的內容。 內部BOOT_MODE寄存器的狀態可以從SRC引導模式寄存器(SRC_SBMR2)的BMOD [1:0]字段中讀取。 可用的引導模式爲:從保險絲引導,通過USB的串行引導和內部引導。 請參閱下表進行設置:

啓動引腳模式設置

BOOT_MODE[1:0] Boot Type
00 Boot From Fuses
01 Serial Downloader
10 Internal Boot
11 Reserved

2.5 內部啓動模式(Internal Boot mode (BOOT_MODE[1:0] = 0x02))

 BOOT_MODE [1:0]寄存器中的值爲0b10選擇內部引導模式。在這種模式下,處理器繼續從內部引導ROM執行引導代碼。引導代碼執行硬件初始化,從所選的引導設備加載程序鏡像,使用HAB庫執行鏡像驗證(請參閱引導安全性設置),然後跳轉到從程序鏡像派生的地址。如果在內部引導過程中發生錯誤,則引導代碼將跳至Serial Downloader(請參閱Serial Downloader)。在所有三種引導模式下,都可以使用HAB進行安全引導。
 當設置爲內部啓動時,啓動流程可以通過eFUSE設置與使用通用I / O(GPIO)引腳替代熔絲設置的選項來控制。 GPIO引導選擇熔絲(BT_FUSE_SEL)確定ROM在該模式下是將GPIO引腳用於選定數量的配置參數還是eFUSE。

  • 如果BT_FUSE_SEL = 1,則所有引導選項均由表8-2中所述的eFUSE控制。
  • 如果BT_FUSE_SEL = 0,則可以使用以下命令設置特定的引導配置參數

 GPIO引腳而不是eFUSE。表8-2的GPIO列中列出了在這種模式下可以覆蓋的保險絲。表8-3提供了GPIO引腳的詳細信息。
 GPIO替代的用途旨在進行開發,因爲這些焊盤在已部署的產品中用於其他目的。恩智浦建議通過已部署產品中的eFUSE控制啓動配置,並保留僅將GPIO模式用於開發和測試目的。

8.5 啓動設備(內部啓動)(Boot devices (internal boot))

該芯片支持以下引導閃存設備:

  • 帶有外部接口模塊(EIM)的NOR閃存,位於CS0,16位總線寬度。
  • 具有EIM接口的OneNAND閃存,位於CS0上,總線寬度爲16位。
  • 原始NAND(MLC和SLC)以及通過GPMI-2接口的切換模式NAND閃存。 頁面大小分別爲2 KB,4 KB和8 KB。 支持2位到40位BCH硬件ECC(糾錯)的8位總線寬度。
  • 四路SPI閃存。
  • 通過USDHC接口的SD / MMC / eSD / SDXC / eMMC4.4,支持大容量卡。
  • 通過SPI(串行閃存)引導EEPROM。

外部引導設備類型的選擇由BOOT_CFG1 [7:4] eFUSE控制。 請參閱此表以瞭解更多詳細信息:

啓動設備選擇

BOOT_CFG1[7:4] Boot device
0000 NOR/OneNAND (EIM)
0001 QSPI
0011 Serial ROM (SPI)
010x SD/eSD/SDXC
011x MMC/eMMC
1xxx Raw NAND

板子通過撥碼開關來設置啓動方式

在這裏插入圖片描述

撥碼開關
SW1 (bit1) BOOT_CFG1[7]
SW2 (bit2) BOOT_CFG1[6]
SW3 (bit3) BOOT_MODE0
SW4 (bit4) BOOT_MODE1

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章