搞了幾天,終于從內部RAM啟動了,我借用了網上一篇文章,在此向原作者致敬。
原作的設置,不完全適用我的環境,我作了一些改動。
本文基礎是原作者的,也加入了我的設置。
文中的圖片,沒能貼上來,我把本文一并壓縮,可以下載打開看個仔細。
STM32內部RAM在線調試配置方法及詳細說明寫在前面 本文主要講述的內容:基于Keil開發工具下,STM32內部RAM在線調試配置方法,以及每一項配置的詳細說明。 讓程序運行在RAM中調試代碼有兩優點:1.速度快;2.減少對芯片FLASH讀寫次數,增加芯片壽命。 本文基于ST公司Cortex-M內核的STM32來講述其配置方法,其實也適用于其他公司(如:TI、NXP等)的Cortex-M芯片,原理都是一樣的。 第二點在本文中的作用也很大,就是使用了中斷功能。由于RAM調試會牽涉到向量表,中斷功能就會使用到向量表,如果沒有配置正確,這里就不會響應中斷,或者出錯。 RAM調試配置方法 本節主要講述配置方法的過程,為什么這么配置,以及配置的原理將會在下一章節講述。 1.修改內存地址 打開目標配置:Project -> Options for Target -> Target或“工程目標配置”點擊快捷按鈕。 將ROM和RAM地址映射到如下圖地址。 我們使用STM32F103ZE芯片,該芯片的RAM大小為0x10000即64KB,我們這里平分RAM,即各自的大小為0x5000。 注意:配置的地址范圍不能超過芯片實際的大小。
1.png (32.49 KB, 下載次數: 58)
下載附件
2020-5-19 19:56 上傳
2.配置向量表 同上,打開目標配置:Project -> Options for Target -> C/C++,使用宏定義VECT_TAB_SRAM。如下圖:
2.png (33.38 KB, 下載次數: 61)
下載附件
2020-5-19 19:56 上傳
這里的宏定義是為了讓向量表指向RAM(我們默認是指向ROM),重要的一個目的就是讓中斷向量表指向RAM,上面“代碼功能”中斷的意義就是為了驗證向量表的正確性。
注意:這里的宏定義是在工具鏈中配置的,多個宏定義之間需要有“逗號”隔離開來。
其實這里的宏定義配置也可以在源代碼中實現,打開system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定義,如下圖:
3.png (17.34 KB, 下載次數: 64)
下載附件
2020-5-19 19:57 上傳
3.調試配置 同上:Project -> Options for Target -> Debug, 這里是關于調試的配置。 第一步:去掉“Load Application at Startup”前面的勾選項 導入RAM初始化文件。
4.png (31.51 KB, 下載次數: 56)
下載附件
2020-5-19 19:57 上傳
RAM初始化文件里面內容如下: FUNC void Setup (void) { SP = _RDWORD(0x20000000); PC = _RDWORD(0x20000004); _WDWORD(0xE000ED08, 0x20000000); }
LOAD Objects\ExecutableFile.axf INCREMENTAL Setup(); g, main
每一條語句具體意思請見源代碼注釋,這里提示的是Objects\ExecutableFile.axf
也就是輸出路徑和輸出文件名,它的路徑與文件名與你工程配置需對應。 第二步:調試不更新目標程序 同上:Project -> Options for Target -> Utilities,不勾選“更新”。意思就是在線調試時,不更新芯片(下載FLASH)程序。
第三步:改右邊上RAM for algonthm 改右邊下Start: (同修改內存地址) 單選“Do not Erase”
5.png (26.2 KB, 下載次數: 58)
下載附件
2020-5-19 19:58 上傳
第四步: 在LinKer 中,不勾Use Memory Layoutfrom Target Dialog(才能改) 改R/O Base= 0x2000 0000 R/W Base=0x20005000(同修改內存地址) 勾上Use Memory Layout from Target Dialog(不再改了)
至此,STM32內部RAM在線調試配置方法就完成了,連接開發板,重新編譯后,跳線設置BOOT0=1 ,BOOT1=0 ,就可以使用RAM在線調試代碼了 試驗結果: 1、只能在調試環境中使用,非調試環境,無論BOOT如何設置,都不能運行RAM。 2、不斷電,下次進入本例程調試環境,依然可以運行,不需要再寫入,說明程序在內存中。 (原來寫在FLASH中的程序不使用20000000-20005000這一段,避免破壞本程序)
8. 蜂鳴器RAM.7z
(384.79 KB, 下載次數: 7)
2020-5-19 19:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|