stm32下載神器STM32CubeProgrammer介紹

2020-12-06 加了個饃

新增功能

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系列密鑰生成器軟體介紹》

相關焦點

  • STM32CUBE相關技術手冊哪裡找
    凡接觸過STM32的人,估計對STM32CUBE神器多少都會有些了解。 STM32CUBE包含兩部分,一部分是指圖形化配置工具軟體STM32CubeMX,它可以讓STM32開發者通過圖形化界面進行有關管腳、時鐘等基本配置並最終生成初始化C語言代碼。
  • 新一代燒寫工具 - STM32CubeProgrammer
    配合;通過USB接口來燒寫程序,需下載USB DfuSe工具軟體來實現。接下來,我們會對STM32CubeProgrammer的主要功能進行介紹,關於STM32CubeProgrammer的具體操作步驟,請參考」UM2237-STM32CubeProgrammer軟體工具介紹」。
  • 關於STM32Cube的幾個常見問題
    二、STM32cube固件庫支持哪些開發學習板?  答:STM32Cube庫支持的STM32的開發板可就多了。  四、STM32Cube HAL庫可以使用中斷或DMA嗎?  答:是的。HAL層支持三種 API編程模型:輪詢、中斷和DMA(帶或不帶中斷的產生)。  五、有基於相關開發工具鏈的工程例程嗎?  答:有的。stm32cube各系列固件包提供了豐富的應用例程。他們都是配合諸如IAR,Keil和GCC編譯工具且預先配置好了的工程項目。
  • Ubuntu系統下安裝stm32官方開發工具STM32CubeIDE
    大家好,遊學電子科技為您帶來:Ubuntu系統下安裝stm32官方開發工具STM32CubeIDE。STM32CubeIDE是st意法官方提供的stm32開發工具,這款工具在編譯速度上具有比較高的優勢,尤其是跟keil5相比真是沒得說。
  • STM32CubeMx-ADC
    在stm32f1xx_hal_adc.h頭文件中可以找到如下ADC操作函數。和串口一樣,ADC也可以通過三種方式控制。2.ADC_DMA前面介紹了通過ADC輪詢的方式採集單通道的數據。現在介紹一下通過DMA方式採集多通道的數據。複製串口printf工程的工程,修改文件夾名。點擊xxx.ioc打開STM32cubeMX的工程文件重新配置。使用PA6,PA7管腳作為ADC1的輸入管腳。
  • 對於新手學習stm32單片機我的個人建議路線
    使用stm32也有4年了、走了很多彎路。那我就說說個人看法。分享一下stm32學習路線。建議先學stm32cube 可以對照硬石電子教程學一下配置。之後要看正點原子的教程、原子的更加仔細細節。c基礎好一點學野火的也更適合。不要用開發板。
  • 「STM32CubeMonitor」 拍了拍你
    還有圖形化功耗測量軟體STM32CubeMonitor-Power, STM32WB FR性能測試軟體STM32CubeMonitor-RF等。從ST官網可以下載最新的STM32CubeMonitor安裝程序。
  • STLINK-V3SET|用於STM32 / STM8的在線程式開發工具和燒錄器
    STM32CubeMXSTM32CubeMX是STM32 MCU 初始化代碼生成器,它還有另一個神奇的利器可以幫你很快找到替代競爭廠商MCU的 STM32建議料號!相關網頁STLINK-V3 modular in-circuit debugger and programmer for STM32/STM8https://www.st.com/content/st_com/en/products
  • 超另類:在vscode下實現編譯仿真下載,你絕對想不到
    生命在於運動,技術在於折騰,你是否厭倦了在keil、iar下孜孜不倦的寫代碼、debug,是否玩累了在外部編輯器下寫代碼,然後在轉到ide下進行仿真、下載等操作呢?這個教程將介紹下如何在vscode下實現這些操作,真正實現一個vscode可以吃天、實現編譯仿真下載一條龍服務,而你只需要在vscode下的終端敲幾個命令而已。。。
  • 技術培訓 | STM32MP1產品入門與異構多核通信開發
    更多大量MPU開發資料請訪問:https://wiki.st.com/stm32mpu1. STM32MP1產品介紹2. STM32MP1硬體架構3.STM32CubeMX V5.2.1;複製如下連結,在瀏覽器中進入ST國際網,進行下載;https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators
  • 徹底解決stm32F042串口下載配置flymcu
    本文的初衷是解決一個問題,描述如下:1.實驗晶片:stm32f042f4p62.封裝:TSSOP203.在傳統stm32中引腳多,使用 jtag 接口下載,或者sw 下載,20引腳的cpu 資源少,使用的sw 的clk,dio 埠,問題所在!!!導致無法下載!!因此必須使用串口下載!
  • 技術培訓—瀋陽站 | STM32H7系列高性能產品之雙核智能架構性能解析
    本課程基於最新STM32H7雙核系列,先介紹Cortex-M7內核的特性,然後詳細介紹STM32H7的系統架構和外設,還有針對於H7中雙核的使用的理論介紹,讓你深入理解H7的使用。 本次培訓,理論和實驗相結合。使用STM32H747 Discovery硬體平臺,安裝開發工具,運行demo,實現三個動手實驗。
  • STM32F429-DISCO上手,stm32cubeMX與IAR學習,中斷及Printf
    stm32f429及stm32f439已經帶有LTDC控制器,意味著可以輸出RGB888及RGB565的圖像信號,這與以往的單片機CPU8080接口LCD有很大不同,也是入手STM32F429-DISCO的原因,價格不貴,mouser上不含稅150,淘寶180,非常適合學習。
  • 如何利用STM32CubeMX來自動生成STM32代碼
    比較有意思的是,其實 HAL 庫的代碼可以直接使用 STM32CubeMX 這個軟體來生成,STM32CubeMX 的操作方式非常簡單,下面的內容就來介紹一些這個軟體。圖 6 未安裝 JRE 彈出警告  (2) 解壓「en.stm32cubemx_v6-1-0.zip」壓縮文件,打開「en.stm32cubemx_v6-1-0」文件夾,然後雙擊運行「SetupSTM32CubeMX
  • 意法半導體為STM32Cube®生態系統增添新功能,提高軟體開發效率
    意法半導體STM32Cube®軟體開發生態系統發布軟體更新,讓用戶更輕鬆地篩選軟體示例,搜集和使用開發工具,自定義、使用和分享STM32Cube擴展軟體包。 這些更新給MCU配置和項目設置工具(STM32CubeMX version 6.0)和STM32CubeIDE v1.4 multi-OS C/C++ 開發平臺帶來新的強化功能。
  • 意法半導體發布STM32CubeMonitor工具 可實時顯示應用程式運行時的...
    打開APP 意法半導體發布STM32CubeMonitor工具 可實時顯示應用程式運行時的變量 意法半導體 發表於 2020-03-04 17:28:58
  • stm32晶片被鎖,使用jlink就能輕輕鬆鬆解鎖
    如果一不小心將stm32開發板的晶片給鎖了,那原因可能是忽略了一個比較低級的問題,就是將stm32中的一些不能獨立使用的IO口給了高電平,stm32中有很多口是不能獨立使用的,如圖(以stm32103rct6  正點原子的mini板為例):(N:表示不能獨立使用,Y:表示能獨立使用)
  • Keil MDK下學習STM32注意事項
    6、下面對該庫文件做個簡單介紹:Libraries\STM32F10x_StdPeriph_Driver\下的內容很好理解就是stm32的各個外設模塊驅動代碼。stm32f10x.h, system_stm32f10x.c,system_stm32f10x.h和startup_stm32f10x_hd.s在DeviceSupport目錄下,說明這幾個文件是和具體的晶片有關的,也就是stm32晶片的支撐文件。
  • stm32固件庫在stm3210e-eval開發板上的移植
    打開APP stm32固件庫在stm3210e-eval開發板上的移植 葉子 發表於 2011-05-11 09:56:02
  • STM32CubeMonUCPD 下載及安裝教程
    01前言1.1 基本介紹https://www.st.com/stm32cubemonucpdSTM32CubeMonitor-UCPD(STM32CubeMonUCPD)是一款監視和配置/windows-64bit.jsp(儘量安裝最新版 64 位的Java下載方法:打開官網下載地址,點擊 同意並開始免費下載;無需登陸,直接可以下載