SemiDrive X9 系列 Linux 系統 U 盤升級

一、前言

        芯馳 X9H 晶片,搭載多個操作系統協同運行,系統實現了儀表、空調、中控、副駕多媒體的四屏驅動控制,在人車智能交互上可以通過顯示屏、螢幕觸摸控制、語音控制、物理按鍵控制、車身協議的完美融合,使汽車更智能。讓車主及乘客有更好的體驗樂趣。在實際項目中會有對系統進行升級的需求,今天給家介紹如何通過 U 盤對 Linux 系統進行升級。

二、硬體 & 軟體環境概述

SemiDrive X9 系列 Linux 系統 U 盤升級

  • 硬體環境:X9H REF A03 開發板
  • 軟體環境:ATU 服務器
  • 軟體平台:3
  • 軟體工具:SDToolBox–R2.24.0501

三、開發板準備工作

1. 程序編譯

        編譯出一個可以燒錄並運行的 PAC 包,本文環境硬體為 X9_Ref_A03 開發板,軟體基線為 PTG4.3,單 Linux 系統。

        整體流程是通過設置啟動原因並復位系統後,系統在 bootloader 階段實施 U 盤檢測,若檢測到 U 盤並且其中包含正確格式的 sdrv_update.img 文件,則進入 Recovery 系統。Recovery 系統啟動後自動運行其中的 udisk_update 應用程序對系統進行燒錄。

2. 設置 U 盤檢測模式

設置 buildsystem/rtos/lk_boot/project/common/bootloader.mk 路徑下宏定義

SUPPORT_USB_BOOT 設置為 true, 開啟 U 盤檢測功能

USB_CHECK_LEVEL:

2 表示啟動原因為 Software Update 時,啟動階段檢測 U 盤,進入下載模式;

1 表示,無條件進入檢測 U 盤;

0 表示,不檢測 U 盤。

SemiDrive X9 系列 Linux 系統 U 盤升級3. 設置啟動原因

添加 reboot-test 程序

SemiDrive X9 系列 Linux 系統 U 盤升級

四、U 盤準備工作

1. Config.json 文件

新建 config.json 文件到 U 盤根目錄下 update 目錄

SemiDrive X9 系列 Linux 系統 U 盤升級

flash_spl: 0: 代表不用刷 SPL 引導分區(默認配置);1:代表需要刷引導分區。
md5_check: 0(默認配置)
no_ui: 0:代表顯示進度條(默認配置);1:代表不顯示進度條。
slot:0:代表刷 A 槽並且切 A 槽啟動(默認配置); 1:代表刷 B 槽並且切 B 槽啟動;2:代表刷 AB 槽並且 A 槽啟動。
save_log:0:表示不保存升級 log 到 U 盤;1:表示保存升級 log 到 U 盤
crc32_check:0:表示不檢查 PAC 的 crc32;1:表示不檢查 PAC 的 crc32
bmp_ui:0:表示不使用圖片顯示進度條;1:表示使用圖片顯示進度條
ospi_present:0:表示升級沒有 ospi.pac 要燒寫;1:表示升級有 ospi.pac 要燒寫
whitelist_partition_names:這個數組裡面分區代表不需要刷的分區。

2. 預升級的 PAC 包

把需要升級的 PAC 包存放到 U 盤根目錄下 update 文件夾內

3. Sdrv_update.img 文件製作

3.1 udisk_update.sh 腳本修改

        Sdrv_update.img 文件在正常編譯過程中會一同生成,但是實際試驗時發現隨系統生成的 sdrv_update.img 在進入 recovery 系統執行 udisk_update 應用時需要循環檢測,等待 U 盤掛載完成。

SemiDrive X9 系列 Linux 系統 U 盤升級


3.2 編譯

        執行 DISTRO=sdrv_update MACHINE=x9_sdrv_update source sd_setup.sh -b build-x9_sdrv_update 命令進行環境配置

        執行 make core-image-base 進行編譯

3.3 打包

       編譯完成後拷貝build-x9_sdrv_update/tmp/deploy/images/x9_sdrv_update/ 路徑下的 .cpio 文件到 buildsystem/yocto/prebuilt/sdrv_update/ 路徑中,使用 gzip core-image-base.cpio.gz 命令壓縮,然後在執行 make genpac 命令進行打包,這樣重新生成的 sdrv_update.img 文件就包含了之前的修改。拷貝 sdrv_updata.img 文件到 U 盤根目錄下 update 文件夾。

SemiDrive X9 系列 Linux 系統 U 盤升級

五、U 盤升級

1. 燒錄鏡像

使用 SDToolBox 工具燒錄 PAC 包到開發板,並正常啟動開發板

SemiDrive X9 系列 Linux 系統 U 盤升級

2. 接入 U 盤

       將 U 盤插入開發板 USB Host 接口,此時可以查看 /run/media/sda1/ 路徑,正常情況下可以查看到 update 文件夾,並能看見文件夾內 config.json、global.pac、sdrv_update.img

SemiDrive X9 系列 Linux 系統 U 盤升級

3. 重啟系統

       使用 reboot-test bootloader 命令重啟系統,系統重啟後會進入 recovery 系統,並自動執行 udisk_update.sh 腳本,下圖 log 為腳本中的列印信息

SemiDrive X9 系列 Linux 系統 U 盤升級
接著會出現升級進度提示

SemiDrive X9 系列 Linux 系統 U 盤升級

升級結束後再次重啟可以通過列印的 log 看出啟動了升級後的程序。

六、參考文檔

  • 《SemiDrive_9_Series_Boot與升級指南》
  • 《SDToolBox_User_Guide》

 


歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:清風


更多資訊,請掃碼關注我們!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論