0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TC3xx SWAP特性實(shí)現(xiàn)SOTA功能的配置和流程介紹

汽車ECU開發(fā) ? 來源:英飛凌汽車電子生態(tài)圈 ? 作者:宋蘭中 ? 2022-11-21 09:28 ? 次閱讀

什么是OTA

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

OTA升級:通過OTA方式實(shí)現(xiàn)固件或軟件的升級。通過無線通信方式實(shí)現(xiàn)軟件升級,都可以叫OTA升級,比如無線以太網(wǎng)/藍(lán)牙等。

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

OTA 系統(tǒng)功能示意如圖1所示:

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

圖1 系統(tǒng)功能示意圖

幾種常見的OTA實(shí)現(xiàn)方式比較及優(yōu)勢分析

在進(jìn)行SOTA更新時(shí),需要把舊的應(yīng)用程序擦除,把新的應(yīng)用程序?qū)懭?。常?guī)的實(shí)現(xiàn)方式需要分別開發(fā)BootLoader程序和APP程序,MCU上電先運(yùn)行BootLoader,BootLoader根據(jù)情況選擇是否跳轉(zhuǎn)到APP和是否進(jìn)行程序更新。具體來說有以下幾種方式:

1

方案一

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

2

方案二

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

3

方案三

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

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

英飛凌AURIX TC3xx實(shí)現(xiàn)上述SOTA方案拓?fù)鋱D,如圖2 所示:

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

圖2 TC3xx實(shí)現(xiàn)SOTA方案常見拓?fù)鋱D

經(jīng)過上面的分析,可以看到幾種常見方案都有其優(yōu)缺點(diǎn)。但對于TC3xx這一類的MCU來說,F(xiàn)lash容量通常都很大,足夠用,所以通常可以先把APP暫存下來再進(jìn)行更新,防止數(shù)據(jù)傳輸中斷導(dǎo)致APP不可用。

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

推薦的OTA實(shí)現(xiàn)方式詳解

TC3xx的Flash地址映射方式

首先, TC33x和TC33xED不支持AB SWAP功能,其他TC3xx設(shè)備都能夠通過AB SWAP功能實(shí)現(xiàn)SOTA軟件更新。

TC3xx 如果使能了AB SWAP功能,F(xiàn)lash大小實(shí)際能用的最少減半,TC3xx各系列AB SWAP能力如圖3所示。

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

圖3 TC3xx支持AB SWAP功能芯片系列及映射關(guān)系

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

舉例TC387 AB SWAP特性

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

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

圖4 TC387 PFLASH 映射關(guān)系以及可用PFLASH大小

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

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

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

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

TC3xx的SOTA功能描述

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

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

TC3xx的SOTA功能實(shí)現(xiàn)詳解

實(shí)現(xiàn)SOTA功能所需關(guān)注配置項(xiàng)

英飛凌AURIX TC3xx實(shí)現(xiàn)SOTA功能主要需要配置如圖6所示:

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

圖6 SOTA功能所需關(guān)注配置項(xiàng)

1

SOTA模式使能UCB_OTP.PROCONTP.SWAPEN,該參數(shù)決定是否開啟SOTA模式,在寄存器Tuning Protection Configuration中的SWAPEN進(jìn)行配置,對應(yīng)UCB定義如下:

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

1f2d1fee-6934-11ed-8abf-dac502259ad0.png1f3364d0-6934-11ed-8abf-dac502259ad0.png1f5e52b2-6934-11ed-8abf-dac502259ad0.png1f6b77da-6934-11ed-8abf-dac502259ad0.png

2

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

我們參考下面關(guān)于SOTA功能實(shí)現(xiàn)的UCB,內(nèi)容定義:

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

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

3

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

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

SOTA功能實(shí)現(xiàn)時(shí)SWAP配置及流程

SOTA功能應(yīng)用時(shí):分系統(tǒng)剛啟動(dòng)時(shí)SWAP配置和系統(tǒng)運(yùn)行時(shí)SWAP配置。

系統(tǒng)啟動(dòng)時(shí)SWAP配置:

如果SOTA功能使能,那么代碼生成的文件至少需要刷進(jìn)Active Bank。為了信息安全,建議通過UCB_PFLASH設(shè)置相應(yīng)的sectors讀寫保護(hù)。

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

如果當(dāng)前選擇的是標(biāo)準(zhǔn)地址,那么0x00000055H需要寫入U(xiǎn)CB_SWAP的MARKERL0.SWAP這個(gè)域。然后通過把MARKERL0.SWAP的地址寫入MARKERH0.ADDR予以確認(rèn);同時(shí),將CONFIRMATIONL0.CODE的地址寫入CONFIRMATIONH0.ADDR;同時(shí),將57B5327FH寫入57B5327FH予以確認(rèn)。

UCB_ OTP一次性刷寫保護(hù)以設(shè)置所需的OTP、WOP和標(biāo)定保護(hù)。請注意,任何受OTP或WOP保護(hù)的扇區(qū)都不能使用新映像重新編程

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

任何受OTP保護(hù)的HSM扇區(qū)都不能使用新映像重新編程。

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

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

圖7 系統(tǒng)剛啟動(dòng)時(shí)SWAP配置及流程

系統(tǒng)運(yùn)行時(shí)SWAP配置:

下面是程序正在運(yùn)行時(shí),需要實(shí)現(xiàn)軟件SWAP到新程序的配置流程。

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

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

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

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

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

1f9647ee-6934-11ed-8abf-dac502259ad0.png1feb935c-6934-11ed-8abf-dac502259ad0.png1ff34214-6934-11ed-8abf-dac502259ad0.png20015188-6934-11ed-8abf-dac502259ad0.png20084e0c-6934-11ed-8abf-dac502259ad0.png

增加SWAP次數(shù)方法流程如圖8所示:

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

圖8 增加SWAP次數(shù)方法流程

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

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

圖9 系統(tǒng)運(yùn)行時(shí)SWAP配置

總結(jié)

TC3xx SWAP特性實(shí)現(xiàn)OTA功能后,特別注意以下五點(diǎn):

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

CPU訪問Flash只能通過Global總線從而稍微增加了訪問時(shí)間,參考圖5。詳細(xì)參數(shù)請查相應(yīng)的數(shù)據(jù)手冊。

PFLASH的prefetch功能被禁止,同樣會(huì)稍微影響整個(gè)系統(tǒng)的性能。

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

信息安全方面:Active Bank 和Inactive Bank同樣受信息安全相關(guān)寄存器的保護(hù)。

至此,TC3xx SWAP特性實(shí)現(xiàn)SOTA功能的配置和流程介紹完畢。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351212
  • SWAP
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    12826
  • OTA
    OTA
    +關(guān)注

    關(guān)注

    7

    文章

    580

    瀏覽量

    35230

原文標(biāo)題:AURIX? TC3xx基于以太網(wǎng)的OTA研究與實(shí)現(xiàn)

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    英飛凌TC3XX系列多核MCU學(xué)習(xí)筆記(1)

    聲明:本文是在學(xué)習(xí)英飛凌 TC3XX系列多核 MCU 過程中整理的筆記,便于后期復(fù)習(xí)!
    發(fā)表于 09-19 09:54 ?2569次閱讀
    英飛凌<b class='flag-5'>TC3XX</b>系列多核MCU學(xué)習(xí)筆記(1)

    TC3xx芯片的Endinit功能詳解

    上鎖Endinit。那什么是Endinit功能了? -- 本文就來詳細(xì)解鎖TC3xx芯片的Endinit機(jī)制。
    的頭像 發(fā)表于 11-27 09:23 ?2320次閱讀
    <b class='flag-5'>TC3xx</b>芯片的Endinit<b class='flag-5'>功能</b>詳解

    TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解

    的Tick數(shù)就是基于模塊時(shí)鐘的)。本系列文章就來詳細(xì)介紹TC3xx芯片的時(shí)鐘系統(tǒng)及其具體配置。本文為TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解。
    的頭像 發(fā)表于 12-01 09:37 ?2628次閱讀
    <b class='flag-5'>TC3xx</b>芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解

    英飛凌TC3xx系列安全管理單元的使用

    本篇文檔主要用來介紹英飛凌基于AURIX-2G TriCore 1.6.2架構(gòu)的 TC3xx系列安全管理單元的使用。
    的頭像 發(fā)表于 12-07 09:29 ?2132次閱讀
    英飛凌<b class='flag-5'>TC3xx</b>系列安全管理單元的使用

    SWAP是否適用于兩個(gè)用于TC3xx系列控制器的獨(dú)立軟件?

    目前正在使用 Swap/Partitions 概念實(shí)現(xiàn) SOTATC3xx 系列)。 檢查為應(yīng)用程序和引導(dǎo)加載程序?qū)嵤?SOTA 的可行性
    發(fā)表于 01-30 07:56

    TC3xx系列怎么禁用trap?

    目前在TC3xx調(diào)試flash讀寫功能,單獨(dú)運(yùn)行flash相關(guān)功能沒有問題,但將flash相關(guān)功能集成到工程中。操作pflash就會(huì)進(jìn)入trap中,查看了一些帖子說是要禁掉trap?請
    發(fā)表于 01-31 06:21

    TC3xx系列是否支持RTC功能?

    請教各位,TC3xx系列芯片是否支持RTC功能,目前要記錄snapshot的時(shí)間點(diǎn)(年月日時(shí)分秒)。
    發(fā)表于 02-02 07:53

    TC3xx的HSM中有沒有單調(diào)計(jì)數(shù)器?

    你好, 我看到 OPTIGA 有單調(diào)計(jì)數(shù)器,但我在 TC3xx 的 HSM 中確實(shí)找不到單調(diào)計(jì)數(shù)器。 能否確認(rèn)TC3xx的HSM中沒有單調(diào)計(jì)數(shù)器?
    發(fā)表于 03-05 07:56

    TSIM是否支持TC3xx系列在沒有硬件的情況下調(diào)試應(yīng)用程序?

    你好, TSIM是否支持TC3xx系列在沒有硬件的情況下調(diào)試應(yīng)用程序? AURIX TC3xx - Free Entry ToolChain 是否有助于實(shí)現(xiàn)上述目的?
    發(fā)表于 05-17 07:02

    基于TC3xx SWAP特性實(shí)現(xiàn)SOTA功能配置流程

    OTA升級:通過OTA方式實(shí)現(xiàn)固件或軟件的升級。通過無線通信方式實(shí)現(xiàn)軟件升級,都可以叫OTA升級,比如無線以太網(wǎng)/藍(lán)牙等。
    的頭像 發(fā)表于 11-21 09:28 ?1694次閱讀

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊

    ADC模塊的配置,和芯片特性強(qiáng)相關(guān)的地方還是有很多地方(AUTOSAR MCAL標(biāo)準(zhǔn)定義的配置項(xiàng)都是一樣的),本文將詳細(xì)介紹基于Infineon T
    的頭像 發(fā)表于 01-29 16:45 ?8614次閱讀

    AURIX? TC3xx NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記

    TC3xx芯片最多有6個(gè)內(nèi)核,每個(gè)核有自己的私有的Memory以及共有的Memory。
    發(fā)表于 06-19 09:09 ?7116次閱讀
    AURIX? <b class='flag-5'>TC3xx</b> NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記

    TC3xx芯片DMU介紹

    AUTOSAR架構(gòu)圖下的Fls模塊對上(Fee)模塊提供統(tǒng)一的標(biāo)準(zhǔn)接口,但是具體的實(shí)現(xiàn)因不同的芯片而不一樣,Infineon公司的Fls模塊通過操作TC3xx芯片的DMU模塊實(shí)現(xiàn)Fls的功能
    的頭像 發(fā)表于 08-31 14:10 ?1908次閱讀
    <b class='flag-5'>TC3xx</b>芯片DMU<b class='flag-5'>介紹</b>

    TC3xx芯片的MPU功能詳解

    在前面的文章文章中我們介紹了RH850-U2A的內(nèi)存保護(hù)單元(MPU),了解了MPU的概念以及在RH850-U2A上的具體使用流程,但是對于TC3
    的頭像 發(fā)表于 09-19 11:42 ?2360次閱讀
    <b class='flag-5'>TC3xx</b>芯片的MPU<b class='flag-5'>功能</b>詳解

    深入解析TC3xx芯片中的SMU模塊應(yīng)用

    TC3xx芯片是德國英飛凌半導(dǎo)體公司推出的汽車級處理器芯片系列,其中的SMU(System Management Unit)模塊是其重要組成部分之一。SMU模塊在TC3xx芯片中具有重要的系統(tǒng)管理
    的頭像 發(fā)表于 03-01 18:08 ?1762次閱讀