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

STM32在flash中调试和在RAM中调试(2)

STM32在flash中调试和在RAM中调试(2)

实际上,这就是程序的定位了,把程序的CODE 区定义到0x20000000 为起始,大小为
0xa000,也就是40K 了,然后RAM 区则定义到0x2000a000为起始,大小为0x2000,即8K.
刚才说了,103VC的RAM是48K,地址从0x20000000开始的,那你明白为什么这么设了吧?
为了方便让两个目标之间完全没有任何牵连,还需要设置Output,Listing页的文件夹定
位,之前的设置大家还记得吧,定义到一个叫LIST的目录里,现在,我们在LIST目录里建
立一个RAM 目录,把Output 和Listing 的文件夹都定位到那个LIST/RAM 内.这里注意,
要把 Debug Information 选上,其实无论如何调试,只要你调试,这个都该选的.
当然这样还是不够的,还要设置一个特别的地方,就是这里:
Load Application at Startup和Run to main()都选上,然后还要添加一个RAM.ini 文件,这个
文件内容非常简单,其实就是定位了一些程序入口,书写格式还是类似C语言的呢.它的内
容如下:
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
以上东西你可以不去理解,直接把上面代码COPY,然后建立一个RAM.ini 文件,把代码粘
贴下去.而且这个RAM.ini 对于别的需要设置在RAM调试的工程,也是通用的.
接着,设置下图,Update Target before Debugging.然后按下Settings 进入设置界面.
设置界面上当然地也需要选择CPU的类型,就和第二章的设置MDK一样,但这里要注意下
面圈出来的三个地方:
1. .2. RAM .3. FLASH
其中改RAM 地址和改FLASH 地址大家都明白要改成什么了吧J CPU 的型号别忘了选上!
只有点击CPU 的型号,才可以让你设置那个所谓FLASH 地址.
好了,一切都搞好了, , ,在调试过程中,不要点击那个
FLASH 下载功能哦~以上设置必须丝毫莫差,设置过程请大家仔细一点就可以了.光盘上
的技巧篇中会有一个设置好的简易工程供大家参考.
到此,RAM 调试的方式就设置完成了,尽情享受无穷刷写的乐趣吧.到真正要在FALSH 运
行的时候,记得把工程目标转回去那个STM32F103VC Flash ,这时你会发现,两个目标都
保存着各自的独特设置.相互间除了源代码外,没有其它任何联系
要验证这个在RAM 调试是否正确,很简单,首先,烧写一个A 程序到DX32 上,然后,用在
RAM调试的方式在板上调试B程序.当你成功调试了B程序后,按下板上的复位键,这时候,
板子跑起来的就是之前下载到FALSH 的A 程序.如此,你的设置就完全正确了,因为B 程
序能在RAM调试了,并且完全没有改变到FLASH上原先的A 程序~.
如果大家还记得ISP跳线,一定记得有一个跳线模式是跳成芯片复位后在RAM启动的吧?
注意到,我们讲的是在RAM 调试,这与芯片复位后在RAM 启动是两个概念,也就是说,在
RAM调试,是不需要动那个ISP跳线的.那你一定会问,ISP跳线成在RAM启动究竟是干什
么的?白菜会跟你说:偶也不知道啥用~J
继承事业,薪火相传
返回列表