首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

blog-0127-STM32在RAM调试(2)

blog-0127-STM32在RAM调试(2)

建一个文本文件,将下面代码复制进去:
FUNC void Setup (void) {

SP= _RDWORD(0x68000000);
// SetupStack Pointer

PC= _RDWORD(0x68000004);
// SetupProgram 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, 0xB44444BB);
/* NBL0, NBL1 & adress configuration */

_WDWORD(0x40011804, 0xBBBBBBBB);

_WDWORD(0x40011C00,0x44BBBBBB);

_WDWORD(0x40011C04,0xBBBB4444);


_WDWORD(0x40012000, 0x44BBBBBB);

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



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

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

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



_sleep_ (200);

}


InitSRAM();
// Setup FSMC for SRAM
LOAD obj/RunInExtRam.axf INCREMENTAL
// Download
Setup();
// Setup for Running
g, main
保存文件名为:ExRam.ini
其实这就是一个脚本,和linux的shell脚本语法结构有点类似。你可以使用这些脚本让调试器做一些更加复杂的工作,而不单单只是单步、运行、停止。从最后面的四行可以很清晰的看到这个脚本做了些什么事情:
1.
初始化SRAM,实际上是初始化FSMC控制器和IO口。
2.
装载镜像文件
3.
设置(看上面具体的函数可知是设置PC,堆栈指针以及重新定位了中断向量表)
4.
跑到mian函数
具体细节我就不多注释了,因为我也没去仔细看。但各位看官要用到自己的板子上的时候一定要对相关配置参数进行修改。我是直接挪了我板子的其他示范代码中间的数据。

在Debug串口做如图设置,点调试符号。发现大功告成。
继承事业,薪火相传
返回列表