中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專欄

        EEPW首頁 > 博客 > 征程 6 云端 Ota 升級方案設計與實現(xiàn)

        征程 6 云端 Ota 升級方案設計與實現(xiàn)

        發(fā)布人:地平線開發(fā)者 時間:2024-12-19 來源:工程師 發(fā)布文章
        01 引言


        在開發(fā)、調(diào)測過程中,經(jīng)常通過 Ota 技術升級應用軟件、底軟。目前,項目上已將 Matrix6 的 Demo 部署在實車上,每次軟件、底軟需要版本更替或版本升級時,都需要研發(fā)測試同學上到車上使用工控機進行手動升級。


        這流程存在耗費人力多,花費時間長,流程易出錯的問題,并且車輛異地時遠程操作困難的問題。


        基于當前現(xiàn)狀,需要基于 Trigger 進程、Boyan Ota 組件、底軟 Ota 工具等模塊,實現(xiàn)一套 Matrix6 云端 Ota 升級方案,具有云端下發(fā)到車輛實現(xiàn) Ota 的全自動化流程,代替人工升級的方案。




        02 全流程方案設計


        基于 Trigger 進程、Boyan Ota 組件、底軟 Ota 工具等模塊的 Matrix6 云端 Ota 升級方案的方案設計圖如下。



        圖片


        通過模塊、數(shù)據(jù)鏈路,Matrix6 云端 Ota 升級方案的流程可以被分解成如下步驟:

        1. 本地/CICD 服務器上構建對應版本的 Ota 升級包。

        2. 上傳 Ota 包到云端系統(tǒng)上。

        3. 研發(fā)測試同學在云端系統(tǒng)上選擇指定車輛,觸發(fā)云端 Ota 升級。

        4. 車云系統(tǒng)與工控機上的 Trigger 模塊交互,將對應的 Ota 升級包下發(fā)給 Trigger。

        5. Trigger 模塊與板端 Ota manager 模塊交互,請求發(fā)起 Ota,并將升級包傳輸?shù)桨宥恕?/span>

        6. Ota manager 與板端 SM、EM 模塊交互,切換系統(tǒng)狀態(tài)、關閉上層應用進程。

        7. Ota manger 與 Ota service 模塊交互,下發(fā)升級包給 Ota service,并同事 Ota service 進行 ota 升級。

        8. Ota service 對升級包進行校驗、解壓等操作,并使用 LibUpdate.so 動態(tài)庫進行刷寫升級。

        9. Ota service 刷寫成功后,通過 Ota manager 通知 SM 模塊下電重啟域控。

        10. 域控重啟后,Ota manager 通過 SM/EM 校驗系統(tǒng)是否正常,Ota service 通過 Libupdate.so 動態(tài)庫校驗刷寫、引導是否正常。

        11. 校驗完成后,Ota manager 與 Trigger 模塊通信,通知 Trigger 模塊本次 Ota 升級結果。

        12. Trigger 模塊將本次 Ota 升級結果上傳到云端,研發(fā)測試同學確認結果。


        在方案開發(fā)驗證階段,本文聚焦于 征程 6 Ota 包和 征程 6 板端相關的流程 1 和流程 4~11,使用 ota 測試工具 manager_client_test 程序代替 trigger 模塊,在板端完成開發(fā)測試驗證。



        03 構建 Ota 整包


        制作底軟 Ota 整包用于 ota 升級(應用包等其他包同流程)。底軟 Ota 整包中包括組件:底軟 ota 包 + 簽名文件 + manifest 文件。各組件作用如下:

        • 底軟 ota 包:用于刷寫升級底軟;

        • 簽名文件:用于對 Ota 包的校驗,反正 Ota 包損壞或被篡改等;

        • manifest 文件:用于記錄 Ota 包的相關升級信息。


        組件 a 底軟 ota 包來源于系統(tǒng)軟件發(fā)布;簽名文件和 manifest 文件需按照 Boyan ota 組件的規(guī)則生成。最后將這些組件按照規(guī)則壓縮成 zip 包即可。



        3.1 獲取底軟 Ota 包


        底軟包來源于系統(tǒng)軟件發(fā)布,詳情見系統(tǒng)軟件 release note。獲取步驟如下:

        1. 判斷 征程 6 域控是 secure/non-secure (國密/國際) 類型,判斷指令如下:

        [ -n "$(cat /proc/version_hsm)" ] && echo "secure" || echo "non-secure"; [ -n "$(hexdump -C /dev/block/platform/by-name/HSM_FW -n 1 | grep ad)" ] && echo "國密oscca" || ([ -n "$(hexdump -C /dev/block/platform/by-name/HSM_FW -n 4 | grep 'ed 44 47 14')" ] && echo "國際fips") || ([ -n "$(provision_tool --get-lifecycle | grep LIFECYCLE_OHP)" ] && echo "國際fips ohp")


        1. 根據(jù) 國密/國際 類型,在 releaser note 文檔 - 發(fā)布鏡像 中下載對應的 OTA 包。

        1. 解壓鏡像包,選擇所需要的 ota 包。ota 包目前分為兩種:all_in_one.zip 和 all_in_one_full.zip。

        • all_in_one.zip:只刷寫更新底軟分區(qū),不刷寫更新中間件和應用。

        • all_in_one_full.zip:同時刷寫底軟 + 中間件 + 應用分區(qū)。


        3.2 制作簽名/manifest 文件


        簽名文件和 manifest 文件模板如下:

        • 簽名文件模板:

        {
           "all_in_one_full.zip": "0a12ee6d7c9028c0c50ec4c188acb43b",     // 底軟ota包名:md5
           "vehicle_manifest.json": "9d2075ebc9fcbfaac83d9c67c10e407d"    // manifest文件名:md5
        }


        • manifest 文件模板:

        {
           "priority": [
               "J6A"
           ],
           "ota_services": [
               {
                   "packages": [
                       {
                           "version": "V1.0.0",                // 版本號
                           "type": "system",                   // 包類型
                           "name": "all_in_one_full.zip",      // 包名稱
                           "manifest": ""
                       }
                   ],
                   "short_name": "J6A"
               }
           ],
           "scripts": []
        }


        3.3 制作 Ota 整包


        將 ota 包、簽名文件、manifest 文件放到同一目錄下,通過 zip 壓縮獲取壓縮包(保證解壓后 all_in_one 目錄下就有 ota 包等文件)。


        操作命令如下:

        mkdir all_in_one

        mv src/all_in_one.zip all_in_one/
        mv src/signature.json all_in_one/
        mv src/vehicle_manifest.json  all_in_one/

        cd all_in_one
        zip ../all_in_one.zip ./*


        制作好的 all_in_one.zip 整包就可以用于 ota 升級。



        04 Ota 升級測試


        4.1 升級測試操作步驟


        Ota 測試工具 manager_client_test 程序代替 trigger 模塊,在板端完成開發(fā)測試驗證。操作步驟如下:

        1. 上傳 Ota 測試工具 manager_client_test 到板端。

        2. 查看/記錄升級前域控的分區(qū)面:

        ota_tool -g


        3.運行模擬測試工具,按照如下步驟操作;

        1. 4.輸入 c,選取本機 IP 地址:

        enter num to choose ip:port
        a: 10.97.109.229:10292
          10.97.109.229:10290
        b: 10.97.109.229:10292
          10.97.109.229:10290
        c: 127.0.0.1:10292
          127.0.0.1:10290
        d: you choose enter ip:port manually!

        >> c
        1. 5.輸入 5,訂閱 ota 狀態(tài)變化:

        ---- cmd list ----
        1: Get upgrade info
        2: Cancel
        3: Prepared upgrade
        4: TransferFile
        5: Subscribe manager state change
        6: UnSubscribe manager state change
        7: GetSwClusterInfo
        8: Subscribe manager error code
        9: UnSubscribe manager error code
        10: Get all services's history
        11: shake hands to manager
        Enter cmd:

        >> 5
        1. 輸入 3,準備 ota 升級

        ---- cmd list ----
        1: Get upgrade info
        2: Cancel
        3: Prepared upgrade
        4: TransferFile
        5: Subscribe manager state change
        6: UnSubscribe manager state change
        7: GetSwClusterInfo
        8: Subscribe manager error code
        9: UnSubscribe manager error code
        10: Get all services's history
        11: shake hands to manager
        Enter cmd:

        >> 3

        7.輸入 4,傳輸文件,并輸入 ota 包的絕對路徑:

        ---- cmd list ----
        1: Get upgrade info
        2: Cancel
        3: Prepared upgrade
        4: TransferFile
        5: Subscribe manager state change
        6: UnSubscribe manager state change
        7: GetSwClusterInfo
        8: Subscribe manager error code
        9: UnSubscribe manager error code
        10: Get all services's history
        11: shake hands to manager
        Enter cmd:

        >> 4

        enter file path:

        >> /map/all_in_one.zip

        8.等待 ota 升級到 restart_prepared 狀態(tài)并重啟

        ---- cmd list ----
        1: Get upgrade info
        2: Cancel
        3: Prepared upgrade
        4: TransferFile
        5: Subscribe manager state change
        6: UnSubscribe manager state change
        7: GetSwClusterInfo
        8: Subscribe manager error code
        9: UnSubscribe manager error code
        10: Get all services's history
        11: shake hands to manager
        Enter cmd:
        recv manager state change to :transferring
        [I][1896-1918][01-01][08:03:22:096][OTAM][manager_client_test][ota_manager_client_impl.cpp:196] current state is transferring
        recv manager state change to :processing
        [I][1896-1918][01-01][08:03:24:399][OTAM][manager_client_test][ota_manager_client_impl.cpp:196] current state is processing
        recv manager state change to :restart_preparing
        [I][1896-1918][01-01][08:05:04:716][OTAM][manager_client_test][ota_manager_client_impl.cpp:196] current state is restart_preparing
        recv manager state change to :restart_prepared
        [I][1896-1918][01-01][08:05:07:823][OTAM][manager_client_test][ota_manager_client_impl.cpp:196] current state is restart_prepared


        9.查看 Ota_manager 的日志,確認是否驗證-激活 成功

        10.查看/記錄升級后域控的分區(qū)面:

        ota_tool -g


        4.2 升級測試操作結果


        1. 升級前,處于 B 面:

        root@hobot:~# ota_tool -g
        [OTA_INFO][hobot_ota_hl.c:471] current slot is:B


        2.Ota_manager 日志:

        [I][1568-1850][01-01][09:07:33:638323][ota_service][OTAS][upgrade.cpp:262] get progress:85
        [I][1568-1850][01-01][09:07:33:638343][ota_service][OTAS][upgrade.cpp:319] get result success,result:1
        [I][1568-1850][01-01][09:07:43:638439][ota_service][OTAS][upgrade.cpp:262] get progress:85
        [I][1568-1850][01-01][09:07:43:638466][ota_service][OTAS][upgrade.cpp:319] get result success,result:1
        [I][1568-1850][01-01][09:07:53:648403][ota_service][OTAS][upgrade.cpp:262] get progress:100
        [I][1568-1850][01-01][09:07:53:648427][ota_service][OTAS][service_state_delegate.cpp:343] Upgrade success

        3.升級后,處于 A 面:

        root@hobot:~# ota_tool -g
        [OTA_INFO][hobot_ota_hl.c:468] current slot is:A3. 構建Ota整包


        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。




        相關推薦

        技術專區(qū)

        關閉