跳至主要内容

網路啟動恢復

當您需要透過網路啟動 DevKit,而不是從可移除媒體啟動時,請使用網路啟動恢復功能。這在以下情況下很有用:

  • 您需要將 DevKit 降級到較舊版本的 SDK。
  • 您需要安裝一個不是最新版本的建置版本(例如,預發布的 develop 建置版本或內部工程映像檔)。
  • 您需要修復一個損壞了開機載入程式或檔案系統的板子,但沒有可用的 SD 卡。
  • 您正在進行新板卡的硬體啟動,並希望避免內部儲存裝置耗損。
  • 您正在將一個 Modalix DevKit 從 Yocto Linux 轉換為 eLxr,或者從 eLxr 轉換回 Yocto Linux。請參閱 轉換為 eLxr,以了解轉換所需的特定先決條件。
備註

本指南使用 SiMa.ai 提供的映像檔,且電路板上必須有可運作的 U-Boot 提示字元。本指南不說明如何安裝您自行建置的映像檔;若有此需求,請參閱將映像檔燒錄到 eMMC。

使用 --netboot 選項搭配 sima-cli bootimg。它會下載目標板的啟動映像,並從主機上的內建 TFTP 伺服器提供該映像。對於目前執行韌體 2.1.3 或更高版本的 DevKit 或 PCIe 卡,請新增 --devkit <ip>,以便主機能夠設定 U-Boot 環境並啟動網路啟動。然後,您可以跳過步驟 3。對於較舊的韌體或無法連線的裝置,請在步驟 3 中透過序列主控台設定 U-Boot。

步驟 1:實體設定
備註

此程序支援 macOS 以及 Ubuntu Linux 主機。

如果您尚未在您的主機上安裝 sima-cli,請在繼續之前先安裝。

使用主機的 Shell 工作階段來啟動 TFTP 伺服器,並開始 eMMC 快閃操作。我們建議使用獨立的序列主控台連線來監控網路啟動進度,即使在使用 --devkit 和 --autoflash 時也是如此。在步驟 3 中,需要使用序列主控台進行手動 U-Boot 設定。

  1. 將 DevKit 的乙太網路連接埠 直接連接到主機,並將主機的網路介面設定為靜態 IP 位址 192.168.1.10。在 Modalix 搶先體驗版 DevKit 上,使用乙太網路連接埠 0。

  2. 為了建立建議的序列連接,請將 DevKit 的 UART 埠 連接到主機,以便進行主控台存取。在主機上安裝 sima-cli 後,請開啟序列終端機:

    sima-user@sima-user-machine:~$ sima-cli serial
  3. 在 DevKit 上,按照 獨立模式網路設定 的步驟,將網路介面設定為預設的靜態 IP 位址 192.168.1.20。

步驟 2:在主機上啟動 TFTP Netboot 伺服器。

需求

  • 主機和 DevKit 必須位於相同的實體網路或直接乙太網路連線中。
  • 乙太網路連線必須是 Gigabit 介面或更快的介面(傳輸速率大於 1000 Mbps)。
  • 主機需要連線到網際網路才能下載韌體映像檔。
  • UDP 埠 69 (TFTP) 不得被主機的防火牆封鎖。

將 <version> 替換為目標 SDK 版本(例如 2.1.3),將 <boardtype> 替換為 modalix 或 mlsoc,並將 <fwtype> 替換為 yocto 或 elxr。

在 macOS 上:

sima-user@sima-user-machine:~$ sima-cli bootimg --boardtype <boardtype> --fwtype <fwtype> -v <version> --netboot

在 Linux 上:

注意

TFTP 伺服器會繫結到 69 埠,而該埠需要特權才能存取,因此 sudo 必須提供:

sima-user@sima-user-machine:~$ sudo ~/.sima-cli/.venv/bin/sima-cli bootimg --boardtype <boardtype> --fwtype <fwtype> -v <version> --netboot

從主機設定 Netboot(韌體 2.1.3 或更新版本)​

如果 DevKit 或 PCIe 卡目前正在執行韌體 2.1.3 或更高版本,並且可以從主機存取,請將 --devkit <ip> 附加到上述指令中。將 <ip> 替換為裝置目前的 IP 位址。主機會設定 U-Boot 環境並啟動網路啟動,因此您可以跳過步驟 3 並繼續到步驟 4。

若要在裝置完成網路啟動後自動進行閃存操作,請同時附加 --autoflash。

sima-user@sima-user-machine:~$ sima-cli bootimg --boardtype <boardtype> --fwtype <fwtype> -v <version> --netboot --devkit <ip> --autoflash

在 Linux 系統上,請使用上述相同的 sudo ~/.sima-cli/.venv/bin/sima-cli 前置詞。如果啟用了 --autoflash,則無需在步驟 4 中手動輸入 f 命令。如果可以,請保持序列主控台的連接,以便監控進度,並等待 CLI 提示您重新啟動。

這個指令:

  1. 下載指定 SDK 版本和板型對應的可開機映像檔。
  2. 將檔案解壓縮到一個暫時的工作目錄中。
  3. 啟動一個本機 TFTP 伺服器,並提供已解壓縮的啟動檔案(例如:Image、boot.scr、.dtb 檔案等)。
步驟 3:將 DevKit 設定為透過網路啟動

如果主機在步驟 2 中已設定網路啟動,且使用了 --devkit,則跳過此步驟。否則,請按照以下序列主控台程序操作。

在 DevKit 連接到主機時,進行電源重啟。如果在電源重啟過程中,序列埠連接中斷,請重新連接。等待直到看到「Hit any key to stop autoboot」,然後按下任意鍵以進入 U-Boot 介面:

... ... ...

Address in DT is ff:ff:ff:ff:ff:ff
Address in environment is 68:e1:54:00:05:c6
eth0: ethernet@a800000 [PRIME]
Hit any key to stop autoboot: 0
sima$

然後在 U-Boot 終端機中執行以下指令:

sima:~$ setenv boot_targets net; saveenv; boot

對於 Modalix eLxr 目標,在啟動之前也請設定 cpio 映像檔的名稱:

sima:~$ setenv cpio_name simaai-image-palette-modalix.cpio.gz; setenv boot_targets net; saveenv; boot

這會指示 DevKit 從步驟 2 中準備好的主機 TFTP 伺服器啟動。

備註

預設情況下,DevKit U-Boot 的設定如下:

  • ipaddr=192.168.1.20(DevKit的乙太網路介面,多埠板上的第一個埠)。
  • serverip=192.168.1.10(執行 TFTP 伺服器的主機)。

若要使用不同的網路,請在 U-Boot 中更新 serverip 和 ipaddr,使其與您的環境相符。請確認 DevKit 可以透過您選擇的 IP 位址連線到主機。

sima:~$ setenv serverip 10.0.0.10; setenv ipaddr 10.0.0.1; saveenv; boot
步驟 4:燒錄 eMMC。

如果您在步驟 2 中啟用了 --autoflash,則在透過網路啟動的裝置準備就緒後,刷機程序會自動開始。請監控進度,並在出現提示時重新啟動。否則,請使用以下手動指令。

這個 --netboot 主機上的 Shell 支援兩個指令:

  • c — 顯示所有已連線的使用者端,以及目前正在這些使用者端上執行的韌體版本。
  • f — 將選取的客戶端裝置的 eMMC 進行燒錄。

請等待 DevKit 完成網路啟動。這可能需要幾分鐘。一旦序列主控台上顯示登入提示,則板子已準備就緒。我們建議在整個啟動過程中保持序列主控台的連接,以便觀察完整的啟動序列。

切換回主機終端,然後按 Enter 鍵,直到您看到 netboot> 提示。您可以選擇輸入 c 以確認 DevKit 已連接,並顯示其目前的韌體版本,然後輸入 f 以進行燒錄:

netboot> f

您應該會看到類似以下的日誌:

🔍 Checking SSH availability for 192.168.1.20...
✅ Board is online!
✅ SSH is available on 192.168.1.20
netboot> f
🔧 Initiating eMMC flash [...]

該映像檔大小約為 1.6 GB,傳輸過程大約需要幾分鐘。以下為進度範例:

↦ 520093696 bytes (520 MB, 496 MiB) copied, 1 s, 515 MB/s
↦ 5368709120 bytes (5.4 GB, 5.0 GiB) copied, 163.331 s, 32.9 MB/s

完成燒錄後,請重新啟動 DevKit。它會從 eMMC 啟動目標版本。

疑難排解
  • 如果 DevKit 無法透過網路啟動,請確認主機和裝置是否位於相同的子網路中 (192.168.1.x)。

  • 在 Modalix 搶先體驗版中,僅支援乙太網路連接埠 0 進行網路啟動。

  • 在 Linux 上,請確認主機防火牆允許使用 UDP 埠 69(TFTP)。

  • 請驗證與 DevKit 的連線。

    modalix:~$ ping 192.168.1.10
  • 如果 DevKit 在網路啟動期間變更 IP 位址(例如,因為 DHCP 分配了新的位址),sima-cli 不會收到通知,並且可能繼續使用先前的位址。透過序列主控台連接到 DevKit,然後執行 ip addr 命令以找出其目前的 IP 位址。然後,在主機的網路啟動 shell 中使用該位址,並使用 f 命令來對設備進行刷機:

    netboot> f <actual-ip>
  • 如果 f 無法找到映像檔,請從步驟 2 重新執行 sima-cli bootimg --netboot 命令,以重新整理 TFTP 路徑。

  • 如果在將 Modalix DevKit 轉換為 eLxr 後,序列主控台上出現與 NFS 相關的錯誤訊息,則可以安全地忽略這些訊息。