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