NVIDIA Jetson 作為開發者套件是最簡單的入門方法之一,可以將高性能 Arm 內核與NVIDIA 自己的高級 GPU 引擎結合在一起,使其功能強大且易于使用。在這篇文章中,我們將從 Jetson Nano 入手詳細分析英偉達系列芯片的啟動過程,通過對比分析 Jeston 和 Drive 驅動的區別,總結英偉達系列芯片的整體啟動過程原理。
NVIDIA芯片內部啟動流程分析
1、加載硬件驅動
首先,芯片啟動是需要驅動底層硬件驅動模塊,通常行業內稱之為BootLoader引導啟動方式。該引導流程是引導加載程序執行,從而初始化 SoC 和并未后續加載芯片級上操作系統做準備。
Bootloader 期間需要執行的主要操作包含如下:
初始化存儲設備、內存控制器 (MC)、外部內存控制器 (EMC) 和 CPU
設置安全參數
加載和驗證固件組件
維護信任鏈
為各種固件組件創建內存分配
刷寫存儲設備
引導至操作系統
2、加載軟件模塊
整個芯片應用軟件及操作系統等軟件包的啟動包含三大部分:引導和電源管理處理器BPMP、平臺安全控制器PSC、中央處理單元CPU。對于整個軟件啟動而言,實際應該是兩段式啟動加載。類似TI系列的SPL加載方式一樣。英偉達系列芯片首先需要進行底層微啟動模塊MB1的驅動加載,完成如下一些工作:
平臺配置,包括 pinmux、GPIO、焊盤電壓、SCR 和防火墻;
加載固件,包括初始化 CPU 復合體 (CCplex) 的組件;
創建內存分割;
下圖顯示了引導軟件中的控制流程。
首先,通過業務流程管理平臺 BPMP 輸入給服務端相應的業務流。業務流程管理平臺涉 及如下的資源分散流程。包括通過硬件連接方式初始化啟動媒體,并從中加載微驅動器Microboot1(MB1)。
1)BPMP(引導和電源管理處理器)
驅動存儲器BootROM (BR) 硬連線到 SoC,它在 BPMP 離開重置狀態時開始執行初始化啟動媒體,并從存儲中加載啟動配置表 BR(BCT)、信息安全的平臺控制器驅動PSC(BL1)、微啟動模塊Microboot1 (MB1) 和 模塊配置表MB1(BCT),然后停止。
BootROM 引導配置表 (BR-BCT) 的最多四個副本可以存儲在引導介質的開頭。BR-BCT的每個副本都在“設備擦除扇區大小”邊界上對齊,如有必要,副本之間留有空白空間。BR-BCT 包含 BootROM 用于硬件初始化的配置參數以及有關引導加載程序(MB1、MB1-BCT 和 PSC-BL)的信息,包括:尺寸、入口點、加載地址、散列。BootROM 使用此信息來驗證和加載 Bootloader 和 MB1-BCT 的組件。
接通電源后,BPMP 會喚醒并執行存儲在板載 iROM (BootROM) 中的初始引導代碼。在安全環境中,此時的主要目的是驗證和初始化所有低級系統功能。這些是基本時鐘、內部電 源軌和啟動媒體(SD、SPI 等)之類的東西,然后解析啟動配置表 (BCT) 以尋找有效的啟動配置。
2)平臺安全控制器 (Platform security controller,PSC)
前序文章中提到信息安全子系統包括平臺安全控制器(PSC)以及信息安全引擎(SE)。其中,PSC-ROM 通過硬連線到 NVIDIA Orin 芯片中。將來自保險絲的 OEM 密鑰和來自 RTL 的 NVIDIA 密鑰安全地加載到安全引擎中。
安全控制器需要驗證和解密引導 ROM 加載的二進制文件。ROM 是 SoC 中的硬件組件,一旦處理器被重置,它就會開始運行。前文提到PSC-ROM 擁有 NVIDIA 和 OEM 身份驗證和解密所需的所有密鑰。它為 BootROM 提供鑒權和解密服務,并能很好的管控和引導BPMP(即 MB1)和 PSC(即 PSC-BL1)進行下一階段的服務。
相應的安全啟動引導流程順序如下:
注意:根據 BOOT_SECURITY_INFO 保險絲設置,可選擇對 MB1-BCT 進行解密。
引導 ROM 和 PSC-ROM 使用名為 BR_BCT 的引導配置表,其中包含以下信息:
MB1、PSC-BL1、MB1-BCT的BCH存儲位置引導鏈參數 PSC-ROM 使用的調試標志。MB1_BCT 通常不能由客戶進行配置,驗證 BCH/BCT 中與計算值匹配的 SHA-512 散列。使用 BCH/BCT 中的公鑰驗證公共簽名,并根據其在保險絲中的摘要進行驗證。BCH 包含 SHA-512,然后由 PSC-ROM 進行再次驗證。
BootROM執行完畢后,PSC-ROM/PSC-BL1釋放BPMP R5上的reset,啟動Microboot1(MB1),啟動流程如下:
MB1 擴展 BootROM 以提供與 PSC-BL1 相同的安全級別。在 MB1 序列期間,將執行以下任務:
設置時鐘和安全設置
從 MB1_BCT 初始化平臺配置設置
根據MB1引導配置表、MB1_BCT、MEM_BCT初始化SDRAM。
初始化 CCPLEX,包括 MCE FW
加載/驗證 NVDEC、BPMP-FW、PSC-FW 和 TSEC 固件
加載 SC7 固件并準備 SC7 上下文
加載/驗證
3)CPU Microboot1(MB1)
該模塊運行在 BPMP 之上,是BootROM在 AOTZRAM 中加載的第一個引導軟件組件。它初始化 SoC 的某些部分,并執行安全配置。MB1 由 NVIDIA 擁有的密鑰簽名和加密。
下圖顯示了它的控制流程。
安全啟動過程需要找到有效的 BCT,它將加載 TegraBoot 二進制文件并傳輸到在非安全環境中運行的二進制文件中。TegraBoot 有不同的二進制文件,一種用于冷啟動路徑,一種用于熱啟動。
重置或開機被定義為“冷”啟動,“熱”啟動是從掛起狀態恢復。熱啟動將執行一組不同的配置。一個單獨的“恢復”模式二進制文件用于通過 USB 處理與閃存/升級路徑的通信。它的使用取決于開機時的 GPIO 引腳狀態和連接的有效外部 USB 主機。如果未找到有效的 BCT, 它也會進入此狀態(例如,首次從生產中啟動) 。在正常的“冷”引導流程中,TegraBoot 將加載 CCPLEX 相關引導加載程序、EL3 監控程序包(Arm Trusted Firmware,ATF)、掛起模式支持固件和更全面的引導加載程序,稱為 CBoot。
注意:所有時間戳都與開機有關,輸出來自BPMP,直到它停止。系統設備樹二進制文件也被加載,內核和引導加載程序允許有不同的版本,但實際上在大多數情況下它們往往是相同的副本。
CCPLEX 的主要 EL2 引導加載程序是 CBoot,該二進制文件被加載到主系統內存中并設 置為下一個可執行文件。當主 CCPLEX 啟動時,它將執行轉移到之前加載的 CBoot 二進制 文件。
SC7 掛起模式固件與運行時 BPMP 固件一起加載,這是該處理器執行的非引導加載程序 相關代碼。加載 EL3 監視器/ATF 包并檢查其完整性。為下一階段的啟動加載了所有內容,主 CCPLEX 被釋放并且 BPMP 自行停止。將在稍后的過程中重新啟動,之前加載的 BPMP-FW 將充當主要 CCPLEX 訪問電源管理和低級系統控制功能的通信路徑(通過共享內存郵箱和 PSCI)。
TZ(Trusted Zone),ATF(ARM Trusted Firmware) ;是 ARM 在 Arm V8 引入的安全解決方案,為安全提供了整體解決方案。包括啟動和運行過程中的特權級劃分,對Trust Zone(TZ)的優化,補充了啟動過程信任鏈的傳導,細化了運行過程的特權級區間。
基于NVIDIA芯片的自動駕駛系統架構電源設計及啟動流程
這里以單 Orin系列 實現的架構方案來說明如何針對性的進行域控層級的啟動時序與電源管理 BPMP 。
英偉達系列芯片的啟動過程包含:冷啟動、熱啟動、深睡眠(SC7)、電源管理。其中電源管理包含底層時鐘管理(存儲控制器頻率交換機)、Orin芯片系列電源狀態管理,進程、電壓和溫度傳感器管理。整個驅動與電源管理包含一個 ARM Cortex-R5 處理器,該處理器有雙精度浮點單元(FPU)。雙精度 FPU 的這種特性包含了板上 Cortex-R5(比如 AON 和 RCE)簇的所有特性。內置的兩個緊耦合的存儲單元:ATCM 和 BTCM,可以分別存儲片上驅動 ROM 和一個128KB 的 RAM(用于執行延遲關鍵代碼)。驅動與電源管理的另一些特性是還有矢量中斷控制器、計時器、直接內存訪問(DMA)、NIC、地址映射邏輯、Debug 調試等,這樣可以確保對驅動和電源管理的完整支持。
1、Orin PMIC
Orin-x系列芯片電源包含一個電源序列 VRS-10,高電流電壓矯正器(HCVR)VRS-11,VRS-12 電壓監視器和電流電壓矯正器(LCVR),VRS-10 提供了基于多電壓矯正器的事件測序輸出, 這樣就可以存儲到六個 OTP 序列用于上下電,SC7 的進入/退出。由于 Orin-n 不再需要 DLA 和 PVA,因此 VDD_CV 軌也就不再需要。此外,在 VDD_GPU 的電源軌也僅僅是單相的。
2、MCU PMIC
安全的 MCU 可用于功能安全,其中包含監控和控制 Orin 芯片的電源軌進入。MCU 的 GPIO 引腳可以用于使能電源序列,同時科被當做一個電源信號的回讀信號。一般考慮到系統需求,Orin 芯片的進入設計可以運行在不同的電源狀態下,不同的進入狀態是由不同的進入條件來觸發的。
MCU 的 PMIC 管理模塊(TLF35584)可以提供 MCU 對應的電量,并且喚醒可用的 CAN 鏈路。SPI總線則可用于在 MCU PMIC 和 MCU 之間進行通信,從而實現對系統的喚醒、休眠、看門狗心跳的模式設置。
3、電源樹設置
在 Orin Entry 設計后,即可通過 KL30 接入電源,MCU 可以控制 Orin 的電源。Orin Entry 設計也可以支持“深度睡眠”(由 SC7 進行電源狀態管理,后面會做詳細說明)。整個域控的喚醒要么由 CAN,要么由專門的連接器輸入喚醒。
如下圖表示了 Orin Entry 設計的電源樹圖。
為了詳細的說明 Orin 電源子系統的電源樹結構,這里可以將電源樹結構區分為三大部分:蓄電池接入端 KL30、降壓器、穩壓器(TLF35584 或 LM5176)。
TLF35584 QVVS2 是一款多輸出系統電源,適用于安全相關應用,通過高效靈活的前置/后置穩壓器,在寬輸入電壓范圍內提供 3.3V-μC、收發器和傳感器。它具備寬開關頻率范圍允許在效率和小型濾波器組件的使用方面進行優化。專用參考穩壓器獨立于 μC 負載階躍為 ADC 供電,并充當 2 個獨立傳感器電源的跟蹤源。靈活的狀態機、包括定時器在內的喚醒概念以及備用穩壓器有利于在整個電源樹設計中首先進行降壓穩壓處理。
本電源樹設計模塊配置為在 6V-36V 的輸入電壓范圍內工作,并提供具有高達 12A 負 載電流的 12V 穩壓輸出。因此,可以通過 LM5176 供給 MCU 和 Can 收發器作為電壓輸入。通過使用穩壓器 LM5176 可調節電流限制、使能、頻率同步、電源正常、預偏置啟動、同步 整流、UVLO 可調整。同時,LM5176 的寬輸入電壓降壓-升壓控制器可以輸出靈活的高功率降壓-升壓設計。通過高效同步 DC-DC 降壓轉換器(如 TPS62065-Q1)可以提供固定的 5V 和 3.3V 輸出給到 MCU、攝像頭單元、超聲波接口、冷卻系統、芯片內部的工作電壓 VDD。且MCU 的最高輸出電流可以達到2A。
此外,通過使用 LM5143 降壓器,其中的高密度評估模塊(EVM)可以實現高性能、雙通道、汽車同步 DC/DC 降壓控制器的性能。它可在 3.5V 至 36V 的寬輸入電壓范圍內運行,這樣整個有 Orin 配置的域控電源閉環就可以實現系統電源及子系統電源電壓的輸出了。這部分輸出可以完全供給給域控內部的以太網交換機、加解串器、SOC、Can PHY 以及接入電路電壓的控制。
4、電路保護
如上圖所示的反向電池保護模塊可以用于保護可能流入設備的負向電壓,這些設備都是 連接到電池輸入端的。通常,反向電壓保護是由二極管保護起來的。電源電壓監控有三個 VRS-12設備,每個設備有6個監控輸入,監控 Orin Soc 電源軌。
總結
本文從英偉達系列芯片本身啟動時序以及利用該芯片構建的自動駕駛系統外設電源管理及啟動模式進行分析,幫助讀者了解整個芯片的啟動原理及如何設計外圍最小化系統架構。后續文章中將更加詳細的就外圍設計電路的啟動路徑及電源管理時序等進行詳述。
審核編輯:劉清
-
控制器
+關注
關注
112文章
16203瀏覽量
177415 -
SDRAM
+關注
關注
7文章
422瀏覽量
55159 -
電源管理
+關注
關注
115文章
6155瀏覽量
144238 -
NVIDIA
+關注
關注
14文章
4940瀏覽量
102816 -
VDD
+關注
關注
1文章
311瀏覽量
33112
原文標題:英偉達系列芯片如何用于自動駕駛開發之(二):硬件電源設計
文章出處:【微信號:阿寶1990,微信公眾號:阿寶1990】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論