PLDM 韌體檔案格式概述¶
PLDM 韌體包是一個二進位制檔案,其中包含一個描述韌體包內容的頭。這包括一個初始包頭、一個或多個韌體記錄,以及一個或多個描述實際要程式設計的快閃記憶體內容的元件。
此圖提供了檔案格式的概述
overall file layout
+----------------------+
| |
| Package Header |
| |
+----------------------+
| |
| Device Records |
| |
+----------------------+
| |
| Component Info |
| |
+----------------------+
| |
| Package Header CRC |
| |
+----------------------+
| |
| Component Image 1 |
| |
+----------------------+
| |
| Component Image 2 |
| |
+----------------------+
| |
| ... |
| |
+----------------------+
| |
| Component Image N |
| |
+----------------------+
包頭¶
包頭以 PLDM 檔案格式的 UUID 開頭,幷包含有關檔案所用格式版本的資訊。它還包括總頭大小、釋出日期、元件點陣圖大小以及整體包版本。
下圖提供了包頭的概述
header layout
+-------------------------+
| PLDM UUID |
+-------------------------+
| Format Revision |
+-------------------------+
| Header Size |
+-------------------------+
| Release Date |
+-------------------------+
| Component Bitmap Length |
+-------------------------+
| Package Version Info |
+-------------------------+
裝置記錄¶
裝置韌體記錄區域以一個指示檔案中記錄總數的計數開始,然後是每個記錄。單個裝置記錄描述了哪個裝置與此記錄匹配。所有有效的 PLDM 韌體檔案必須至少包含一個記錄,但如果它們支援多個裝置,則可以選擇包含多個記錄。
每個記錄將透過描述裝置的 TLV(例如 PCI 裝置和供應商資訊)來標識其支援的裝置。它還將指示此裝置使用哪些元件集。給定記錄可能只使用提供的元件的子集。記錄還可以選擇包含裝置特定的包資料,這些資料將在更新過程中由裝置韌體使用。
下圖提供了裝置記錄區域的概述
area layout
+---------------+
| |
| Record Count |
| |
+---------------+
| |
| Record 1 |
| |
+---------------+
| |
| Record 2 |
| |
+---------------+
| |
| ... |
| |
+---------------+
| |
| Record N |
| |
+---------------+
record layout
+-----------------------+
| Record Length |
+-----------------------+
| Descriptor Count |
+-----------------------+
| Option Flags |
+-----------------------+
| Version Settings |
+-----------------------+
| Package Data Length |
+-----------------------+
| Applicable Components |
+-----------------------+
| Version String |
+-----------------------+
| Descriptor TLVs |
+-----------------------+
| Package Data |
+-----------------------+
元件資訊¶
元件資訊區域以元件數量計數開始。此計數之後是每個元件的描述。元件資訊指向檔案中儲存元件資料的位置,幷包含用於標識元件版本的版本資料。
下圖提供了元件區域的概述
area layout
+-----------------+
| |
| Component Count |
| |
+-----------------+
| |
| Component 1 |
| |
+-----------------+
| |
| Component 2 |
| |
+-----------------+
| |
| ... |
| |
+-----------------+
| |
| Component N |
| |
+-----------------+
component layout
+------------------------+
| Classification |
+------------------------+
| Component Identifier |
+------------------------+
| Comparison Stamp |
+------------------------+
| Component Options |
+------------------------+
| Activation Method |
+------------------------+
| Location Offset |
+------------------------+
| Component Size |
+------------------------+
| Component Version Info |
+------------------------+
| Package Data |
+------------------------+
包頭 CRC¶
在元件資訊之後是一個短的 4 位元組 CRC,它根據所有頭資訊的內容計算得出。
元件映像¶
元件映像緊隨 PLDM 韌體檔案中的包頭資訊之後。每個映像都只是一個二進位制塊,其起始位置和大小由元件資訊區域中匹配的元件結構定義。