<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 如何實(shí)現基于英飛凌TRAVEO? T2G系列芯片的Dual Bank方案架構實(shí)現OTA功能

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

作者: 時(shí)間:2025-04-22 來(lái)源:英飛凌 收藏

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

本文引用地址:http://dyxdggzs.com/article/202504/469654.htm

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

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

參考文檔

AN220242

AN229058

TRAVEO? T2G Dual Bank劃分

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

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

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

在Dual Bank模式下, Code Flash被劃分為兩個(gè)獨立存儲體(Logical Bank 0和Logical Bank 1),在不同mapping下,存儲體地址互換,以支持動(dòng)態(tài)重映射。以下圖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可見(jiàn),TRAVEO? T2G系列的code flash可以分成Single Bank 模式和Dual Bank 模式。通過(guò)配置 FLASHC_FLASH_CTL 寄存器的 MAIN_BANK_MODE 位與 MAIN_MAP 位實(shí)現對模式的控制。

  • 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模式,可通過(guò) FLASHC_FLASH_CTL 寄存器的 WORK_BANK_MODE 位與 WORK_MAP 位進(jìn)行配置。需要注意的是這幾位在復位時(shí)都會(huì )被清除。ROM boot和flash boot不會(huì )改變這些配置。換句話(huà)說(shuō),TRAVEO? T2G系列MCU在 Arm ? Cortex ? -M0+應用程序啟動(dòng)之前總是以Single Bank模式啟動(dòng)。應用程序需要根據實(shí)際需求手動(dòng)配置Dual Bank功能。

TRAVEO? T2G Dual Bank模式優(yōu)勢

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

  2. 無(wú)縫切換: 更新完成后,系統可以無(wú)縫切換到新固件,無(wú)需長(cháng)時(shí)間的停機或重啟過(guò)程。

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

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

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

更新固件實(shí)現流程

固件更新:

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

  2. CM0+用戶(hù)程序開(kāi)始擦除整個(gè)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+用戶(hù)程序將相同的CM0+用戶(hù)程序代碼復制到Bank 1,并編程新的CM4/7用戶(hù)程序代碼。需要注意的是,以CYT2B7芯片為例,無(wú)論是運行在Mapping A需要更新bank 1的程序還是運行在Mapping B需要更新bank 0,更新地址皆處于0x1200_0000-0x1208_8000,而非0x1000_0000-0x1008_8000。

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

系統啟動(dòng)與切換

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

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

  3. 如果從work flash讀取的數據是預期值,CM0+會(huì )跳轉到SRAM代碼,然后通過(guò)設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+運行程序地址不變,但此時(shí)執行的已是bank 1中的新代碼。

請訪(fǎng)問(wèn)以下鏈接下載相關(guān)示例代碼:

  • TRAVEO? T2G SDL

  • TRAVEO? T2G Sample driver Library Code Examples

如果您在實(shí)現過(guò)程中遇到問(wèn)題,可以嘗試在社區中尋找答案,可能已經(jīng)有人提出了相同的困擾并得到了解決。

Community熱帖舉例:

  • 關(guān)于使用CYT4BB7CEBQ0AESGS切換bank總是死機問(wèn)題

  • MSP指針跳轉

  • CYT2B75-OTA-flash-driver

如果您還未曾使用過(guò)TRAVEO? T2G 系列芯片,可以點(diǎn)擊這里快速入門(mén):

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

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

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



關(guān)鍵詞: 英飛凌 TRAVEO

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>