日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)

發布時間:2023/12/1 编程问答 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聊天界面發送嵌入式大雜燴獲取1TB大雜燴資料包

STM32的FLASH擦寫次數有限(大概為1萬次),所以為了延長FLASH的使用時間,我們平時調試時可以選擇在SRAM中進行硬件調試。除此之外,SRAM 存儲器的寫入速度比在內部 FLASH 中要快得多,所以下載程序到SRAM中的速度較快。

所以我們很有必要建立兩個版本的工程配置,在SRAM中調試程序完畢后,再把代碼下載到FLASH中即可。這篇筆記主要分享在keil5中配置FLASH調試與SRAM調試的詳細配置方法及如何切換兩種配置。

本篇筆記以STM32F103ZET6為例。其FLASH大小為512KB,SRAM的大小為64KB。FLASH基地址為0x08000000,SRAM基地址為0x20000000。在STM32F10XXX里,可以通過BOOT1、BOOT0引腳來選擇三種不同的模式:

我們要在FLASH中進行硬件仿真調試還是在RAM中進行硬件仿真調試需要對這兩個boot腳進行對應的設置以及程序下載的地址進行設置。

在FLASH中進行硬件仿真調試

1、硬件設置

BOOT0配置為0,BOOT1隨意設置。

2、keil設置

本文以keil5為例。步驟如下:

(1)點擊如下按鈕,修改target的名稱:

target的名稱是可以隨意更改的,這里我們改為FLASH。

(2)點擊Project->Options for Target Flash...(也可以點擊魔術棒那個圖標)進行配置。首先對Target選項卡設置:

設置IROM1的起始地址為0x8000000,大小為0x80000,即FLASH的基地址與大小。設置IRAM1為0x20000000,大小為0x10000,即SRAM的基地址與大小。

(3)Debug選項設置:

調試器根據實際進行選擇,我們這里使用的調試器是ULINK2。其它的按默認設置即可,然后點擊Settings:

(4)編譯,然后按Ctrl+F5進入調試界面:

然后點擊全速運行:

在Disassembly窗口中可看到地址為0x0800xxxx,說明代碼燒進了FLASH中,這時候就可以像使用其他C語言IDE調試C語言程序一樣打斷點、單步運行我們的STM32程序啦。

在SRAM中進行硬件仿真調試

在SRAM的仿真調試配置比FLASH中的配置要麻煩一點~

1、硬件設置

BOOT0配置為1,BOOT1配置為1。

2、keil設置

(1)新建一個target,并修改名稱為SRAM:

(2)切換至SRAM Target:

(3)點擊Project->Options for Target SRAM ...(也可以點擊魔術棒那個圖標)Target選項卡設置:

設置IROM1的起始地址為0x2000000,大小為0x8000(32KB);設置IRAM1的起始地址為0x2008000,大小為0x8000(32KB)。即把64KB的SRAM分為32KB的FLASH(當然這是SRAM虛擬出來的FLASH,掉電易失)和32KB的RAM。

(4)C/C++選項設置:

為什么在RAM中調試要設置這個宏而在FLASH中調試卻不需要?這是因為我們的中斷向量表默認位于FLASH中,而此時我們要在RAM中進行調試,所以需要把中斷向量表拷貝到RAM中,相關代碼在system_stm32f10x.c的SystemInit函數中:

其實system_stm32f10x.c文件中也有宏VECT_TAB_SRAM相關的代碼:

把這行代碼打開即可把中斷向量表拷貝到RAM中。但是這里選擇在C/C++選項選項里添加宏,因為這樣可以保證SRAM版本與FLASH版本代碼的一致性。

(5)Debug設置:

與在FLASH中調試不同的是,這里需要加入.ini文件:

這個.ini可以自己創建(也可以在芯片支持包里找到),這里我們建為Dbg_RAM.ini。文件里的內容如下:

其中這里的第11行是需要根據實際進行修改的,需要把工程編譯得出的.axf格式文件的路徑及其文件名填到這里。這里因為我們這里的的.ini文件在.axf的上一級目錄:

所以此處以./Objects來表示。如果覺得麻煩的話,可以把.axf文件與.ini放在同一個目錄下。

其它的按默認設置即可,然后點擊Settings,并進行如下設置:

圖中我們需要勾選Verify Code Download及Download to FLASH選項,也就是說點擊調試按鈕后,本工程的程序會被下載到內部 SRAM 中,只有勾選了這兩個選項才能正常仿真。(至于為什么 FLASH 版本的程序不需要勾選,不太清楚) 。

Download Function中的擦除選項配置為Do not Erase。這是因為數據寫入到內部 SRAM 中不需要像 FLASH 那樣先擦除后寫入。Programming Algorithm 的地址要與我們Target選項卡里設置的地址一致,否則可能會出現如下錯誤:

(6)編譯,然后按Ctrl+F5進入調試界面,然后點擊全速運行:

在Disassembly窗口中可看到地址為0x2000xxxx,說明代碼燒進了SRAM中,這時候就可以像使用其他C語言IDE調試C語言程序一樣打斷點、單步運行我們的STM32程序啦。

以上就是在FLASH中調試與在SRAM中調試的設置方法,調試代碼時可以選擇SRAM版本的配置,調試完成再切換回FLASH版本的配置,把程序下載到FLASH中。切換方法:

在RAM中調試的優缺點

以下來自《【野火】零死角玩轉STM32—F429挑戰者V2.pdf》。

優點:

1、載程序非常快。RAM 存儲器的寫入速度比在內部 FLASH 中要快得多,且沒有擦除過程,因此在 RAM 上調試程序時程序幾乎是秒下的,對于需要頻繁改動代碼的調試過程,能節約很多時間,省去了煩人的擦除與寫入 FLASH 過程。另外,STM32 的內部 FLASH 可擦除次數為 1 萬次,雖然一般的調試過程都不會擦除這么多次導致 FLASH 失效,但這確實也是一個考慮使用 RAM 的因素。

2、不改寫內部 FLASH 的原有程序。

3、對于內部 FLASH 被鎖定的芯片,可以把解鎖程序下載到 RAM 上,進行解鎖。

缺點:

1、存儲在 RAM 上的程序掉電后會丟失,不能像 FLASH 那樣保存。

2、SRAM空間較小。

以上就是本次分享的關于RAM調試與FLASH調試的筆記,更多的相關原理、細節可查閱《【野火】零死角玩轉STM32—F429挑戰者V2.pdf》。

可在本公眾號聊天界面回復關鍵字:調試,進行獲取本筆記對應的keil工程及《【野火】零死角玩轉STM32—F429挑戰者V2.pdf》。本篇筆記如有錯誤歡迎指出!謝謝

猜你喜歡:

STM32的ISP下載的原理是什么呢?

STM32串口IAP分享

C語言代碼優化的一些技巧(四)

【DSP筆記】TI官方例程中切換RAM、FLASH工程版本的方法

我的個人博客:

https://zhengnianli.github.io

等你來撩:

聊天界面發送嵌入式大雜燴獲取1T大雜燴資料包

聊天界面發送m獲取往期筆記目錄

總結

以上是生活随笔為你收集整理的stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。