在RAM中調試STM32

【1】STM32.重新劃分RAM





1.確定自己芯片的RAM起始地址和大小,


CPU爲STMF103ZET   包含 64K RAM:0x2000 0000----0x2000 FFFF。


2.重新劃分RAM


我將64K RAM分成兩部分 48K(0xC000)用來當做Flash,16K(0x4000)當做RAM


經過查資料和看劉凱老師的視頻教程,摸索出了STM32F103ZET6的方法。廢話少說,上步驟。

1.在MDK下工程管理按鈕下多建立一個調試模式。



 
2.選中剛纔建立的RAM調試模式,爲什麼要這樣做呢?學習過DSP的同學都清楚,這裏是模仿DSP項目調試中的兩種方式,是爲了有多鐘調試模式,Flash模式,RAM模式。



3.進入Option for target 配置RAM調試模式下的工程選項。
STM32F103ZET6 RAM空間是64K,用前面40K做ROM,後面做RAM,由於STM32 RAM空間映射地址是0x20000000(可以去查手冊),所以配置如下。自己加法琢磨下就通了。至於ROM空間和RAM分配多大,看實際工程需要。



4.Output 選項下,設置如下圖所示,hex文件處勾選和不勾選是一樣的,關鍵是Select Folder for Object
因爲你在flash調試模式下會生成一堆Obj文件,但是現在是RAM模式,所以生成的文件不能放在一起,會衝突,需要另外在工程根目錄下,新建文件夾保存這些文件,就通過這裏選擇。



5.Listing,Usr C/C++ ASM 這四項不用動,保持Flash模式下就行了。



6.Linker 菜單下,這裏要注意,先不勾選Use memory Layout Form Targer Dialog,是爲了要更改ROM和RAM的起始地址,配置如下。配置好了,再把其勾上。可以前後連接文件下對比XXX.sct文件,可以看到地址是變化的。







7.Dubug處設置如圖所示,調試工具是什麼選什麼,Load Application at Startup處,如果勾選了,就不能單步調試,程序會直接運行。這裏關鍵就是要加入一個RAM.ini文件,作爲RAM的配置文件,是起到復位指針作用。這個文件是每次不同的工程都要修改,更改方框中的工程名。這個文件可以自己記事本寫,寫上圖示幾行代碼,或者到D:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB_Blinky路徑下拷貝過來,修改一下。還要注意一點就是,axf文件的路徑要搞清楚。是在項目根文件還是在子文件中,axf文件前面要指定路徑。







8.ultitle中的設置如下所示。
又是ROM和RAM空間的選擇。



9.好了,重新編譯一下。先點擊下載,再點擊調試。就完成了,這樣子做就可以延長Flash的壽命了。注意,RAM調試中軟件Reset是沒用的,程序指針會跑回Flash處,所以希望MDK5.2以後的版本能不能解決這個問題吧。

以上部分轉載 http://www.51hei.com/stm32/3817.html

 



至此設計就完成了,點擊debug按鍵就可以在RAM中調試了。

如果要在RAM中調試中斷還要如下定義 VECT_TAB_SRAM

在main的最開始加一句:NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

最後記得把硬件啓動模式也改了 BOOT0 BOOT1 高電平


 以下是運行結果,可以看到地址是0x2000開頭。不過復位鍵好像不起作用,要重新啓動才行,看在FLASH 只有1000次的面子上就麻煩點吧





模板打包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章