01
什么是SOTA?
SOTA全稱是云端軟件升級(jí)(Software updates Over The Air),就是指在不連接燒寫器的情況下,通過CAN、UART或其它通訊方式,實(shí)現(xiàn)應(yīng)用程序的更新。 在進(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)行程序更新。具體來說有以下幾種方式: 方案一:更新程序時(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ù)。 方案二: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。 方案三:將方案一和方案二相結(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空間占用更大。 方案四:在Flash中劃分出兩塊相同大小的區(qū)域,分為A區(qū)和B區(qū),都用來存放APP,但同一時(shí)間下只有一個(gè)區(qū)的APP是有效的,分別設(shè)置一個(gè)標(biāo)志位標(biāo)識(shí)其有效性。初始狀態(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)用性大大降低。 經(jīng)過上面的分析,可以看出來每種方案都有其優(yōu)缺點(diǎn),對于Flash容量較小的MCU,通常采用方案二,因?yàn)闆]有過多的空間暫存APP更新數(shù)據(jù)。但對于TC3XX這一類的MCU來說,F(xiàn)lash容量通常都很大,足夠用,所以通常要先把APP暫存下來再進(jìn)行更新,防止數(shù)據(jù)傳輸中斷導(dǎo)致APP不可用。上面的方案一、三、四都能實(shí)現(xiàn),但并不完美。TC3XX系列的SOTA機(jī)制更類似于方案四,但它的Flash支持兩種地址映射方式,從而使得APP編譯時(shí)不需要區(qū)分AB區(qū),使用相同的地址即可,從而避免了方案四的硬傷,為我們提供了一種最佳的SOTA方案。
02
TC3XX的Flash地址映射方式
我們以TC397的Flash為例,用于存儲(chǔ)程序代碼的PFlash的標(biāo)準(zhǔn)地址映射方式(Standard Address Map)如下,表中PF0-PF5代表物理意義上的5塊Flash。 第二種地址映射方式被稱為 Alternate Address Map,如下表所示,標(biāo)準(zhǔn)模式下PF0-1的地址范圍現(xiàn)在被映射到了PF2-3,PF4的地址范圍被映射到了PF5。
03
TC3XX的SOTA功能描述
當(dāng)SOTA功能激活時(shí),PFLash被劃分為兩部分,一部分用來存儲(chǔ)可執(zhí)行代碼(active bank),另一部分可用來讀取和寫入(inactive bank)。當(dāng)APP更新完畢后,兩個(gè)部分互換,即切換上面兩種地址映射方式。在標(biāo)準(zhǔn)模式下使用PF0-1和PF4作為active bank,后文稱作組A,在Alternate模式下使用PF2-3和PF5作為active bank,后文稱作組B,就可以實(shí)現(xiàn)上述方案四,且能寫入完全相同的APP程序,以相同的地址進(jìn)行運(yùn)行。 需要注意的是,所有NVM操作都是通過DMU使用PFLASH的物理系統(tǒng)地址執(zhí)行的,也就是說,NVM操作總是使用標(biāo)準(zhǔn)的地址映射,而不管選擇使用哪種地址映射。“NVM操作”是一個(gè)術(shù)語,用于任何針對FLASH的命令,如程序、擦除等,但不包括讀取和執(zhí)行代碼。 有關(guān)SOTA地址映射的參數(shù)在Flash中的UCB(User Configuration Block)中進(jìn)行配置,在UCB中配置后,只有當(dāng)下次MCU復(fù)位的時(shí)候才會(huì)更新配置。
04
SOTA的配置參數(shù)
(1)SOTA Mode Enable 該參數(shù)決定是否開啟SOTA模式,在寄存器Tuning Protection Configuration中的SWAPEN進(jìn)行配置,定義如下: (2)Bank Swap 在UCB_SWAP區(qū)域中,對SOTA模式下使用哪種地址映射進(jìn)行配置。 UCB_SWAP區(qū)域包含以下內(nèi)容: 其中最重要的是前四個(gè),我們分別來看一下: ① MARKERLx (x=0-15) MARKERL中的SWAP就是標(biāo)記使用標(biāo)準(zhǔn)地址映射還是Alternate地址映射。 ② MARKERHx (x=0-15) MARKERH中存著與之相對應(yīng)的MARKERLx.SWAP的入口地址,是用來做校驗(yàn)的。 ③ CONFIRMATIONLx (x=0-15) CONFIRMATIONL是確認(rèn)代碼,要寫入固定的0x57B5327F,上面的MARKERLx.SWAP才有效。 ④ MARKERHx (x=0-15) MARKERH中存著與之對應(yīng)的 CONFIRMATIONLx.CODE的入口地址,也是用來做校驗(yàn)的。 ?
05
SOTA的初始化配置
初始化狀態(tài)是使用標(biāo)準(zhǔn)地址映射,此時(shí)SOTA模式未啟用。按以下步驟啟用SOTA: ① 用燒寫器把APP燒寫進(jìn)PFlash的組A地址處。 ② 向MARKERL0寫入0x00000055。 ③ 向MARKERH0寫入MARKERL0的系統(tǒng)地址。 ④ 向CONFERMATIONL0寫入0x57B5327F。 ⑤ 向CONFERMATIONH0寫入CONFERMATIONL0的系統(tǒng)地址。 ⑥ 將UCB_OTP0中SWAPEN標(biāo)志位置為Enable。 ⑦ 重啟MCU。 經(jīng)過上面的步驟,就事MCU進(jìn)入了SOTA模式,其中步驟②-⑤是為了啟用標(biāo)準(zhǔn)地址映射。手冊中給了如下的流程圖供參考,其中一些加解密的步驟我這里省略了,暫時(shí)沒有詳細(xì)研究:
06
SOTA的后續(xù)配置
上面說的是第一次啟用SOTA時(shí)的配置,下面我們就來看一下SOTA啟用后,進(jìn)行APP更新的步驟: ① 將新的APP寫入PFlash中未激活的部分,即上文提到的Inactive Bank,并進(jìn)行準(zhǔn)確性校驗(yàn)。 ② 如果新的APP被寫入組B,則向MARKERLx.SWAP寫入0x000000AA,啟用Alternate地址映射模式;如果新的APP被寫入組A,則向MARKERLx.SWAP寫入0x00000055,啟用標(biāo)準(zhǔn)地址映射模式。(x是0-15的值,從0開始向上遞增,由上文可知UCB_SWAP最多能存儲(chǔ)16組標(biāo)志值,存滿后再擦除重新寫入。) ③ MARKERHx.ADDR、CONFIRMATIONLx.CODE和CONFIRMATIONHx.ADDR配置同上文。 ④ 向CONFIRMATIONL(x-1).CODE再次寫入0xFFFFFFFF,來使上一組UCB_SWAP值失效。向PFlash再次寫入全1的值不會(huì)導(dǎo)致PFlash操作錯(cuò)誤。 手冊中給了下面這個(gè)流程圖供參考: ? 以上就是Tricore TC3XX系列SOTA機(jī)制的介紹,我目前也只是看了手冊,還沒有實(shí)際運(yùn)用過,有不正確的地方歡迎大家交流討論。 最后只要將此文章分享至朋友圈,集20個(gè)贊,截圖后臺(tái)發(fā)給小編,即可獲取下圖小編整理的一些TC3XX的資料。
責(zé)任編輯:彭菁
-
軟件
+關(guān)注
關(guān)注
69文章
4944瀏覽量
87500 -
APP
+關(guān)注
關(guān)注
33文章
1574瀏覽量
72489 -
程序
+關(guān)注
關(guān)注
117文章
3787瀏覽量
81049 -
Aurix
+關(guān)注
關(guān)注
1文章
71瀏覽量
10918
原文標(biāo)題:AURIX TC3XX系列的SOTA機(jī)制詳解
文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論