新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 如何實現基于英飛凌TRAVEO? T2G系列芯片的Dual Bank方案架構實現OTA功能

        如何實現基于英飛凌TRAVEO? T2G系列芯片的Dual Bank方案架構實現OTA功能

        作者: 時間:2025-04-22 來源:英飛凌 收藏

        最近在 開發者論壇 中注意到,許多開發者都在討論和提問關于如何實現基于? T2G系列芯片的OTA(Over-The-Air,遠程升級技術)更新應用。為了幫助大家更好地基于? T2G系列芯片的Dual Bank方案架構實現OTA功能,本文將簡要介紹其原理,并提供相關的資源和示例代碼,希望能夠為大家提供參考和幫助。(作者: Yang Jannie)

        本文引用地址:http://www.104case.com/article/202504/469654.htm

        OTA(Over-the-Air) 是一種通過無線通信協議遠程更新設備固件的軟件更新方法,在現代智能汽車和聯網汽車的快速發展下,在汽車應用中越來越受到重視。 通過OTA更新,設備制造商可以在設備部署后修復漏洞、添加新功能或優化性能,而無需物理接觸設備。 它既可以提升用戶體驗和安全性,又降低維護成本和環境影響做出貢獻,為汽車行業的持續發展和創新提供了強大支持。

        ? T2G 系列支持雙區(Dual Bank)模式,允許RWW(Read While Write)功能。 Dual Bank 是一種支持OTA更新的存儲架構,它使用兩個獨立的存儲區來確保固件更新的可靠性和安全性。Dual bank技術通常涉及A/B分區機制,在OTA更新過程中,新固件會先被下載到備用分區,下載完成后,系統會在下次啟動時從新分區啟動。客戶可以基于其特殊的dual bank 模式進行相同位置的固件更新,提升了固件更新的靈活性和效率。

        參考文檔

        AN220242

        AN229058

        TRAVEO? T2G Dual Bank劃分

        TRAVEO? T2G芯片的閃存分為Code Flash和Work Flash。

        • Code Flash用于存儲程序代碼, 即芯片的固件或軟件。

        • Work Flash用于存儲數據, 即程序運行時需要存儲的數據,例如配置信息、日志數據等。

        在Dual Bank模式下, Code Flash被劃分為兩個獨立存儲體(Logical Bank 0和Logical Bank 1),在不同mapping下,存儲體地址互換,以支持動態重映射。以下圖CYT2B7芯片為例:

        • Mapping A :

          Logical Bank 0地址:

          0x1000_0000-0x1008_8000,

          Logical Bank 1地址:

          0x1200_0000-0x1208_8000

        • Mapping B :

          Logical Bank 0地址:

          0x1200_0000-0x1208_8000,

          Logical Bank 1地址:

          0x1000_0000-0x1008_8000

        從上圖CYT2B7芯片的memory map可見,TRAVEO? T2G系列的code flash可以分成Single Bank 模式和Dual Bank 模式。通過配置 FLASHC_FLASH_CTL 寄存器的 MAIN_BANK_MODE 位與 MAIN_MAP 位實現對模式的控制。

        • MAIN_BANK_MODE位

          (FLASHC_FLASH_CTL[12]):

          置1啟用Dual Bank模式,置0返回Single Bank模式1。

        • MAIN_MAP位

          (FLASHC_FLASH_CTL[8]):
          僅在Dual Bank模式下有效,0選擇Mapping A,1選擇Mapping B

        當然,Work Flash也可配置為Single Bank模式或Dual Bank模式,可通過 FLASHC_FLASH_CTL 寄存器的 WORK_BANK_MODE 位與 WORK_MAP 位進行配置。需要注意的是這幾位在復位時都會被清除。ROM boot和flash boot不會改變這些配置。換句話說,TRAVEO? T2G系列MCU在 Arm ? Cortex ? -M0+應用程序啟動之前總是以Single Bank模式啟動。應用程序需要根據實際需求手動配置Dual Bank功能。

        TRAVEO? T2G Dual Bank模式優勢

        1. 高可靠性: dual bank結構允許在一個bank進行更新的同時,另一個bank繼續執行當前的固件。這種方式確保了更新過程中設備的正常運行,避免了因更新失敗導致的系統崩潰。

        2. 無縫切換: 更新完成后,系統可以無縫切換到新固件,無需長時間的停機或重啟過程。

        3. 容錯能力: 如果在更新過程中出現問題,系統可以回滾到舊版本固件,保證設備的穩定性和可靠性。

        4. 減少停機時間: 由于更新可以在后臺進行,設備的停機時間大大減少,提高了設備的可用性。

        5. 安全性: TRAVEO? T2G系列MCU配備硬件安全模塊,提供強大的加密和認證機制,確保OTA更新的安全性和完整性。

        更新固件實現流程

        固件更新:

        1. 假設CM4/7用戶程序代碼運行在Bank 0即處于Mapping A映射時,接收到通過車輛局域網(如CAN FD或以太網)發送的固件更新請求和數據。

        2. CM0+用戶程序開始擦除整個Bank 1的code flash區域和特定的work flash區域,其中work flash區域需要放置remap參數,用于標識下一次復位后需要設置Mapping A還是Mapping B,即最新程序存儲于bank 0還是bank 1中。在此示例中,將更新bank 1的code flash,故而下一次復位后將使用Mapping B。

        3. 完成flash擦除后,CM0+用戶程序將相同的CM0+用戶程序代碼復制到Bank 1,并編程新的CM4/7用戶程序代碼。需要注意的是,以CYT2B7芯片為例,無論是運行在Mapping A需要更新bank 1的程序還是運行在Mapping B需要更新bank 0,更新地址皆處于0x1200_0000-0x1208_8000,而非0x1000_0000-0x1008_8000。

        4. 最后,CM0+更新work flash中的remap參數,以便在下一次復位時切換應用程序代碼。

        系統啟動與切換

        1. 在復位后,CM4/7和CM0+開始執行ROM boot程序。CM4/7進入等待中斷(WFI)狀態,直到CM0+使能它。

        2. CM0+完成ROM boot和flash boot后,執行其用戶程序代碼。在CM0+用戶程序配置FLASHC_FLASH_CTL 寄存器MAIN_BANK_MODE位為dual bank模式,并讀取work flash中的remap參數。

        3. 如果從work flash讀取的數據是預期值,CM0+會跳轉到SRAM代碼,然后通過設FLASHC_FLASH_CTL 寄存器的MAIN_MAP位將code flash 的mapping切換為“Mapping B”。需要注意的是,改變這一位將改變flash的映射,故必須將此部分切換mapping操作的代碼置于SRAM中執行,而不能繼續在flash中執行。

        4. 在完成切換操作后,code flash bank 0的地址將與code flash bank 1的地址交換。

        5. CM0+跳回到code flash中執行程序并使能CM4/7。CM4/7和CM0+運行程序地址不變,但此時執行的已是bank 1中的新代碼。

        請訪問以下鏈接下載相關示例代碼:

        • TRAVEO? T2G SDL

        • TRAVEO? T2G Sample driver Library Code Examples

        如果您在實現過程中遇到問題,可以嘗試在社區中尋找答案,可能已經有人提出了相同的困擾并得到了解決。

        Community熱帖舉例:

        • 關于使用CYT4BB7CEBQ0AESGS切換bank總是死機問題

        • MSP指針跳轉

        • CYT2B75-OTA-flash-driver

        如果您還未曾使用過TRAVEO? T2G 系列芯片,可以點擊這里快速入門:

        • TRAVEO? T2G MCU初次使用者快速上手:編譯器IAR

        • TRAVEO? T2G MCU初次使用者快速上手:編譯器Green Hills

        • TRAVEO? T2G MCU初次使用者快速上手:編譯器GCC



        關鍵詞: 英飛凌 TRAVEO

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳山县| 留坝县| 白朗县| 兰坪| 岳普湖县| 聊城市| 响水县| 仁怀市| 丰原市| 育儿| 东丰县| 山东省| 梓潼县| 太谷县| 大同市| 晋城| 永济市| 唐海县| 凤庆县| 永川市| 洪湖市| 韶山市| 介休市| 兴海县| 花垣县| 建平县| 东乡| 商丘市| 尚义县| 鹿邑县| 永和县| 大余县| 桐城市| 紫阳县| 额尔古纳市| 安宁市| 琼中| 馆陶县| 吉林省| 文水县| 汾阳市|