STM32 进阶教程 10 - RAM中调试程序
前言
在stm32開發過程中,程序調試是一個比較耗時且又重要的問題,特別是在固件代碼達到一定的復雜度后,程序下載過程就一個比較耗時過程,同時STM32芯片有FLASH燒寫次數有限,像103系列手冊中標的是10000次,但在030系列MCU中才1000次,如果調試時可以將程序直接下載到RAM中并在RAM中運行(前題是有足夠大的RAM可用)那么程序下載時間將有明顯減少,同時Flash的使用壽命也得以保證,本節將給大家介紹如何在STM32中將程序下在RAM調試。
?
示例詳解
基于硬件平臺: STM32F10C8T6最小系統板, MCU 的型號是?STM32F103c8t6, 使用stm32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。
?
?
本示例所用的最小系統板原理圖:
?
?
?
?
本例并不需要更改BOOT設置為Embedded SRAM(保證main flash memory亦可),但需先對工程中進行一些設置,具體實現步驟如下:
在工程的Options for Target ->Target中將IROM1,和IRAM1都修成在RAM區間,注意按芯片RAM大小來設置,并根據程序大小及變量多少來劃分,本例MCU為stm32f103c8t6,芯片有20k RAM,將前16k設成IROM1用來放代碼,將后4k用來當IRAM1存程序變量,堆和棧。
在工程的Options for Target ->C/C++選項卡中加入VECT_TAB_SRAM宏定義:
?
在工程的Options for Target ->Linker選項卡中先不勾選USE MEMORY LAYOUT FROM TARGET Dialog,并設置R/O Base 和R/W Base 如下 :
設置完成后再勾選USE MEMORY LAYOUT FROM TARGET Dialog:
新建SRAM.ini文件,內容如下:
?
在工程的Options for Target ->Debug選項卡中先加入剛新建的SRam.ini文件作為仿真初值化文件:
在工程的Options for Target ->Debug->Settings選項卡中按下圖配置燒錄規則/算法:
?
完成上述配置程序編譯完對應的地址空間就在SRAM區間,對工程進行仿真調試就可以直接看到效果:
?
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!
文中源碼資料下載,在公眾號里給十三發消息:
下載|STM32進階教程 10
?
關注十三公眾號
?
總結
以上是生活随笔為你收集整理的STM32 进阶教程 10 - RAM中调试程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 进阶教程 9 - 芯片维一码
- 下一篇: STM32 进阶教程 11 - RAM中