緊接上一篇,若是程序改來改去仍是太大對不進STM32的內存怎麼辦?只能用下載到flash而後調試了嗎?其實還能夠下載到外擴的SRAM裏,這樣就幾乎能搞定全部的普通程序了。惟一的缺點是在這種狀況下,程序會跑得比較慢,whatever,能調試纔是正道。調試
板子仍是紅牛默認配置,這貨帶了256x16bit的SRAM一片,接在FSMC上,下面介紹怎麼配置成使用這片外擴SRAM進程程序調試。blog
首先要知道一點,紅牛這個SRAM的基址是0x68000000,因而咱們就把ROM的基址設置成這個。RAM就保持0x20000000就好了,其實也能夠用SRAM的,不過本文不涉及到這個。進程
這裏要改爲這樣,使用初始化腳原本輔助程序的下載,腳本內容以下(保存成exram.ini便可):ip
FUNC void Setup (void) {內存
SP = _RDWORD(0x68000000); // Setup Stack Pointerget
PC = _RDWORD(0x68000004); // Setup Program Counterflash
_WDWORD(0xE000ED08, 0x68000000); // Setup Vector Table Offset Registerit
}io
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 SRAMLOAD ../output/STM32-DEMO.axf INCREMENTAL // Download
Setup(); // Setup for Running
g, main
JLink的設置和上一篇同樣。
通過上面這樣的簡單設置,就能夠愉快的調試程序了,不再用擔憂flash忽然陣亡了。