搞了幾天,終于從內部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。 注意:配置的地址范圍不能超過芯片實際的大小。
195628ah40we4ritrz56ms.png (34.35 KB)
下載附件
2020-5-20 02:04 上傳
2.配置向量表 同上,打開目標配置:Project -> Options for Target -> C/C++,使用宏定義VECT_TAB_SRAM。如下圖:
195656kses6gzhs1uysasz.png (35.05 KB)
下載附件
2020-5-20 02:04 上傳
這里的宏定義是為了讓向量表指向RAM(我們默認是指向ROM),重要的一個目的就是讓中斷向量表指向RAM,上面“代碼功能”中斷的意義就是為了驗證向量表的正確性。
注意:這里的宏定義是在工具鏈中配置的,多個宏定義之間需要有“逗號”隔離開來。
其實這里的宏定義配置也可以在源代碼中實現,打開system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定義,如下圖:
195731tegiiufnlphijjke.png (19.76 KB)
下載附件
2020-5-20 02:04 上傳
3.調試配置 同上:Project -> Options for Target -> Debug, 這里是關于調試的配置。 第一步:去掉“Load Application at Startup”前面的勾選項 導入RAM初始化文件。
195750reebd1kkkp591ley.png (33.26 KB)
下載附件
2020-5-20 02:04 上傳
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”
195825vehphwum9jpggw1h.png (26.56 KB)
下載附件
2020-5-20 02:04 上傳
第四步: 在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這一段,避免破壞本程序)
蜂鳴器RAM啟動測試代碼.zip
(506.68 KB, 售價: 1 E幣)
2020-5-20 02:06 上傳
點擊文件名下載附件
售價: 1 E幣 [記錄]
[ 購買]
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|