內(nèi)存先行
(資料圖)
配置初始化流程
這里先放一張圖,芯片手冊提供的標準流程,后面會對每一個步驟進行解析
運行時流程
這里也先放一張圖,芯片手冊提供的標準流程,后面會對每一個步驟進行解析
軟件實現(xiàn)
從這里開始我們要對第二三兩章的圖進行一一實現(xiàn)。
一般來說是什么樣的流程呢,簡單的來說。下圖
讀取當前bank
當配置完SOTA之后,下一次上電,MCU會做什么呢。會首先讀取UCB里面的SOTA配置信息。發(fā)現(xiàn)了SOTA被配置上了。則要做下面兩件事
因為地址重映射了,訪問路徑變了,什么意思呢?答:訪問自己的pflash路徑變了。直達的路線不給訪問了,都需要走上面的總線。所以讀寫自己pflash速度可能會變慢。
通過下面寄存器自動寫入。
把當前的bank信息寫入寄存器,沒錯就是下面的寄存器。所以我們可以通過這個寄存器來獲取當前所在的bank.
到這里第一步讀取當前的bank已經(jīng)清楚了,并且也清楚什么時候這個寄存器被賦值的。
下一步根據(jù)當前的bank來選擇刷寫的地址。我們配置mcal的flashload都知道這個函數(shù)。
根據(jù)當前bank來刷寫固件
這里面其中一個形參就是mcu的具體地址。
在使用SOTA時候,這個地址是需要注意的。也就是最上面我們給出的兩張圖。如果你下一次需要運行在BankB 那么這次刷寫的地址需要有個offset. 好吧,把上面圖復制下來仔細說一下。
就是這里當我們下一次需要運行在Bank B 我們的hex/s19文件本身的地址是不需要變化的。假設我們的hex地址開始是0x80001000 那么 這個就需要被刷寫到0x80601000這個地址。當我們把地址明確了之后,就和普通的bootloader 刷寫程序一樣。等待刷寫流程走完后。到了我們下一步,配置SOTA 和 寫入 SOTA。這里為什么提了一下寫入呢。因為這個寫SOTA有點特殊,因為這個配置信息是存在UCB里面的UCB_SWAP_ORIG/COPY 。這個位置是可能會把板子搞壞的位置。
配置SOTA
最開始的流程圖在這里就用上了。我們這里先不考慮HSM的情況,這塊容易死機。
首先根據(jù)這個圖,直到第一步是要擦除掉現(xiàn)在已經(jīng)有的UCB。除非是第一次。否則都需要先擦除一遍。
但是這里要先注意一下SOTA的狀態(tài),是否enable. 通過下面寄存器進行配置。具體可以看一下手冊解釋。
接上面,擦除方式呢?這里屬于Dflash的位置,用Dflash最原始的辦法就可以了。
擦除完之后就要根據(jù)當前的bank來選擇寫入的配置字。其實就是寫入UCB里面。和上面擦除一樣。這里屬于dflash, 寫的方式可以使用dmu.具體寫的內(nèi)容就是下面的兩個位置。根據(jù)上面的參數(shù)即可。
具體數(shù)值呢?就是上面提到的0xAA 或者是0x55。下面的confirm呢?這里是固定的數(shù)據(jù)。
到了這里就到了流程的尾部。
系統(tǒng)reset, reset之后 啟動過程芯片會自動通過ucb的配置,來切換到另一個bank.
會員權(quán)益:(點擊可進入)談思實驗室VIP會員
關鍵詞:

營業(yè)執(zhí)照公示信息