天天看點

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

• 新增功能

• SWV視窗

• ST開發闆自動識别并顯示名稱

• 晶片版本号顯示

• 相關文章

• UM2237- STM32CubeProgrammer軟體工具介紹

概覽

開發闆 內建下載下傳器 jtag_stm32下載下傳神器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軟體工具介紹”

片上存儲器擦除和讀寫

開發闆 內建下載下傳器 jtag_stm32下載下傳神器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)位元組就可以通過這種方式進行程式設計。

選項字讀寫

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

點開OB頁面後,可以看到目前所連接配接MCU的選項字的設定情況。使用者可以在這裡修改選項字的值。具體選項字的說明,請參考對應MCU的參考手冊。

“二合一”燒錄

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

使用“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字段的定義了。

外部存儲器讀寫

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

如果想要對通過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

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

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資訊輸出視窗

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

我們在做開發的時候,經常會需要輸出一些調試資訊。常用的方法就是通過重定向printf到序列槽來進行列印,這種方法需要占用一路序列槽。還有一種方法就是将printf重定向到SWD調試接口的SWO口,通過SWO來輸出調試資訊。

STM32CubeProgrammer的SWV視窗可以顯示SWO發送的調試資訊,并且可以将所有接收到的資訊儲存在指定的“.log”檔案中。

指令行界面

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

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固件更新

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

将STLink調試器連接配接到電腦後,打開STM32CubePorgrammer,重新整理STLink連接配接就可以看到目前STLink的固件版本。點選“Firmware upgrade”按鈕,打開STLinkUpgrade工具可以對STLink固件版本進行更新。

資源連結

開發闆 內建下載下傳器 jtag_stm32下載下傳神器STM32CubeProgrammer介紹

如下圖所示,在浏覽器位址欄中輸入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系列密鑰生成器軟體介紹》