女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于TC3xx SWAP特性實現SOTA功能的配置和流程

汽車ECU開發 ? 來源:汽車ECU開發 ? 作者:汽車ECU開發 ? 2022-11-21 09:28 ? 次閱讀

什么是OTA

OTA:Over-the-Air Technology,即空中下載技術。

OTA升級:通過OTA方式實現固件或軟件的升級。通過無線通信方式實現軟件升級,都可以叫OTA升級,比如無線以太網/藍牙等。

HSM:Hardware Security Module 模塊保證刷寫的安全可靠。

OTA 系統功能示意如圖1所示:

1eb9a8a2-6934-11ed-8abf-dac502259ad0.png

圖1 系統功能示意圖

幾種常見的OTA實現方式比較及優勢分析

在進行SOTA更新時,需要把舊的應用程序擦除,把新的應用程序寫入。常規的實現方式需要分別開發BootLoader程序和APP程序,MCU上電先運行BootLoader,BootLoader根據情況選擇是否跳轉到APP和是否進行程序更新。具體來說有以下幾種方式:

1、方案一

BootLoader中內置通訊協議棧,更新時,先向MCU發送指令使其跳轉到BootLoader,之后先擦除舊APP,在接收新APP的同時直接將其寫入Flash的APP運行地址處。該方案的優點是不需要額外的Flash暫存數據,缺點是BootLoader代碼更復雜,且如果數據傳輸發生中斷,舊的APP將不能被恢復。該方案更適合Flash容量較小的MCU。

2、方案二

更新程序時,由APP接收更新數據并暫存于Flash,再將APP更新標志位置位;MCU重啟時,BootLoader檢查更新標志位,如有效,則擦除舊的APP,再將暫存于Flash的新APP數據寫入APP運行地址處。該方案的優點是更新數據的接收由APP完成,BootLoader不需要通訊協議棧,代碼量更小,且數據傳輸中斷時,原有APP不損壞。缺點是需要額外的Flash空間暫存更新數據。

3、方案三

在Flash中劃分出兩塊相同大小的區域,分為A區和B區,都用來存放APP,但同一時間下只有一個區的APP是有效的,分別設置一個標志位標識其有效性。初始狀態下先將APP寫入A區,更新的時候,將新的APP寫入B區,再把A區的APP擦除,同時更新兩個區的有效性標志位狀態。BootLoader中判斷哪個區的APP有效,就跳轉到哪個區運行。這種方法不需要重復拷貝APP數據,但最大的一個缺陷是AB區的APP程序運行地址不同,需要分別編譯,從而使得可應用性大大降低。

注釋:同時也可以將方案一和方案二相結合,即先采用方案一在BootLoader程序中內置通訊協議棧,更新時,先向MCU發送指令使其跳轉到BootLoader。之后接收更新數據的時候,采用方案二的方法,先將數據暫存于Flash,待數據全部接收完成后再擦除舊的APP,寫入新的APP。結合方案一和方案二的優點,且能在沒有APP或APP損壞的狀態下實現程序更新。缺點是BootLoader代碼量更大,Flash空間占用更大。

英飛凌AURIX TC3xx實現上述SOTA方案拓撲圖,如圖2 所示:

1ec0ed6a-6934-11ed-8abf-dac502259ad0.png

圖2 TC3xx實現SOTA方案常見拓撲圖

經過上面的分析,可以看到幾種常見方案都有其優缺點。但對于TC3xx這一類的MCU來說,Flash容量通常都很大,足夠用,所以通常可以先把APP暫存下來再進行更新,防止數據傳輸中斷導致APP不可用。

同時AURIX TC3xx也支持AB SWAP功能。以方案三為例:TC3xx系列如果使能SOTA功能,它的AB Bank Flash物理地址支持兩種不同物理地址映射到同一個邏輯地址方式(MCU自動從兩種物理地址映射一個虛擬地址),從而使得APP編譯時不需要區分AB區,使用相同的邏輯地址即可,從而避免了方案三的硬傷,為我們提供了一種最佳的SOTA方案。接下來,我們將以方案三作為基礎,結合實例詳細講解使用英飛凌AURIX TC3xx如何實現更優的SOTA。

推薦的OTA實現方式詳解

TC3xx的Flash地址映射方式

首先, TC33x和TC33xED不支持AB SWAP功能,其他TC3xx設備都能夠通過AB SWAP功能實現SOTA軟件更新。

TC3xx 如果使能了AB SWAP功能,Flash大小實際能用的最少減半,TC3xx各系列AB SWAP能力如圖3所示。

1ee91128-6934-11ed-8abf-dac502259ad0.png

圖3 TC3xx支持AB SWAP功能芯片系列及映射關系

啟用SOTA功能時,通過將PFLASH拆分為兩A和B兩個Bank的能力,其中一組可以讀取和執行BANK組,而另一組可以寫入新代碼。因此雖然單個物理PFLASH Bank中不支持同時讀寫(RWW)功能,但是通過AB分組支持未使用的BANK組提供安全可靠地對數據執行寫入和擦除操作的能力來實現SOTA功能。

舉例TC387 AB SWAP特性

為了方便理解英飛凌TC3xx SOTA 功能,我們以TC387為例進行分析。TC387 PFLASH 10M空間映射關系,使能了AB SWAP后,實際使用大小為4M,如圖4所示:

1eefaaec-6934-11ed-8abf-dac502259ad0.png

圖4 TC387 PFLASH 映射關系以及可用PFLASH大小

TC387的4M PFlash地址空間無論是A Bank還是B Bank, 對于用戶來說,統一為虛擬地址0X80000000-0x803FFFFF 4M地址空間。但是刷寫過程中, A bank實際操作物理地址0X80000000-0x803FFFFF 4M空間,B Bank 實際操作物理地址0X8060 0000-0x80AF FFFF 4M空間。

注意,如果使能了AB SWAP功能,TC3xx PFLASH就沒有所謂Local PFLASH和Global PFLASH概念,統一理解為Global PFLASH。CPU訪問PFLASH由之前的CPUx可以通過Local總線訪問本PFLASHx提高訪問速度,變為CPUx訪問PFLASH只能通過Global總線從而稍微增加了CPU訪問PFLASH時間。具體參考圖5所示。

1ef8693e-6934-11ed-8abf-dac502259ad0.png

圖5 SOTA功能使能后只能通過Global總線訪問PFLASH

TC3xx的SOTA功能描述

當TC387 SOTA功能激活時,PFLash被劃分為兩部分A Bank和B Bank,一部分用來存儲讀取可執行代碼(active bank),另一部分可用來寫入(inactive bank)即刷寫。當APP更新完畢后,兩個部分互換,即切換上面兩種地址映射方式。在標準模式下使用PF0-1作為active bank,后文稱作組A,在Alternate模式下使用PF2-3作為active bank,后文稱作組B,就可以實現第二章節所述方案三,且能寫入完全相同的APP程序,以相同的地址(邏輯地址)進行運行。


需要注意的是,所有NVM操作都是通過DMU使用PFLASH的物理系統地址執行的,也就是說,NVM操作總是使用標準的地址映射,而不管選擇使用哪種地址映射。“NVM操作”是一個術語,用于任何針對FLASH的命令,如程序、擦除等,但不包括讀取代碼。有關SOTA地址映射的參數在Flash中的UCB(User Configuration Block)中進行配置,在UCB中配置后,只有當下次MCU復位的時候才會更新配置,后文會有詳細解釋。

TC3xx的SOTA功能實現詳解

實現SOTA功能所需關注配置項

英飛凌AURIX TC3xx實現SOTA功能主要需要配置如圖6所示:

1f00ee6a-6934-11ed-8abf-dac502259ad0.png

圖6 SOTA功能所需關注配置項

1

SOTA模式使能UCB_OTP.PROCONTP.SWAPEN,該參數決定是否開啟SOTA模式,在寄存器Tuning Protection Configuration中的SWAPEN進行配置,對應UCB定義如下:

使能AB SWAP功能的UCB定義(UCB32-39是ORIG, 40-47 COPY,建議全部都需要配置,內容可以一樣。)如下:

1f2d1fee-6934-11ed-8abf-dac502259ad0.png

1f3364d0-6934-11ed-8abf-dac502259ad0.png

1f5e52b2-6934-11ed-8abf-dac502259ad0.png

1f6b77da-6934-11ed-8abf-dac502259ad0.png

2

配置UCB_SWAP_ORIG/UCB_SWAP_COPY中的UCB_SWAP_ORIG_MARKERLx/UCB_SWAP_COPY_MARKERLx,激活下一次reset需要運行的標準(0x00000055)還是備選(0x000000AA)地址。在寄存器SCU_SWAPCTRL中,可以查看當前激活的是標準還是備選地址。

我們參考下面關于SOTA功能實現的UCB,內容定義:

1f75593a-6934-11ed-8abf-dac502259ad0.png1f7da00e-6934-11ed-8abf-dac502259ad0.png

1f87dd30-6934-11ed-8abf-dac502259ad0.png

1f9647ee-6934-11ed-8abf-dac502259ad0.png

1fbb53a4-6934-11ed-8abf-dac502259ad0.png

3

同1描述UCB塊,只要使能了SOTA就會自動禁止CPU通過本地總線訪問PFLASH功能,紅色方框中寄存器值自動為1,即禁止。

1fc09b7a-6934-11ed-8abf-dac502259ad0.png

1fc585fe-6934-11ed-8abf-dac502259ad0.png

1fd09a48-6934-11ed-8abf-dac502259ad0.png

SOTA功能實現時SWAP配置及流程

SOTA功能應用時:分系統剛啟動時SWAP配置和系統運行時SWAP配置。

系統啟動時SWAP配置:

如果SOTA功能使能,那么代碼生成的文件至少需要刷進Active Bank。為了信息安全,建議通過UCB_PFLASH設置相應的sectors讀寫保護。

起始地址需要在UCB_BMHD配置好。

如果當前選擇的是標準地址,那么0x00000055H需要寫入UCB_SWAP的MARKERL0.SWAP這個域。然后通過把MARKERL0.SWAP的地址寫入MARKERH0.ADDR予以確認;同時,將CONFIRMATIONL0.CODE的地址寫入CONFIRMATIONH0.ADDR;同時,將57B5327FH寫入57B5327FH予以確認。

UCB_ OTP一次性刷寫保護以設置所需的OTP、WOP和標定保護。請注意,任何受OTP或WOP保護的扇區都不能使用新映像重新編程

如果使能了HSM,主核代碼和HSM代碼需要同時刷入到AB bank的PFLASH S0-S39。

任何受OTP保護的HSM扇區都不能使用新映像重新編程。

最后,由于SWAPEN是在UCB_OTP里面設置的,所以要在下一個重啟后SOTA的使能才有效。具體流程,參考圖7所示:

1fda7c34-6934-11ed-8abf-dac502259ad0.png

圖7 系統剛啟動時SWAP配置及流程

系統運行時SWAP配置:

下面是程序正在運行時,需要實現軟件SWAP到新程序的配置流程。

為了可以正確切換到新程序中,首先新的程序需要刷到對應的非激活的PFLASH Bank,如果非激活的BANK中對應的sectors使能了讀寫保護,那么刷寫之前要先解保護。

切記:由于NVM特性,PFLASH 和DFLASH不能同時操作。因此,在應用程序中運行的EEPROM驅動程序和執行BOOT刷寫之間需要進行一些協調。確保要寫入的新程序所用的的PFLASH正確無誤。例如:如果在PFLASH的SOTA重新編程/擦除期間出現硬故障,可以使用替換邏輯扇區功能(有關更多詳細信息,請參閱DMU章節)。此功能允許用戶使用“替換邏輯扇區”命令序列將故障邏輯扇區映射到冗余扇區。

由于UCB刷寫次數的限制(100次),我們可以通過16 個SWAP配置依次使用來增加SWAP的次數(100*16=1600次)。方式流程如下圖8所示:

注意:上一次用過的配置,CONFIRMATIONL(x-1) ) 和CONFIRMATIONH(x-1) 全寫為1。

增加SWAP次數,可以通過UCB_SWAP_ORIG/UCB_SWAP_COPY配置如下寄存器:

1f9647ee-6934-11ed-8abf-dac502259ad0.png

1feb935c-6934-11ed-8abf-dac502259ad0.png

1ff34214-6934-11ed-8abf-dac502259ad0.png

20015188-6934-11ed-8abf-dac502259ad0.png

20084e0c-6934-11ed-8abf-dac502259ad0.png

增加SWAP次數方法流程如圖8所示:

200eb27e-6934-11ed-8abf-dac502259ad0.png

圖8 增加SWAP次數方法流程

新的配置寫好后,選擇下一次要激活的程序,等下一次重啟即運行新刷寫的程序。詳細流程如圖9所示:

2014c664-6934-11ed-8abf-dac502259ad0.png

圖9 系統運行時SWAP配置

總結

TC3xx SWAP特性實現OTA功能后,特別注意以下五點:

Flash大小實際能用的最少減半,詳情參考圖3。

CPU訪問Flash只能通過Global總線從而稍微增加了訪問時間,參考圖5。詳細參數請查相應的數據手冊。

PFLASH的prefetch功能被禁止,同樣會稍微影響整個系統的性能。

功能安全方面:Active Bank 的safety_endinit保護依舊存在,但是Inactive Bank的safety_endinit保護無效。

信息安全方面:Active Bank 和Inactive Bank同樣受信息安全相關寄存器的保護。

至此,TC3xx SWAP特性實現SOTA功能的配置和流程介紹完畢。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 以太網
    +關注

    關注

    40

    文章

    5587

    瀏覽量

    174871
  • 藍牙
    +關注

    關注

    116

    文章

    6037

    瀏覽量

    173232
  • OTA
    OTA
    +關注

    關注

    7

    文章

    605

    瀏覽量

    36214
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    請問CCG5中怎么做DR_SWAP

    請教個問題,在 CCG5代碼中怎么實現DR_SWAP?我們配置了端口 0 作為源對外充電,但是我們希望 PORT0 做了 UFP。我們是這樣寫的代碼:案例 APP_EVT_PD_合同談判_完成
    發表于 05-26 07:23

    當 ccg3pa 收到 pr_swap 命令時,它不會執行 eval_pr_swap 函數,為什么?

    角色交換命令。 我在 swap.c-eval_pr_swap 函數中添加了調試 uart 消息。 但我發現,當 ccg3pa 收到 pr_swap 命令時,它不會執行 eval_pr_swa
    發表于 05-26 06:15

    請問tc3xx如何配置多個dedicatedRxBuffersNumber?

    tc3xx如何配置多個dedicatedRxBuffersNumber?
    發表于 04-21 07:53

    基于Infineon TC4D9+TLF4D985的Aurix StartKit

    英飛凌推出新一代AURIX TC4xx系列MCU,專為電動汽車和自動駕駛技術設計,解決處理器性能瓶頸,降低系統成本,加速產品上市。 在電池管理系統(BMS)中,TC4xx通過強大的PPU實現精準電池
    的頭像 發表于 04-16 14:16 ?527次閱讀
    基于Infineon <b class='flag-5'>TC</b>4D9+TLF4D985的Aurix StartKit

    優化TC3xx系統運行效率的策略

    目錄 1.Tricore尋址模式 2.lsl鏈接文件Section分析 3.限定符對于代碼的影響 4.小結 1.Tricore尋址模式 今天聊個好玩的事情。 之前ARM培訓的時候,他們對于函數形參
    的頭像 發表于 11-16 11:00 ?1193次閱讀
    優化<b class='flag-5'>TC3xx</b>系統運行效率的策略

    CC33xx WLAN特性

    電子發燒友網站提供《CC33xx WLAN特性.pdf》資料免費下載
    發表于 10-29 09:14 ?0次下載
    CC33<b class='flag-5'>xx</b> WLAN<b class='flag-5'>特性</b>

    DP83TC812、DP83TC813和DP83TC814:Open Alliance規范合規性測試所用的配置

    電子發燒友網站提供《DP83TC812、DP83TC813和DP83TC814:Open Alliance規范合規性測試所用的配置.pdf》資料免費下載
    發表于 08-27 11:22 ?0次下載
    DP83<b class='flag-5'>TC</b>812、DP83<b class='flag-5'>TC</b>813和DP83<b class='flag-5'>TC</b>814:Open Alliance規范合規性測試所用的<b class='flag-5'>配置</b>

    請問AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省算力?

    AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省算力? 比如一個浮點數12.89V,如果將其寫成12890mV,再參與計算,哪種方式更加節省算力
    發表于 08-26 06:54

    請問EB tresos如何配置TC39XX的Flexray?

    EB tresos如何配置TC39XX 的 Flexray,在網絡上找不到相關的配置方法。可以提供一下 EB 的配置工程嗎?
    發表于 08-14 08:14

    TC367 SYS RESET/APP RESET之后RAM不會清除怎么解決?

    我看了單片機干貨|AURIX? TC3xx 復位后RAM不初始化方法 - 知乎 (zhihu.com) 這篇文章,并且設置了UCB(僅僅設置了DFLASH_ORIG) ? 然后設置了一些變量
    發表于 07-24 07:23

    ERAY (FlexRay) 模塊卡在INTEGRATION_LISTEN狀態,為什么?

    大家好, 我有 TC3XX 入門套件板,我想實施并測試 FlexRay 協議。 我的想法是在開發板上的兩個可用 ERAY 模塊之間實現環回。 我以演示項目為起點,只添加了 ERAY 模塊 1
    發表于 07-24 06:54

    TC2XX/3XX多核斷點設置無效的原因?

    TC2XX/3XX多核斷點設置無效,請問hinghtec的多核要怎么才能被觸發,(函數已經執行,但是斷點沒有被觸發)或者如何才能進行多核調試。
    發表于 07-03 07:33

    TC3xx使能SWAP后讀取閃存數據不對是怎么回事?

    當前SWAP是在B區,想要讀取A區,也就是實際地址0xA0000的數據,但是讀到了當前B區的數據,也就是實際地址0xA0300000的數據,怎么解決這個沖突,因為我想驗證bootloader升級中寫flash之后再讀出來做校驗。
    發表于 07-03 06:13

    利用Swap模式實現代碼回滾操作

    前面介紹了MCUboot的基礎知識,您可通過上方鏈接回顧歷史文章,上次介紹了Swap模式,本次著重介紹利用Swap模式實現代碼回滾操作。在某些應用場景中,可能新版本的Firmware存在bug而需要返回至上一次的固件。
    的頭像 發表于 06-19 15:45 ?1743次閱讀
    利用<b class='flag-5'>Swap</b>模式<b class='flag-5'>實現</b>代碼回滾操作

    MCUboot Swap模式升級的流程和注意事項

    前面介紹了MCUboot的基礎知識(請查看上方“簡介以及在RA FSP上的支持”文章),上次介紹了Overwrite模式(請查看上方“RA Overwrite模式在FSP中的支持”文章),本次著重介紹其中的Swap模式,以及在FSP中如何配置,如Flash怎樣劃分、安全校
    的頭像 發表于 06-13 16:01 ?1453次閱讀
    MCUboot <b class='flag-5'>Swap</b>模式升級的<b class='flag-5'>流程</b>和注意事項