“
1、引言
客戶(hù)使用 STM32G474 系列芯片,在燒錄應(yīng)用程序的同時(shí)要對(duì) Option Bytes 中的 DBANK 進(jìn)行修改,采用 STlink Utility 或是 CubeProgrammer 工具進(jìn)行操作,并希望整個(gè)過(guò)程只用一次燒 錄動(dòng)作就完成,發(fā)現(xiàn)燒錄的應(yīng)用程序無(wú)法運(yùn)行。
2、問(wèn)題產(chǎn)生及原因分析
STM32G474 系列芯片具有雙 Bank 功能,且默認(rèn)情況下 Option Bytes 中的 DBANK =1,即雙 Bank 使能。但客戶(hù)實(shí)際的應(yīng)用是單 Bank,所以需要將 DBANK 設(shè)置為 0,這樣客戶(hù)在使用 Utility 或是 CubeProgrammer 工具燒錄應(yīng)用程序時(shí),同時(shí)設(shè)置 Option Bytes 中的DBANK 為 0。但是當(dāng)燒錄結(jié)束后,發(fā)現(xiàn)應(yīng)用程序無(wú)法正常運(yùn)行,需要再次燒錄才能運(yùn)行。
整個(gè)燒錄的過(guò)程,在 Utility 中操作如下圖所示,通過(guò) Target ->Automatic Mode->Option bytes configuration 對(duì) DBANK 進(jìn)行修改,在 File 中選擇應(yīng)用程序文件,然后直接燒錄。
在 CubeProgrammer 中操作如下圖所示,通過(guò) Erasing & Programming->Automatic Mode->Option bytes commands,寫(xiě)入修改 DBANK 的命令行,在 File 中選擇應(yīng)用程序文件,然后直接燒錄。
整個(gè)操作流程是正確的,以 CubeProgrammer 為例,整個(gè)操作的日志如下,顯示所有操作正常完成。
但是仔細(xì)閱讀日志,可以發(fā)現(xiàn)整個(gè)操作,首先燒錄的是應(yīng)用程序,然后再進(jìn)行 Option Bytes 的修改,也就是說(shuō),在燒錄應(yīng)用程序的時(shí)候,MCU 依舊是工作在雙 bank 模式下,待程序燒錄完成,將雙 Bank 修改為單 Bank,注意 DBANK 的修改將會(huì)改變 Flash 的取指方式,如下:
? Single bank mode DBANK=0: read access of 128 bits
? Dual bank mode DBANK=1: read access of 64 bits
可以通過(guò)單步操作的方式來(lái)查看 Flash 中內(nèi)容的區(qū)別。在雙 Bank 模式下燒錄程序后,讀出Flash 內(nèi)容如下:
對(duì)比以上的內(nèi)容,可以發(fā)現(xiàn)由于取指方式的改變,讀取的 Flash 中內(nèi)容發(fā)生了變化,后者出現(xiàn)了大片的空白空間,這也就是此前客戶(hù)操作方式在完成燒錄后程序無(wú)法運(yùn)行的原因。
3、解決方案
通過(guò)以上的分析,要實(shí)現(xiàn)客戶(hù)的要求,必須首先對(duì) Option Bytes 進(jìn)行修改,將 Flash 配置為單 Bank 模式后,才能進(jìn)行應(yīng)用程序的燒錄,但是在 Utility 或是 CubeProgrammer 中無(wú)法修改其本身的操作時(shí)序,無(wú)法通過(guò)一次操作的方式完成,必須分成兩步來(lái)完成,即:
? 修改 Option Bytes 中的 DBANK ? 燒錄應(yīng)用程序
那么客戶(hù)最希望的只用一個(gè)步驟完成所有的操作是不是沒(méi)法實(shí)現(xiàn)了?別急,ST 還提供了另一個(gè)工具,ST_LINK CLI, 它的操作完全通過(guò)命令行的方式來(lái)完成。其路徑位于 ST_LINK Utility在安裝目錄下,如下:
可以通過(guò) cmd 窗口中直接調(diào)用該工具,舉個(gè)例程如下:
D:ST-LINK Utility>st-link_cli.exe -c SWD -OB DBANK=0 -Rst -ME -P d: est.hex -V while_programming
以上可以看到 Option Bytes 首先完成修改,然后讓芯片進(jìn)行 reset,保證新的 Option Bytes重新加載并生效,最后完成應(yīng)用程序的燒錄。
4、小結(jié)
這里分析了客戶(hù)使用燒錄工具 ST Link Utility 和 STM32CubeProgrammer 同時(shí)燒錄 Option Bytes 中的 DBANK 設(shè)置和應(yīng)用程序后程序無(wú)法正常運(yùn)行的問(wèn)題,給出了采用 ST-LINK_CLI.exe 工具一次性操作完成 Option Bytes 與應(yīng)用程序燒錄的解決方案。
THE END
原文標(biāo)題:工程師筆記|STM32G4 應(yīng)用程序與 Option Bytes 同時(shí)燒錄問(wèn)題
文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
單片機(jī)
+關(guān)注
關(guān)注
6063文章
44921瀏覽量
646941 -
STM32
+關(guān)注
關(guān)注
2289文章
11012瀏覽量
362375
原文標(biāo)題:工程師筆記|STM32G4 應(yīng)用程序與 Option Bytes 同時(shí)燒錄問(wèn)題
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM32G4中的HRTIM是否可用?
基于STM32G4的電機(jī)控制項(xiàng)目開(kāi)發(fā)
如何使用STM32G4系列微控制器存儲(chǔ)器和外圍設(shè)備
AN4232_STM32F3和 STM32G4的模擬比較器入門(mén)指南

AN5310_使用STM32F3系列與STM32G4系列設(shè)備的模擬特性指南

STM32G4電機(jī)驅(qū)動(dòng)實(shí)例

基于STM32G4的電機(jī)控制項(xiàng)目開(kāi)發(fā)

STM32G4市場(chǎng)和特性篇

評(píng)論