新增功能
SWV窗口
ST開發板自動識別並顯示名稱
晶片版本號顯示
相關文章
UM2237- STM32CubeProgrammer軟體工具介紹
概覽
STM32Cube家族中的STM32CubeProgrammer是STM32 MCU專用編程工具。它支持通過STLink的SWD/JTAG調試接口對STM32 MCU的片上存儲器進行擦除和讀寫操作;或者通過UART,USB, I2C,SPI,CAN等通信接口,利用出廠時固化在晶片內部的系統bootloader,對STM32 MCU的片上存儲器進行擦除和讀寫操作。
這裡需要說明的是STLink v2僅支持通過UART和USB通信接口對片上存儲器進行操作,而STLink v3增加了SPI,I2C和CAN通信接口的支持。除此以外,STM32CubeProgrammer還可以操作STM32 MCU的選項字節和一次性可編程字節。通過STM32CubeProgrammer提供的或者自己編寫的外部external loader,還可以對外部存儲器進行編程。
STM32CubeProgrammer提供了圖形化和命令行兩種用戶界面。除此之外,STM32CubeProgrammer還提供了C++ API,用戶可以將STM32CubeProgrammer的功能集成到自己所開發的PC端應用中。
圖形化用戶界面如下圖所示,在右側的配置區域,用戶可以選擇通過STLink調試接口,或者USB, UART等通信接口連接到STM32 MUC。連接到STM32 MCU後,在「Device information」區域可以看到當前MCU的型號,版本和Flash大小等信息。
如果連接的是ST官方的開發板,還會顯示該開發板的名稱。那麼,這裡顯示的信息都是來自哪裡呢?其中「CPU「型號,也就是內核型號,從內核的CPUID 只讀寄存器讀得,該寄存器的說明在各個晶片系列對應的編程手冊中可以查到,比如STM32F7對應的編程手冊PM0253;晶片型號」Device ID「和晶片版本」Revision ID」分別來自STM32MCU的DBGMCU_IDC只讀寄存器中的Device ID欄位和Revision欄位。
Flash大小「Flash size」的值,可以從系統Flash的Flash size只讀寄存器中讀到。這些寄存器的說明都可以在各個晶片系列對應的參考手冊中的「調試支持」和「設備電子籤名」章節找到,比如STM32H743的參考手冊RM0433。開發板名稱「Board」對應的信息,存儲在板載的STLink中,所以只有用ST開發板自身板載的STLink進行連接時才能看到這個信息。
在STM32CubeProgrammer最左側一欄可以在不同的功能標籤頁之間切換,進行不同的操作。
接下來,我們會對STM32CubeProgrammer的主要功能進行介紹,關於STM32CubeProgrammer的具體操作步驟,請參考」UM2237-STM32CubeProgrammer軟體工具介紹」
片上存儲器擦除和讀寫
STM32CubeProgrammer支持按扇區對Flash進行擦除和全片擦除。可以導入多種格式的執行文件進行燒錄,支持的文件格式有:二進位文件(.bin),elf文件(.elf,.axf,.out),hex文件(.hex)和摩託羅拉的S-record文件(.srec)。
擦除操作
通過STLink與目標MCU建立連接後,在「Erasing&Programming」頁面下,可以按扇區對flash進行擦除,或者選擇「Full chip erase」按鈕,進行全片擦除。
燒錄操作
在「Erasing&Programming」頁面下,點擊「Browse」按鈕導入可執行文件,然後點擊「Start Programming」進行燒錄。
也可以在「Memory&file edition」頁面下,打開要燒錄的可執行文件,然後點擊「download」進行燒錄。
在「Memory&file edition」的「Device Memory」頁面下,還可以讀出當前指定地址範圍的MCU存儲器值,並通過「Save As」菜單將讀出的內容保存為二進位文件(.bin), hex文件(.hex)或S-record文件(.srec)。
除了前面介紹的燒錄整個可執行文件的方式以外,還可以在「Memory&file edition」的「Device Memory」頁面下直接修改某個地址的值,」回車」後STM32CubeProg會自動完成讀出-修改-擦除-回寫的操作。對於一次性可編程(OTP)字節就可以通過這種方式進行編程。
選項字讀寫
點開OB頁面後,可以看到當前所連接MCU的選項字的設定情況。用戶可以在這裡修改選項字的值。具體選項字的說明,請參考對應MCU的參考手冊。
「二合一」燒錄
使用「Erasing&Programming」頁面下的「二合一」燒錄模式,可以在一次操作中完成FLASH和選項字的燒錄工作。選項字的配置使用STM32CubeProgrammer命令行的「-ob」命令。
比如,現在要在燒寫完Flash後,設置讀保護為level1。可以按以下步驟先進行設置: 設置好要下載的可執行文件路徑
勾選「Automatic Mode」下的「Full chip erase」和「Download file」
在「Option bytes commands」的輸入框中輸入:「-ob rdp=0xBB」
然後點擊「Start automatic mode」,STM32CubeProgrammer就會開始按順序執行上述的操作,同時在Log窗口顯示整個執行的過程和進度。
關於選項字命令 「-ob」的格式說明,可以參考UM2237的3.2.15章節。但「-ob」命令中OptByte欄位的定義在UM2237中沒有說明,可以有兩種方法來查詢:
一種是通過STM32CubeProgrammer圖形界面下「Option bytes」標籤頁中的「Name」一欄的名稱,因為「-ob」命令中OptByte欄位的定義與這裡是一致的;
還可以通過「-ob displ」命令來顯示當前所有的選項字配置,從而也就可以知道各個OptByte欄位的定義了。
外部存儲器讀寫
如果想要對通過SPI,FMC,QSPI等接口連接到STM32的外部存儲器進行讀寫操作,就需要一個external loader。
CubeProgrammer默認提供了STM32開發板上集成的外部存儲器對應的external loader。
用戶如果使用了其他型號的存儲器,也可以自己生成external loader文件(*. stldr),詳細操作請參考UM2237的第2.3.3章節。後續我們也會針對這部分內容做更進一步的介紹。
在對外部存儲器進行操作前,必須先在「ExternalLoader」頁面下,選擇對應的external loader,該external loader會在接下來對外部存儲器的操作中用到。然後就可以在「Erasing&Programming」頁面和「Memory&file edition」頁面下進行擦除和燒寫的操作了。
Bootloader
STM32 MCU出廠時,內部的系統memory就已經燒好了bootloader,提供通過USART,USB,I2C,SPI,CAN等接口更新片上Flash的功能。
不同STM32 MCU型號支持的bootloader接口有所不同,具體可以參考應用手冊AN2606。
STLink v2或者STLink v3提供了從USART,USB,I2C,SPI和CAN等通信協議到USB的橋接接口,STM32MCU可以通過STLink v2或者STLink v3與PC端建立連接。
而STM32CubeProgrammer則提供了PC端的操作界面,可以通過bootloader對片上Flash進行擦除和燒錄。
STLink v2隻提供了USART和USB兩種通信接口,而STLink v3增加了I2C,SPI和CAN通信接口的支持。ST原來提供有兩個獨立的PC端軟體:「STM32 Flash loader demonstrator」和「Dfuse Demo」,分別支持USART bootloader和USB DFU功能,現在只需要使用STM32CubeProgrammer一個軟體就可以支持所有這些通信接口了。
SWO信息輸出窗口
我們在做開發的時候,經常會需要輸出一些調試信息。常用的方法就是通過重定向printf到串口來進行列印,這種方法需要佔用一路串口。還有一種方法就是將printf重定向到SWD調試接口的SWO口,通過SWO來輸出調試信息。
STM32CubeProgrammer的SWV窗口可以顯示SWO發送的調試信息,並且可以將所有接收到的信息保存在指定的「.log」文件中。
命令行界面
STM32CubeProgrammer提供命令行界面,可以通過執行指令的方式實現大部分STM32CubeProgrammer的功能。
STM32_Programmer_CLI.exe可執行文件在STM32CubeProgrammer安裝路徑下的bin文件夾下,執行STM32_Programmer_CLI.exe可以看到所有支持的指令及參數說明。
命令行界面還提供了一些在圖形化界面不具備的功能,例如:創建可信任包,安全燒錄,計算CRC值等功能。詳細說明請參考UM2237。
圖中舉了一個通過SWD接口連接目標晶片並設置讀保護級別1的例子,通過「-c」指令先與目標晶片建立連接,再通過「-ob」指令修改讀保護的級別,完整的命令行指令為:STM32_Programmer_CLI.exe -c port=SWD -ob rdp=0xBB。
STLink固件更新
將STLink調試器連接到電腦後,打開STM32CubePorgrammer,刷新STLink連接就可以看到當前STLink的固件版本。點擊「Firmware upgrade」按鈕,打開STLinkUpgrade工具可以對STLink固件版本進行更新。
資源連結
如下圖所示,在瀏覽器地址欄中輸入www.st.com/stm32cube,可以直接打開STM32Cube的主頁面。以這個頁面作為入口可以快速地找到STM32Cube生態系統下的所有軟體工具和軟體包,STM32CubeProgrammer也在這其中。
除此以外,直接在搜索欄搜索關鍵字「STM32CubeProg」也可以找到STM32CubeProg的主頁面。在STM32CubeProgrammer頁面的Overview標籤頁下有對STM32CubeProgrammer的介紹以及下載連結,在Documentation標籤頁下可以找到其相關的文檔。
用戶手冊/應用筆記
用戶手冊/應用筆記
UM2237
STM32CubeProgrammer software description
《STM32CubeProgrammer軟體工具介紹》
所有STM32產品通用
UM2238
STM32 Trusted Package Creator tool software description
《創建STM32受信任包軟體工具介紹》
Security相關
AN5054
Secure programming using STM32CubeProgrammer
《通過STM32CubeProgrammer進行安全燒錄》
UM2543
STM32MP1 Series Signing Tool software description
《STM32MP1系列籤名工具介紹》
適用STM32MP1產品系列
UM2542
STM32MP1 Series Key Generator software description
《STM32MP1系列密鑰生成器軟體介紹》