0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

新一代燒寫工具:STM32 Cube Programmer

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:STM32 ? 2020-12-24 17:26 ? 次閱讀

STM32CubeProgrammer(STM32CubeProg)是STM32微控制器的專用編程工具。 STM32用戶都知道,當(dāng)完成程序調(diào)試,需要對(duì)芯片進(jìn)行程序代碼燒錄編程,一般會(huì)有三個(gè)選擇:

通過調(diào)試接口【JTAG/SWD】來燒寫程序,一般要使用STLink Utility或STVP工具軟件來完成;

通過UART接口來燒寫程序,需要下載基于PC端的flash 燒錄工具軟件STM32 Flash loader demonstrator配合;

通過USB接口來燒寫程序,需下載USB DfuSe工具軟件來實(shí)現(xiàn)。

2017年底,ST推出了多合一燒錄工具STM32CubeProgrammer,以其高集成度支持上述三類編程接口,還兼具其它更多功能。 STM32CubeProg不斷迭代,至2020年10月,更新至最新版STM32CubeProgrammer2.5.0(點(diǎn)擊即可下載),增添更多新功能。

STM32CubeProgrammer 主要功能

STM32Cube 軟件家族中的 STM32CubeProgrammer 是 STM32 MCU 專用編程工具。它支持通過STLink的SWD/JTAG調(diào)試接口對(duì)STM32 MCU的片上存儲(chǔ)器進(jìn)行擦除和讀寫操作;或者通過UART,USB, I2C,SPI,CAN通信接口,利用出廠時(shí)固化在芯片內(nèi)部的系統(tǒng)bootloader,對(duì)STM32 MCU的片上存儲(chǔ)器進(jìn)行擦除和讀寫操作。

這里需要說明的是STLink v2僅支持通過UART和USB通信接口對(duì)片上存儲(chǔ)器進(jìn)行操作,而STLink v3增加了SPI,I2C和CAN通信接口的支持。除此以外,STM32CubeProgrammer 還可以操作STM32 MCU的選項(xiàng)字節(jié)和一次性可編程字節(jié)。通過 STM32CubeProgrammer 提供的或者自己編寫的外部 external loader,還可以對(duì)外部存儲(chǔ)器進(jìn)行編程。 STM32CubeProgrammer 提供了圖形化和命令行兩種用戶界面。此外,STM32CubeProgrammer 還提供了C++ API, 用戶可以將 STM32CubeProgrammer 的功能集成到自己所開發(fā)的PC端應(yīng)用中。

▲STM32CubeProg的圖形化界面 圖形化用戶界面如上圖所示,在右側(cè)的配置區(qū)域,用戶可以選擇通過STLink調(diào)試接口,或者USB、UART等通信接口連接到STM32微控制器。連接到STM32 微控制器后,在“Device information”區(qū)域可以看到當(dāng)前MCU的型號(hào),版本和Flash大小等信息。如果連接的是ST官方的開發(fā)板,還會(huì)顯示該開發(fā)板的名稱。

那么,這里顯示的信息都是來自哪里呢?其中“CPU“型號(hào),也就是內(nèi)核型號(hào),從內(nèi)核的CPUID 只讀寄存器讀得,該寄存器的說明在各個(gè)芯片系列對(duì)應(yīng)的編程手冊(cè)中可以查到,比如STM32F7對(duì)應(yīng)的編程手冊(cè)PM0253;芯片型號(hào)”Device ID“和芯片版本”RevisionID”分別來自STM32MCU的DBGMCU_IDC只讀寄存器中的Device ID字段和Revision字段。

Flash大小“Flash size”的值,可以從系統(tǒng)Flash的Flash size只讀寄存器中讀到。這些寄存器的說明都可以在各個(gè)芯片系列對(duì)應(yīng)的參考手冊(cè)中的“調(diào)試支持”和“設(shè)備電子簽名”章節(jié)找到,比如STM32H743的參考手冊(cè)RM0433。開發(fā)板名稱“Board”對(duì)應(yīng)的信息,存儲(chǔ)在板載的STLink中,所以只有用ST開發(fā)板自身板載的STLink進(jìn)行連接時(shí)才能看到這個(gè)信息。

在STM32CubeProgrammer最左側(cè)一欄可以在不同的功能標(biāo)簽頁之間切換,進(jìn)行不同的操作。

接下來,我們會(huì)對(duì)STM32CubeProgrammer的主要功能進(jìn)行介紹,關(guān)于STM32CubeProgrammer的具體操作步驟,請(qǐng)參考”UM2237-STM32CubeProgrammer軟件工具介紹”。 片上擦除和讀寫STM32CubeProgrammer支持按扇區(qū)對(duì)Flash進(jìn)行擦除和全片擦除??梢詫?dǎo)入多種格式的執(zhí)行文件進(jìn)行燒錄,支持的文件格式有:二進(jìn)制文件(.bin),elf文件(.elf,.axf,.out),hex文件(.hex)和摩托羅拉的S-record文件(.srec)。

擦除操作

通過STLink與目標(biāo)MCU建立連接后,在“Erasing&Programming”頁面下,可以按扇區(qū)對(duì)flash進(jìn)行擦除,或者選擇“Fullchiperase”按鈕,進(jìn)行全片擦除。

燒錄操作

在“Erasing&Programming”頁面下,點(diǎn)擊“Browse”按鈕導(dǎo)入可執(zhí)行文件,然后點(diǎn)擊“StartProgramming”進(jìn)行燒錄。 也可以在“Memory&fileedition”頁面下,打開要燒錄的可執(zhí)行文件,然后點(diǎn)擊“download”進(jìn)行燒錄。 在“Memory&fileedition”的“Device Memory”頁面下,還可以讀出當(dāng)前指定地址范圍的MCU存儲(chǔ)器值,并通過“SaveAs”菜單將讀出的內(nèi)容保存為二進(jìn)制文件(.bin), hex文件(.hex)或S-record文件(.srec)。

除了前面介紹的燒錄整個(gè)可執(zhí)行文件的方式以外,還可以在“Memory&fileedition”的“Device Memory”頁面下直接修改某個(gè)地址的值,”回車”后STM32CubeProg會(huì)自動(dòng)完成讀出-修改-擦除-回寫的操作。對(duì)于一次性可編程(OTP)字節(jié)就可以通過這種方式進(jìn)行編程。

選項(xiàng)字讀寫點(diǎn)開OB頁面后,可以看到當(dāng)前所連接MCU的選項(xiàng)字的設(shè)定情況。用戶可以在這里修改選項(xiàng)字的值。具體選項(xiàng)字的說明,請(qǐng)參考對(duì)應(yīng)MCU的參考手冊(cè)。

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

舉例說明,現(xiàn)在要在燒寫完Flash后,設(shè)置讀保護(hù)為level1??梢园匆韵虏襟E先進(jìn)行設(shè)置:

設(shè)置好要下載的可執(zhí)行文件路徑

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

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

然后點(diǎn)擊 “Start automatic mode” ,STM32CubeProgrammer就會(huì)開始按順序執(zhí)行上述的操作,同時(shí)在Log窗口顯示整個(gè)執(zhí)行的過程和進(jìn)度。 關(guān)于選項(xiàng)字命令 “-ob”的格式說明,可以參考UM2237(用戶手冊(cè)STM32CubeProgrammer軟件工具介紹)的3.2.15章節(jié)。

但“-ob”命令中OptByte字段的定義在UM2237中沒有說明,可以有兩種方法來查詢:一種是通過STM32CubeProgrammer圖形界面下“Optionbytes”標(biāo)簽頁中的“Name”一欄的名稱,因?yàn)椤?ob”命令中OptByte字段的定義與這里是一致的;還可以通過“-ob displ”命令來顯示當(dāng)前所有的選項(xiàng)字配置,從而也就可以知道各個(gè)OptByte字段的定義了。

外部存儲(chǔ)器讀寫如果想要對(duì)通過SPI,F(xiàn)MC,QSPI等接口連接到STM32的外部存儲(chǔ)器進(jìn)行讀寫操作,就需要一個(gè)external loader。

CubeProgrammer默認(rèn)提供了STM32開發(fā)板上集成的外部存儲(chǔ)器對(duì)應(yīng)的external loader。 用戶如果使用了其他型號(hào)的存儲(chǔ)器,也可以自己生成external loader文件(*. stldr),詳細(xì)操作請(qǐng)參考UM2237的第2.3.3章節(jié)。 在對(duì)外部存儲(chǔ)器進(jìn)行操作前,必須先在 “External Loader” 頁面下,選擇對(duì)應(yīng)的external loader,該external loader會(huì)在接下來對(duì)外部存儲(chǔ)器的操作中用到。

然后就可以在 “Erasing&Programming” 頁面和 “Memory&fileedition” 頁面下進(jìn)行擦除和燒寫的操作了。 BootloaderSTM32MCU出廠時(shí),內(nèi)部的系統(tǒng)memory就已經(jīng)燒好了bootloader,提供通過USART,USB,I2C,SPI,CAN等接口更新片上Flash的功能。

不同STM32MCU型號(hào)支持的bootloader接口有所不同,具體可以參考應(yīng)用手冊(cè)AN2606。STLink v2或者STLink v3提供了從USART,USB,I2C,SPI和CAN等通信協(xié)議到USB的橋接接口,STM32MCU可以通過STLink v2或者STLink v3與PC端建立連接。而STM32CubeProgrammer則提供了PC端的操作界面,可以通過bootloader對(duì)片上Flash進(jìn)行擦除和燒錄。

STLinkv2只提供了USART和USB兩種通信接口,而STLink v3增加了I2C,SPI和CAN通信接口的支持。ST原來提供有兩個(gè)獨(dú)立的PC端軟件:“STM32Flash loader demonstrator”和“Dfuse Demo”,分別支持USARTbootloader和USBDFU功能,現(xiàn)在只需要使用STM32CubeProgrammer一個(gè)軟件就可以支持所有這些通信接口了。 SWO信息輸入窗口我們?cè)谧鲩_發(fā)的時(shí)候,經(jīng)常會(huì)需要輸出一些調(diào)試信息。

常用的方法就是通過重定向printf到串口來進(jìn)行打印,這種方法需要占用一路串口。還有一種方法就是將printf重定向到SWD調(diào)試接口的SWO口,通過SWO來輸出調(diào)試信息。STM32CubeProgrammer的SWV窗口可以顯示SWO發(fā)送的調(diào)試信息,并且可以將所有接收到的信息保存在指定的“.log”文件中。

命令行界面STM32CubeProgrammer提供命令行界面,可以通過執(zhí)行指令的方式實(shí)現(xiàn)大部分STM32CubeProgrammer的功能。

STM32_Programmer_CLI.exe 可執(zhí)行文件在 STM32CubeProgrammer 安裝路徑下的 bin 文件夾下,執(zhí)行 STM32_Programmer_CLI.exe 可以看到所有支持的指令及參數(shù)說明。 命令行界面還提供了一些在圖形化界面不具備的功能,例如:創(chuàng)建可信任包,安全燒錄,計(jì)算 CRC 值等功能。詳細(xì)說明請(qǐng)參考UM2237。 圖中舉了一個(gè)通過SWD接口連接目標(biāo)芯片并設(shè)置讀保護(hù)級(jí)別1的例子,通過 “-c” 指令先與目標(biāo)芯片建立連接,再通過 “-ob” 指令修改讀保護(hù)的級(jí)別,完整的命令行指令為:STM32_Programmer_CLI.exe-c port=SWD -ob rdp=0xBB。

STLink固件更新將STLink調(diào)試器連接到電腦后,打開STM32CubePorgrammer,刷新STLink連接就可以看到當(dāng)前STLink的固件版本。點(diǎn)擊 “Firmwareupgrade” 按鈕,打開STLinkUpgrade工具可以對(duì)STLink固件版本進(jìn)行更新。

STM32CubeProg 相關(guān)資源

如何找到STM32CubeProg

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

用戶手冊(cè)及應(yīng)用筆記UM2237 用戶手冊(cè)《STM32CubeProgrammer軟件工具介紹》:本文檔為通用文檔,面向所有STM32產(chǎn)品,是關(guān)于 STM32CubeProgrammer 的詳細(xì)使用說明以及命令行的命令用法說明; UM2238用戶手冊(cè)《創(chuàng)建STM32受信任包軟件工具介紹》和AN5054應(yīng)用筆記《通過STM32CubeProgrammer進(jìn)行安全燒錄》:與安全有關(guān),介紹如何創(chuàng)建可信任包以及如何進(jìn)行安全燒錄。

UM2543 用戶手冊(cè)《STM32MP1系列簽名工具介紹》和UM2542用戶手冊(cè)《STM32MP1系列密鑰生成器軟件介紹》:STM32CubeProgrammer還集成了”STM32MP1系列密鑰生成器”和“STM32MP1系列簽名工具”,通過命令行對(duì)應(yīng)的指令,可以生成ECC密鑰對(duì),并對(duì)固件進(jìn)行簽名。具體使用方法請(qǐng)參考上述兩篇用戶手冊(cè)。

責(zé)任編輯:xj

原文標(biāo)題:新一代燒寫工具 - STM32 Cube Programmer(附學(xué)習(xí)資源)

文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356756
  • 燒寫工具
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    8721

原文標(biāo)題:新一代燒寫工具 - STM32 Cube Programmer(附學(xué)習(xí)資源)

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    飛凌嵌入式ElfBoard ELF 1板卡-mfgtools燒錄流程之方法

    工具\\OTG\\mfgtools.rar。該軟件是在Windows下使用的,建議在Windows10下使用,對(duì)Winodws10系統(tǒng)很友好,接下來我們具體介紹下mfgtools
    發(fā)表于 12-19 09:09

    programmer用戶數(shù)據(jù)到flash-v1

    今天有客戶提出怎樣把用戶數(shù)據(jù)寫入到flash的操作,本來以為programmer都不支持了,但是經(jīng)過多次驗(yàn)證發(fā)現(xiàn)還是可以的,可能之前的驗(yàn)證哪里有點(diǎn)問題吧。 、通過SPI Active或者SPI
    的頭像 發(fā)表于 11-28 15:13 ?942次閱讀
    <b class='flag-5'>programmer</b><b class='flag-5'>燒</b><b class='flag-5'>寫</b>用戶數(shù)據(jù)到flash-v1

    programmer下載常見問題總結(jié)-v3

    可以打開programmer.看看報(bào)什么錯(cuò)? (2)Unable to configure from flash device; 解決方案:(1)用
    的頭像 發(fā)表于 07-30 08:43 ?818次閱讀
    <b class='flag-5'>programmer</b>下載常見問題總結(jié)-v3

    STM32373 HAL usb dfu例程,不能升級(jí)應(yīng)用是怎么回事?

    E:stm32cubef3V1.3 庫(kù)STM32Cube_FW_F3_V1.3.0ProjectsSTM32
    發(fā)表于 05-10 06:50

    請(qǐng)問ARM Cortex系列器哪個(gè)點(diǎn)?

    最近個(gè)工程文件有點(diǎn)大,用STLink需要40多秒,CMSIS-CAP需要30秒左右,jlink沒試過,我還知道用帶USB的Boot
    發(fā)表于 05-10 06:15

    用st-link或j-link工具怎么STM32信息區(qū)塊?

    怎么STM32 信息區(qū)塊!用st-link 或 j-link工具
    發(fā)表于 05-08 07:20

    stm8cube不能像stm32cube樣來自動(dòng)生成工程嗎?怎么操作?

    stm8cube不能像stm32cube樣來自動(dòng)生成工程嗎?有知道怎么操作的嗎?
    發(fā)表于 05-07 08:01

    programmer下載常見問題總結(jié)

    device; 解決方案:用時(shí)沒有連接VREF,VREF如上圖。 (3)UsbError: [Errno None] b'libusb0-dll:err 1. 在下載過程中
    的頭像 發(fā)表于 04-24 08:42 ?718次閱讀
    <b class='flag-5'>programmer</b>下載常見問題總結(jié)

    使用STM32CubeProgrammer總是提示失敗的原因?

    想使用STM32F030 串口UART2,作為自舉功能,進(jìn)行。 現(xiàn)在硬件設(shè)計(jì)的時(shí)候,pin腳連接到了PA2PA3,使用STM32CubeProgrammer
    發(fā)表于 04-01 06:47

    STM32H743ZIT6 keil程序不進(jìn)去,報(bào)錯(cuò)的原因?怎么解決?

    次使用STM32H743ZIT6芯片,寫過程遇到問題。 1.使用stm32cubemx生成代碼,jtag 配置的是 JTAG with trace synchro(4bits),
    發(fā)表于 03-27 06:36

    使用STM32Cube Programmer可以連接到芯片,不能擦除是為什么?

    to erase memoryEncountered Error when opening P:ProgramSTMicroelectronicsSTM32CubeIDESTM32CubeIDEpluginscom.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win
    發(fā)表于 03-14 08:32

    CCG5 platform Flash在images時(shí),如何保留產(chǎn)線校準(zhǔn)數(shù)據(jù)?

    1. CCG5平臺(tái)flash大小為128K,有512 row,每個(gè)row大小是256個(gè)字節(jié) 通過PSoC Programmerimage時(shí),會(huì)將128K的flash全部擦除,會(huì)導(dǎo)致校準(zhǔn)數(shù)據(jù)
    發(fā)表于 02-27 06:02

    請(qǐng)問CY8C29466-24SXI程序用什么工具?還有管理軟件?

    你好!CY8C29466-24SXI程序用什么工具?還有管理軟件?
    發(fā)表于 02-22 06:57

    用USB轉(zhuǎn)TTL線怎么把程序寫到stm32f103C8T6中

    /V2編程器(可選,用于更高級(jí)的調(diào)試和) 接下來,我們按照以下步驟進(jìn)行程序的過程: 步驟:將USB轉(zhuǎn)TTL線連接到計(jì)算機(jī)和
    的頭像 發(fā)表于 01-31 15:46 ?7451次閱讀

    如何解決UUU卡在99%

    掛載下。 注意:在階段,iMX8MP開發(fā)板串口也是有打印信息的,所以建議客戶在的時(shí)候也要接上調(diào)試串口,這樣當(dāng)
    發(fā)表于 01-18 11:33