stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)
聊天界面發(fā)送嵌入式大雜燴獲取1TB大雜燴資料包
STM32的FLASH擦寫次數(shù)有限(大概為1萬次),所以為了延長FLASH的使用時(shí)間,我們平時(shí)調(diào)試時(shí)可以選擇在SRAM中進(jìn)行硬件調(diào)試。除此之外,SRAM 存儲(chǔ)器的寫入速度比在內(nèi)部 FLASH 中要快得多,所以下載程序到SRAM中的速度較快。
所以我們很有必要建立兩個(gè)版本的工程配置,在SRAM中調(diào)試程序完畢后,再把代碼下載到FLASH中即可。這篇筆記主要分享在keil5中配置FLASH調(diào)試與SRAM調(diào)試的詳細(xì)配置方法及如何切換兩種配置。
本篇筆記以STM32F103ZET6為例。其FLASH大小為512KB,SRAM的大小為64KB。FLASH基地址為0x08000000,SRAM基地址為0x20000000。在STM32F10XXX里,可以通過BOOT1、BOOT0引腳來選擇三種不同的模式:
我們要在FLASH中進(jìn)行硬件仿真調(diào)試還是在RAM中進(jìn)行硬件仿真調(diào)試需要對這兩個(gè)boot腳進(jìn)行對應(yīng)的設(shè)置以及程序下載的地址進(jìn)行設(shè)置。
在FLASH中進(jìn)行硬件仿真調(diào)試
1、硬件設(shè)置
BOOT0配置為0,BOOT1隨意設(shè)置。
2、keil設(shè)置
本文以keil5為例。步驟如下:
(1)點(diǎn)擊如下按鈕,修改target的名稱:
target的名稱是可以隨意更改的,這里我們改為FLASH。
(2)點(diǎn)擊Project->Options for Target Flash...(也可以點(diǎn)擊魔術(shù)棒那個(gè)圖標(biāo))進(jìn)行配置。首先對Target選項(xiàng)卡設(shè)置:
設(shè)置IROM1的起始地址為0x8000000,大小為0x80000,即FLASH的基地址與大小。設(shè)置IRAM1為0x20000000,大小為0x10000,即SRAM的基地址與大小。
(3)Debug選項(xiàng)設(shè)置:
調(diào)試器根據(jù)實(shí)際進(jìn)行選擇,我們這里使用的調(diào)試器是ULINK2。其它的按默認(rèn)設(shè)置即可,然后點(diǎn)擊Settings:
(4)編譯,然后按Ctrl+F5進(jìn)入調(diào)試界面:
然后點(diǎn)擊全速運(yùn)行:
在Disassembly窗口中可看到地址為0x0800xxxx,說明代碼燒進(jìn)了FLASH中,這時(shí)候就可以像使用其他C語言IDE調(diào)試C語言程序一樣打斷點(diǎn)、單步運(yùn)行我們的STM32程序啦。
在SRAM中進(jìn)行硬件仿真調(diào)試
在SRAM的仿真調(diào)試配置比FLASH中的配置要麻煩一點(diǎn)~
1、硬件設(shè)置
BOOT0配置為1,BOOT1配置為1。
2、keil設(shè)置
(1)新建一個(gè)target,并修改名稱為SRAM:
(2)切換至SRAM Target:
(3)點(diǎn)擊Project->Options for Target SRAM ...(也可以點(diǎn)擊魔術(shù)棒那個(gè)圖標(biāo))Target選項(xiàng)卡設(shè)置:
設(shè)置IROM1的起始地址為0x2000000,大小為0x8000(32KB);設(shè)置IRAM1的起始地址為0x2008000,大小為0x8000(32KB)。即把64KB的SRAM分為32KB的FLASH(當(dāng)然這是SRAM虛擬出來的FLASH,掉電易失)和32KB的RAM。
(4)C/C++選項(xiàng)設(shè)置:
為什么在RAM中調(diào)試要設(shè)置這個(gè)宏而在FLASH中調(diào)試卻不需要?這是因?yàn)槲覀兊闹袛嘞蛄勘砟J(rèn)位于FLASH中,而此時(shí)我們要在RAM中進(jìn)行調(diào)試,所以需要把中斷向量表拷貝到RAM中,相關(guān)代碼在system_stm32f10x.c的SystemInit函數(shù)中:
其實(shí)system_stm32f10x.c文件中也有宏VECT_TAB_SRAM相關(guān)的代碼:
把這行代碼打開即可把中斷向量表拷貝到RAM中。但是這里選擇在C/C++選項(xiàng)選項(xiàng)里添加宏,因?yàn)檫@樣可以保證SRAM版本與FLASH版本代碼的一致性。
(5)Debug設(shè)置:
與在FLASH中調(diào)試不同的是,這里需要加入.ini文件:
這個(gè).ini可以自己創(chuàng)建(也可以在芯片支持包里找到),這里我們建為Dbg_RAM.ini。文件里的內(nèi)容如下:
其中這里的第11行是需要根據(jù)實(shí)際進(jìn)行修改的,需要把工程編譯得出的.axf格式文件的路徑及其文件名填到這里。這里因?yàn)槲覀冞@里的的.ini文件在.axf的上一級目錄:
所以此處以./Objects來表示。如果覺得麻煩的話,可以把.axf文件與.ini放在同一個(gè)目錄下。
其它的按默認(rèn)設(shè)置即可,然后點(diǎn)擊Settings,并進(jìn)行如下設(shè)置:
圖中我們需要勾選Verify Code Download及Download to FLASH選項(xiàng),也就是說點(diǎn)擊調(diào)試按鈕后,本工程的程序會(huì)被下載到內(nèi)部 SRAM 中,只有勾選了這兩個(gè)選項(xiàng)才能正常仿真。(至于為什么 FLASH 版本的程序不需要勾選,不太清楚) 。
Download Function中的擦除選項(xiàng)配置為Do not Erase。這是因?yàn)閿?shù)據(jù)寫入到內(nèi)部 SRAM 中不需要像 FLASH 那樣先擦除后寫入。Programming Algorithm 的地址要與我們Target選項(xiàng)卡里設(shè)置的地址一致,否則可能會(huì)出現(xiàn)如下錯(cuò)誤:
(6)編譯,然后按Ctrl+F5進(jìn)入調(diào)試界面,然后點(diǎn)擊全速運(yùn)行:
在Disassembly窗口中可看到地址為0x2000xxxx,說明代碼燒進(jìn)了SRAM中,這時(shí)候就可以像使用其他C語言IDE調(diào)試C語言程序一樣打斷點(diǎn)、單步運(yùn)行我們的STM32程序啦。
以上就是在FLASH中調(diào)試與在SRAM中調(diào)試的設(shè)置方法,調(diào)試代碼時(shí)可以選擇SRAM版本的配置,調(diào)試完成再切換回FLASH版本的配置,把程序下載到FLASH中。切換方法:
在RAM中調(diào)試的優(yōu)缺點(diǎn)
以下來自《【野火】零死角玩轉(zhuǎn)STM32—F429挑戰(zhàn)者V2.pdf》。
優(yōu)點(diǎn):
1、載程序非常快。RAM 存儲(chǔ)器的寫入速度比在內(nèi)部 FLASH 中要快得多,且沒有擦除過程,因此在 RAM 上調(diào)試程序時(shí)程序幾乎是秒下的,對于需要頻繁改動(dòng)代碼的調(diào)試過程,能節(jié)約很多時(shí)間,省去了煩人的擦除與寫入 FLASH 過程。另外,STM32 的內(nèi)部 FLASH 可擦除次數(shù)為 1 萬次,雖然一般的調(diào)試過程都不會(huì)擦除這么多次導(dǎo)致 FLASH 失效,但這確實(shí)也是一個(gè)考慮使用 RAM 的因素。
2、不改寫內(nèi)部 FLASH 的原有程序。
3、對于內(nèi)部 FLASH 被鎖定的芯片,可以把解鎖程序下載到 RAM 上,進(jìn)行解鎖。
缺點(diǎn):
1、存儲(chǔ)在 RAM 上的程序掉電后會(huì)丟失,不能像 FLASH 那樣保存。
2、SRAM空間較小。
以上就是本次分享的關(guān)于RAM調(diào)試與FLASH調(diào)試的筆記,更多的相關(guān)原理、細(xì)節(jié)可查閱《【野火】零死角玩轉(zhuǎn)STM32—F429挑戰(zhàn)者V2.pdf》。
可在本公眾號聊天界面回復(fù)關(guān)鍵字:調(diào)試,進(jìn)行獲取本筆記對應(yīng)的keil工程及《【野火】零死角玩轉(zhuǎn)STM32—F429挑戰(zhàn)者V2.pdf》。本篇筆記如有錯(cuò)誤歡迎指出!謝謝
猜你喜歡:
STM32的ISP下載的原理是什么呢?
STM32串口IAP分享
C語言代碼優(yōu)化的一些技巧(四)
【DSP筆記】TI官方例程中切換RAM、FLASH工程版本的方法
我的個(gè)人博客:
https://zhengnianli.github.io
等你來撩:
聊天界面發(fā)送嵌入式大雜燴獲取1T大雜燴資料包
聊天界面發(fā)送m獲取往期筆記目錄
總結(jié)
以上是生活随笔為你收集整理的stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海信85u7gpro使用技巧
- 下一篇: 《从庾中郎游园山石室诗》第三句是什么