“ 本文通過從芯片手冊,寄存器到代碼實現來梳理ota的bank AB升級方案, 舉例芯片 aurix Tc397”
01—內存先行
首先要評估flash夠不夠,如果flash都不夠,就無從SWAP機制可談。
正常情況下,我們的芯片有6塊flash可以用。如下圖
在激活OTA配置的時候,內存映射發生了變化。如下圖
從這兩張圖可以看出來,如果打開OTA配置的話,我們實際上可以用的flash 只有7M. 當然如果是別的芯片可用的flash會更少。這點是一開始就需要評估好的。否則芯片提供的機制無法滿足需求。
02—配置初始化流程
這里先放一張圖,芯片手冊提供的標準流程,后面會對每一個步驟進行解析
03—運行時流程
這里也先放一張圖,芯片手冊提供的標準流程,后面會對每一個步驟進行解析
04—軟件實現
從這里開始我們要對第二三兩章的圖進行一一實現。
一般來說是什么樣的流程呢,簡單的來說。下圖
05—讀取當前bank
當配置完SOTA之后,下一次上電,MCU會做什么呢。會首先讀取UCB里面的SOTA配置信息。發現了SOTA被配置上了。則要做下面兩件事
因為地址重映射了,訪問路徑變了,什么意思呢?答:訪問自己的pflash路徑變了。直達的路線不給訪問了,都需要走上面的總線。所以讀寫自己pflash速度可能會變慢。
通過下面寄存器自動寫入。
/** rief CPUx Flash Configuration Register 4 */ typedef struct _Ifx_CPU_FLASHCON4_Bits { Ifx_Strict_32Bit DDIS:1; /**< rief [0:0] Disable direct LPB access (rw) */ Ifx_Strict_32Bit reserved_1:31; /**< rief [31:1] internal Reserved */ } Ifx_CPU_FLASHCON4_Bits;
把當前的bank信息寫入寄存器,沒錯就是下面的寄存器。所以我們可以通過這個寄存器來獲取當前所在的bank.
SCU_SWAPCTRL.B.ADDRCFG
到這里第一步讀取當前的bank已經清楚了,并且也清楚什么時候這個寄存器被賦值的。
下一步根據當前的bank來選擇刷寫的地址。我們配置mcal的flashload都知道這個函數。
06—根據當前bank來刷寫固件
FlsLoader_ReturnType FlsLoader_Write(const FlsLoader_AddressType TargetAddress, const FlsLoader_LengthType Length, const uint8* const SourceAddressPtr)
這里面其中一個形參就是mcu的具體地址。
在使用SOTA時候,這個地址是需要注意的。也就是最上面我們給出的兩張圖。如果你下一次需要運行在BankB 那么這次刷寫的地址需要有個offset. 好吧,把上面圖復制下來仔細說一下。
就是這里當我們下一次需要運行在Bank B 我們的hex/s19文件本身的地址是不需要變化的。假設我們的hex地址開始是0x80001000 那么 這個就需要被刷寫到0x80601000這個地址。當我們把地址明確了之后,就和普通的bootloader 刷寫程序一樣。等待刷寫流程走完后。到了我們下一步,配置SOTA 和 寫入 SOTA。這里為什么提了一下寫入呢。因為這個寫SOTA有點特殊,因為這個配置信息是存在UCB里面的UCB_SWAP_ORIG/COPY
。這個位置是可能會把板子搞壞的位置。
07—配置SOTA
最開始的流程圖在這里就用上了。我們這里先不考慮HSM的情況,這塊容易死機。
首先根據這個圖,直到第一步是要擦除掉現在已經有的UCB。除非是第一次。否則都需要先擦除一遍。
但是這里要先注意一下SOTA的狀態,是否enable. 通過下面寄存器進行配置。具體可以看一下手冊解釋。
接上面,擦除方式呢?這里屬于Dflash的位置,用Dflash最原始的辦法就可以了。
擦除完之后就要根據當前的bank來選擇寫入的配置字。其實就是寫入UCB里面。和上面擦除一樣。這里屬于dflash, 寫的方式可以使用dmu.具體寫的內容就是下面的兩個位置。根據上面的參數即可。
具體數值呢?就是上面提到的0xAA 或者是0x55。下面的confirm呢?這里是固定的數據。
到了這里就到了流程的尾部。
系統reset, reset之后 啟動過程芯片會自動通過ucb的配置,來切換到另一個bank.
審核編輯:湯梓紅
-
芯片
+關注
關注
456文章
50938瀏覽量
424686 -
FlaSh
+關注
關注
10文章
1638瀏覽量
148182 -
內存
+關注
關注
8文章
3034瀏覽量
74137 -
SWAP
+關注
關注
0文章
51瀏覽量
12839 -
OTA
+關注
關注
7文章
582瀏覽量
35279
原文標題:OTA-swap Bank AB
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論