當前位置:首頁 > 公眾號精選 > 嵌入式ARM
[導讀]STM32CubeProgrammer(STM32CubeProg)是STM32微控制器的專用編程工具。


STM32CubeProgrammer(STM32CubeProg)是STM32微控制器的專用編程工具。

STM32用户都知道,當完成程序調試,需要對芯片進行程序代碼燒錄編程,一般會有三個選擇:
  1. 通過調試接口【遞四方香港】來燒寫程序,一般要使用STLink Utility或STVP工具軟件來完成;
  2. 通過UART接口來燒寫程序,需要下載基於PC端的flash 燒錄工具軟件STM32 Flash loader demonstrator配合;
  3. 通過USB接口來燒寫程序,需下載USB DfuSe工具軟件來實現。

2017年底,ST推出了多合一燒錄工具STM32CubeProgrammer,以其高集成度支持上述三類編程接口,還兼具其它更多功能。

STM32CubeProg 不斷迭代,至2020年10月,更新至最新版 STM32CubeProgrammer 2.5.0(點擊即可下載),增添更多新功能。

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端應用中。


▲  STM32CubeProg的圖形化界面 

圖形化用户界面如上圖所示,在右側的配置區域,用户可以選擇通過STLink調試接口,或者USB、UART等通信接口連接到STM32微控制器。連接到STM32 微控制器後,在“Device information”區域可以看到當前MCU的型號,版本和Flash大小等信息。如果連接的是ST官方的開發板,還會顯示該開發板的名稱。


那麼,這裏顯示的信息都是來自哪裏呢?其中“CPU“型號,也就是內核型號,從內核的CPUID 只讀寄存器讀得,該寄存器的説明在各個芯片系列對應的編程手冊中可以查到,比如STM32F7對應的編程手冊PM0253;芯片型號”Device ID“和芯片版本”RevisionID”分別來自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進行擦除,或者選擇“Fullchiperase”按鈕,進行全片擦除。


  • 燒錄操作

在“Erasing&Programming”頁面下,點擊“Browse”按鈕導入可執行文件,然後點擊“StartProgramming”進行燒錄。
也可以在“Memory&fileedition”頁面下,打開要燒錄的可執行文件,然後點擊“download”進行燒錄。
在“Memory&fileedition”  “Device Memory”頁面下,還可以讀出當前指定地址範圍的MCU存儲器值,並通過“SaveAs”菜單將讀出的內容保存為二進制文件(.bin), hex文件(.hex)或S-record文件(.srec)。
除了前面介紹的燒錄整個可執行文件的方式以外,還可以在“Memory&fileedition”   “Device Memory”頁面下直接修改某個地址的值,”回車”後STM32CubeProg會自動完成讀出-修改-擦除-回寫的操作。對於一次性可編程(OTP)字節就可以通過這種方式進行編程。


選項字讀寫
點開OB頁面後,可以看到當前所連接MCU的選項字的設定情況。用户可以在這裏修改選項字的值。具體選項字的説明,請參考對應MCU的參考手冊。

“二合一”燒錄
使用 “Erasing&Programming” 頁面下的“二合一”燒錄模式,可以在一次操作中完成FLASH和選項字的燒錄工作。選項字的配置使用STM32CubeProgrammer命令行的 “-ob” 命令。

舉例説明,現在要在燒寫完Flash後,設置讀保護為level1。可以按以下步驟先進行設置:
  1. 設置好要下載的可執行文件路徑

  2. 勾選 “AutomaticMode” 下的 “Fullchip erase” 和 “Downloadfile”

  3. 在 “Optionbytes commands” 的輸入框中輸入:“-ob rdp=0xBB”

然後點擊 “Start automatic mode” ,STM32CubeProgrammer就會開始按順序執行上述的操作,同時在Log窗口顯示整個執行的過程和進度。
關於選項字命令 “-ob”的格式説明,可以參考 UM2237(用户手冊STM32CubeProgrammer軟件工具介紹) 的3.2.15章節。但“-ob”命令中OptByte字段的定義在UM2237中沒有説明,可以有兩種方法來查詢:一種是通過STM32CubeProgrammer圖形界面下“Optionbytes”標籤頁中的“Name”一欄的名稱,因為“-ob”命令中OptByte字段的定義與這裏是一致的;還可以通過“-ob displ”命令來顯示當前所有的選項字配置,從而也就可以知道各個OptByte字段的定義了。


外部存儲器讀寫
如果想要對通過  SPI,FMC,QSPI 等接口連接到 STM32 的外部存儲器進行讀寫操作,就需要一個 external loader


C ubeProgrammer  默認提供了 STM32 開發板上集成的外部存儲器對應的 external loader
用户如果使用了其他型號的存儲器,也可以自己生成external loader文件(*. stldr),詳細操作請參考 UM2237 的第2.3.3章節。
在對外部存儲器進行操作前,必須先在 “External Loader” 頁面下,選擇對應的external loader,該external loader會在接下來對外部存儲器的操作中用到。然後就可以在 “Erasing&Programming” 頁面和 “Memory&fileedition” 頁面下進行擦除和燒寫的操作了。
Bootloader
STM32MCU出廠時,內部的系統memory就已經燒好了bootloader,提供通過USART,USB,I2C,SPI,CAN等接口更新片上Flash的功能。


不同STM32MCU型號支持的bootloader接口有所不同,具體可以參考應用手冊AN2606。STLink v2或者STLink v3提供了從USART,USB,I2C,SPI和CAN等通信協議到USB的橋接接口,STM32MCU可以通過STLink v2或者STLink v3與PC端建立連接。而STM32CubeProgrammer則提供了PC端的操作界面,可以通過bootloader對片上Flash進行擦除和燒錄。STLinkv2只提供了USART和USB兩種通信接口,而STLink v3增加了I2C,SPI和CAN通信接口的支持。ST原來提供有兩個獨立的PC端軟件:“STM32Flash loader demonstrator”和“Dfuse Demo”,分別支持USARTbootloader和USBDFU功能,現在只需要使用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  的固件版本。 點擊 “ Firmwareupgrade ” 按鈕,打開  STLinkUpgrade  工具可以對  STLink  固件版本進行更新。



STM32CubeProg 相關資源

如何找到STM32CubeProg
如上圖 ,在瀏覽器地址欄中輸入 www.st.com/stm32cube ,可以直接打開  STM32Cube  的主頁面。 以這個頁面作為入口可以快速地找到  STM32Cube  生態系統下的所有軟件工具和軟件包, STM32CubeProgrammer  也在這其中。
此外,直接在搜索欄搜索關鍵字“ STM32CubeProg ”也可以找到  STM32CubeProg  的主頁面。 STM32CubeProgrammer 頁面的 Overview 標籤頁下有對 STM32CubeProgrammer 的介紹以及下載鏈接,在  Documentation  標籤頁下可以找到其相關的文檔。


用户手冊及應用筆記
UM2237 用户手冊 《STM32CubeProgrammer軟件工具介紹》 :本文檔為通用文檔,面向所有STM32產品,是 關於 STM32CubeProgrammer 的詳細使用説明以及命令行的命令用法説明;

UM2238 用户手冊 《創建STM32受信任包軟件工具介紹》 和 AN5054 應用筆記 《通過STM32CubeProgrammer進行安全燒錄》 :與安全有關,介紹 如何創建可信任包以及如何進行安全燒錄。


UM2543 用户手冊 《STM32MP1系列簽名工具介紹》 和 UM2542 用户手冊 《STM32MP1系列密鑰生成器軟件介紹 STM32CubeProgrammer 還集成了” STM32MP1 系列密鑰生成器”和“ STM32MP1 系列簽名工具”,通過命令行對應的指令,可以生成 ECC 密鑰對,並對固件進行簽名。 具體使用方法請參考上述兩篇用户手冊


-END-

來源 | STM32

整理文章為傳播相關技術,版權歸原作者所有 |
如有侵權,請聯繫刪除 |

【遞四方香港】STM32如何配置外部中斷?
【遞四方香港】STM32單片機:獨立看門狗、窗口看門狗的配置
【遞四方香港】使用KeilMDK以及標準外設庫創建STM32工程的詳細過程
【遞四方香港】編碼器是什麼?STM32編碼器接口及應用編程
【遞四方香港】STM32學了很久,為什麼還是不會做項目?


免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

換一批

延伸閲讀

[玩轉嵌入式] 小船説翻就翻:硬件工程師VS軟件工程師

關於軟件工程師和硬件工程師總有太多的話題。 常態往往是這樣滴: 板子出問題了,硬件工程師:肯定是軟件的原因!軟件工程師:絕對是硬件的問題!...

關鍵字: 嵌入式 程序員

[嵌入式雲IOT技術圈] 甲醛檢測儀開源項目:產品級開發(一)

前陣子開源了一個基於TencentOS tiny物聯網操作系統的危險氣體探測儀項目,這次,我們再來開源一個新的項目-甲醛檢測儀,但是做項目之前,有必要了解下接下來要做的一些模塊以及如何來進行集成。 1、簡介 WZ...

關鍵字: 甲醛檢測儀 嵌入式

[架構師社區] 36張圖梳理Intellij IDEA常用設置

作者:請叫我小思 來源:blog.csdn.net/zeal9s/...

關鍵字: java 嵌入式

[架構師社區] 15000字的SQL語句大全

鏈接:cnblogs.com/liuqifeng/p/9148831.html 一、基礎 1、説明:創建數據庫 CREATE DATABASE database...

關鍵字: 計算機 嵌入式

[架構師社區] 上週我面了個三年Javaer,這幾個問題都沒答出來

身為  Java Web 開發我發現很多人一些 Web 基礎問題都答不上來。 上週我面試了一個三年經驗的小夥子,一開始我問他 HTTP/1、HTTP/2相關的他到是能答點東西出來。 後來我問他:你知...

關鍵字: java 嵌入式

技術子站

關閉