1.引言
STM32 MCU 在 bootloader 模式下,可以通過多種可用外設(shè)(USART、CAN、USB、I2C、SPI等)將程序下載到內(nèi)部存儲器中,詳細內(nèi)容可參考應(yīng)用筆記 AN2606《STM32 microcontroller system memory boot mode》。本文檔主要介紹利用 STLINK-V3SET 調(diào)試/編程工具的 I2C 接口將程序下載到 SDRAM 中并執(zhí)行的方法。
2.問題描述
問題源自客戶的實際需求,希望通過 I2C 接口將程序下載到 SRAM 中執(zhí)行,進行芯片功能性測試。
3.問題分析與定位
關(guān)于在 Bootloader 模式下的應(yīng)用程序下載,有多篇 LAT 可參考。例如《如何使用STM32NUCLEO 板來測試串口 Bootloader》、《一種在 IAR 中實現(xiàn)通過 SRAM 應(yīng)用程序跳轉(zhuǎn)到bootloader 的方法》等。應(yīng)用程序下載到 SRAM 中,也有 LAT 可參考,如《一種在 IAR 中實現(xiàn)通過將程序在 SRAM 中調(diào)試的方法 》。通過調(diào)研,STLINK-V3SET 支持 I2C Bootloader 程序下載,可以實現(xiàn)在 bootloader 模式下的將應(yīng)用程序下載到 SRAM 中。
4.問題解決
本文檔以 NUCLEO-F401RE 開發(fā)板為例進行介紹。本文檔介紹方法分為 3 個步驟,首先進行硬件配置與接線,使得 STM32F401RE 與 STLINK-V3SET 通過 I2C 相連,同時保證 STM32F401RE 復(fù)位后可進入 bootloader 模式;其次進行軟件配置與編程,通過 IAR 可以將程序下載到 SRAM 中;最后通過 STM32CubeProgrammer 軟件進行程序下載并運行。下邊按三個步驟分別介紹。
4.1 硬件配置與接線
查看 AN2606 可知,通過 Boot0,Boot1 的硬件設(shè)置(Boot0 = 1,Boot1 = 0),可使 NUCLEO板上電復(fù)位后進入 bootloader 模式。STM32F401RE 的 I2C1, I2C2, I2C3 均支持 bootloader,這里選取 I2C1 接口實現(xiàn)在 bootloader 模式下的程序下載功能。
關(guān)于 STLINK-V3SET 與 SRM32F401RE 之間的 I2C 連接,STLINK-V3SET 模塊上已提供 680 歐姆上拉電阻,已通過閉合 JP10 跳線激活。同時還需要通過 NUCLEO 板為 STLINK-V3SET 提供 3.3V 供電。參考 AN2606 中 I2C 接線方式,兩者的引腳接線如下表所示:
最后,用一根 USB Type A 轉(zhuǎn) Micro B 的線連接 STLINK-V3SET 和 PC,同樣通過調(diào)試線給STM32 NUCLEO-F401RE 供電。
4.2 通過 IAR 將程序下載到 SRAM 中
參考另一篇實戰(zhàn)經(jīng)驗:《一種在 IAR 中實現(xiàn)通過將程序在 SRAM 中調(diào)試的方法》,主要操作為以下 2 點。
(1)在工程的鏈接選項中選擇 stm32f411xe_sram.icf 。
(2)設(shè)置一下中斷向量表的位置 :
4.3 通過 STM32CubeProgrammer 將程序下載到 SRAM 中并運行
由于 bootloader 使用了一部分 SRAM 程序,需要修改下地址避免沖突。參考另一篇實戰(zhàn)經(jīng)驗:《一種在 IAR 中實現(xiàn)從在 SRAM 運行的應(yīng)用程序跳轉(zhuǎn)到 bootloader 的方法》,對于 SRAM 中 bootloader 區(qū)域,我們從關(guān)于 bootloader 的應(yīng)用筆記可以看到以下信息 :
從紅色部分我們可以看到 bootloader 使用了一部分內(nèi)部 SRAM,因此我們需要在stm32f411xe_sram.icf 中修改代碼運行的起始地址來避免與 Bootloader 運行時的沖突:
同時,需要修改下中斷向量表的偏移量:
在應(yīng)用中我們寫入以下程序 ,每隔 1s 閃爍 LED 燈。
最后,通過 STM32CubeProgrammer 進行程序下載。打開 STM32CubeProgrammer(版本 2.6),在 Serial number 選擇 STLINK-V3SET,相關(guān)配置如圖所示。端口選擇 I2C,波特率設(shè)為 400KHz,地址設(shè)為 0x39(地址為 7 位,例如 STM32F401RE I2C1 地址為 0b0111001x,則 I2C 設(shè)置的地址為 0b0111001,即 0x39,不同系列 MCU 地址可能不同,請查看 AN2606)。
點擊 Connect 后,如果連接成功,如圖所示。
點擊 Erasing & Programming,加載 Hex 文件,勾選 Verify programming 和 Run after programming,如下圖所示。點擊 Start Programming,開始程序下載。程序下載成功后,可以看到 LED2 以 1Hz 頻率閃爍,同時 STM32CubeProgrammer 斷開連接。若要重新連接,需要按 NUCLEO 板上的復(fù)位鍵,使得 MCU 進入 bootloader 模式。
小結(jié)
利用 STLINK-V3SET,通過 STM32CubeProgrammer 軟件的 I2C 接口下載程序生成的 HEX 文件后,我們可以看到程序下載到 SRAM 運行之后,LED 燈每隔 1s 閃爍 1 次,應(yīng)用程序下載成功。
原文標(biāo)題:工程師筆記|通過 STLINK-V3SET I2C 接口將程序下載到 SRAM 中并執(zhí)行的方法
文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
sram
+關(guān)注
關(guān)注
6文章
786瀏覽量
115967 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
364999 -
I2C
+關(guān)注
關(guān)注
28文章
1541瀏覽量
127861 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3337瀏覽量
59040 -
bootloader
+關(guān)注
關(guān)注
2文章
239瀏覽量
46701
原文標(biāo)題:工程師筆記|通過 STLINK-V3SET I2C 接口將程序下載到 SRAM 中并執(zhí)行的方法
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
BootLoader通過串口下載bin文件后為什么應(yīng)用程序的串口就失效了?
請問使用HPI下載模式將應(yīng)用程序鏡像下載到DSP中但是應(yīng)用程序不運行,是什么原因?
怎么創(chuàng)建一個bootloader和應(yīng)用程序項目
如何使用Bootloader跳轉(zhuǎn)到Bootloadable應(yīng)用程序
怎么從應(yīng)用程序更新Bootloader?
SPC5怎么從應(yīng)用程序調(diào)用bootloader
CAN Bootloader和應(yīng)用程序
PIC16F使用中斷的Bootloader和應(yīng)用程序
vivo高通F模式型號識別應(yīng)用程序免費下載

SAMC21 BootLoader上位機應(yīng)用程序免費下載

Atmel Samc21單片機的BootLoader程序和資料合集免費下載

華大HC32F460 Bootloader及應(yīng)用程序的實現(xiàn)

在bootloader和應(yīng)用程序之間共享FEE塊

評論