STM32 使用片外外擴內存調試


緊接上一篇,如果程序改來改去還是太大對不進STM32的內存怎么辦?只能用下載到flash然后調試了嗎?其實還可以下載到外擴的SRAM里,這樣就幾乎能搞定所有的普通程序了。唯一的缺點是在這種情況下,程序會跑得比較慢,whatever,能調試才是正道。

板子還是紅牛默認配置,這貨帶了256x16bit的SRAM一片,接在FSMC上,下面介紹怎么配置成使用這片外擴SRAM進程程序調試。

image

首先要知道一點,紅牛這個SRAM的基址是0x68000000,於是我們就把ROM的基址設置成這個。RAM就保持0x20000000就行了,其實也可以用SRAM的,不過本文不涉及到這個。

image

這里要改成這樣,使用初始化腳本來輔助程序的下載,腳本內容如下(保存成exram.ini即可):

FUNC void Setup (void) {

SP = _RDWORD(0x68000000); // Setup Stack Pointer

PC = _RDWORD(0x68000004); // Setup Program Counter

_WDWORD(0xE000ED08, 0x68000000); // Setup Vector Table Offset Register

}


FUNC void InitSRAM (void) {

//InitRCCC

_WDWORD(0x40021000, 0x00005083);

_WDWORD(0x40021004, 0x00000000);

_WDWORD(0x40021004, 0x00000000);

_WDWORD(0x40021000, 0x00005083);

_WDWORD(0x40021004, 0x00000000);

_WDWORD(0x40021008, 0x009F0000);


_WDWORD(0x40021000, 0x00015083);

_sleep_ (100); // Wait for PLL lock


_WDWORD(0x40022000, 0x00000030);

_WDWORD(0x40022000, 0x00000030);

_WDWORD(0x40022000, 0x00000032);

_WDWORD(0x40021004, 0x00000000);

_WDWORD(0x40021004, 0x00000000);

_WDWORD(0x40021004, 0x00000400);

_WDWORD(0x40021004, 0x00000400);

_WDWORD(0x40021004, 0x001D0400);

_WDWORD(0x40021000, 0x01035083);

_sleep_ (100);

_WDWORD(0x40021004, 0x001D0400);

_WDWORD(0x40021004, 0x001D0402);

_sleep_ (100);


_WDWORD(0x40021014, 0x00000114); /* Enable AHBPeriphClock */

_WDWORD(0x40021018, 0x000001E0); /* Enable APB2PeriphClock */


/* GPIO Configuration for FSMC */

_WDWORD(0x40011400, 0x44BB44BB);

_WDWORD(0x40011404, 0xBBBBBBBB);

_WDWORD(0x40011800, 0xB44448BB); /* NBL0, NBL1 & adress configuration */

_WDWORD(0x40011804, 0xBBBBBBBB);

_WDWORD(0x40011C00, 0x43BBBBBB);

_WDWORD(0x40011C04, 0xBBBB4344);

_WDWORD(0x40012000, 0x44BBBBBB);

_WDWORD(0x40012004, 0x44444B44); /* NE3 configuration */


_WDWORD(0xA0000010, 0x00001010); /* FSMC Configuration */

_WDWORD(0xA0000014, 0x10000200); /* FSMC_DataSetupTime = 2; */

_WDWORD(0xA0000010, 0x00001011); /* Enable FSMC Bank1_SRAM Bank */


_sleep_ (200);

}


InitSRAM(); // Setup FSMC for SRAM

LOAD ../output/STM32-DEMO.axf INCREMENTAL // Download

Setup(); // Setup for Running

g, main

JLink的設置和上一篇一樣。

經過上面這樣的簡單設置,就可以愉快的調試程序了,再也不用擔心flash突然陣亡了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM