打印

STM32在Keil MDK环境下RAM上代码调试的配置说明

[复制链接]
5832|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这个先主要介绍下STM32的啊,GD32的跟着差别不大的。。
沙发
vivilzb1985|  楼主 | 2015-4-17 21:24 | 只看该作者
  这两种芯片的都是大同小异的,,掌握了这个自然对GD32的芯片程序调试就得心应手了。。

使用特权

评论回复
板凳
vivilzb1985|  楼主 | 2015-4-17 21:28 | 只看该作者
在STM32F103ZE-EK上进行了一个例程的调试,却发现原来更有方法在RAM中进行代码调试的配置,以下是配置调试步骤分享的:
1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小:

图片1.png (249.3 KB )

图片1.png

使用特权

评论回复
地板
vivilzb1985|  楼主 | 2015-4-17 21:29 | 只看该作者
2.Target的设置
 
1)勾上可以用微库,减小生成代码的大小
2,3)分别定义ROM区位置及大小和RAM区位置和大小。在这里需要说明的是,Cortex-M3的架构有4G的寻址空间,而Flash的起始地址在0x08000000,RAM地址在0x20000000,在这里进行了第一次相关地址的更改~如图2
0x1000为4K~这里的0xc000则为48K的ROM分配~RAM的为16K~基本上移植个uCOS-II都够用了~

使用特权

评论回复
5
vivilzb1985|  楼主 | 2015-4-17 21:30 | 只看该作者
这是配置图的

图片2.png (213.24 KB )

图片2.png

使用特权

评论回复
6
vivilzb1985|  楼主 | 2015-4-17 21:31 | 只看该作者
3.Output的设置
强调一下Name of Executable吧~这里默认的应该是project的名字,我习惯改成output~而且这与编译后产生的*.axf和*.sct文件名字都有关联~没勾选HEX~感觉选了也没用~写到SRAM中的是。。。见图3

使用特权

评论回复
7
vivilzb1985|  楼主 | 2015-4-17 21:31 | 只看该作者
附图没传上来的啊

图片3.png (115.11 KB )

图片3.png

使用特权

评论回复
8
vivilzb1985|  楼主 | 2015-4-17 21:32 | 只看该作者
4.Listing Label~没啥说的~不上图了~默认~
5.User Label~更没啥说的~同上~
6.C/C++ Label~貌似都没啥说的我后面就不用写了~再同上。。。。~
7.无语的Asm Label~
8.好啦~来活了~Linker Label
最上边打上勾~是这效果~不打勾~就反白了~然后呢~呵呵~慢慢说来~
先说说打勾的时候,如图4~非人为操作~你什么都不用管了~(很多人会发现~新建的项目~刚开始的时候下面的Scatter File后的内容是空的~当你把这勾去掉后会自动出现~然后随你勾与不勾~就都是存在的了~不过此时还只是个影子~没有实际的文件~什么时候出现这个文件呢~法一:自然你可以自己写~呵呵~法二:在出现影子后打上勾编译一次,此文件就产生了~在output的文件夹里~马上后文还会有对此文件内容的介绍~)

图片4.png (200.8 KB )

图片4.png

使用特权

评论回复
9
vivilzb1985|  楼主 | 2015-4-17 21:33 | 只看该作者
本帖最后由 vivilzb1985 于 2015-4-17 21:43 编辑

再说说不打勾的时候会反白一些内容~如图5,需要修改两个地方~

图片5.png (193.67 KB )

图片5.png

使用特权

评论回复
10
vivilzb1985|  楼主 | 2015-4-17 21:44 | 只看该作者
再来看看~output.sct文件内容~如图6~6行内容是ROM的地址和大小~11行事RAM的地址和大小~很是一目了然吧~内容根据Target自动生成的~不需要手动修改~

图片6.png (91.84 KB )

图片6.png

使用特权

评论回复
11
vivilzb1985|  楼主 | 2015-4-17 21:44 | 只看该作者
9.Debug的配置
分成几部分,原界面和Setting界面
1)原界面,如图7~首先选好J-link~这里由于使用的是keil4~和keil3的选项会有不同~在keil3下~选择“Cortex-M3 J-Link”,取消Load Application at Startup的勾选~

图片7.png (231.74 KB )

图片7.png

使用特权

评论回复
12
vivilzb1985|  楼主 | 2015-4-17 21:46 | 只看该作者
再说说这个CouRAM.ini文件~内容如下~如图8~有注释~
首先LOAD output.axf~加载启动代码到RAM~关关于hex,bin文件和axf的关系~是在axf中存有Debug需要的一些调试语句~所以这文件与前 2者内容上是不相同的~前两者属于其子集的关系~(这里的output.axf名字对应了我们上边设定的output的文件名设定~此文件在output 中设定的文件夹下生成~跟output.sct在一起~)从文件内容可以看到~中断向量表已经被映射到0x20000000,PC也指向了 0x20000004~说明在RAM中进行调试时理论上可以的了~
 

图片8.png (115.91 KB )

图片8.png

使用特权

评论回复
13
vivilzb1985|  楼主 | 2015-4-17 21:46 | 只看该作者
2)进入setting如图9~首先要选对interface~有时候莫名其妙的会在keil死机后(我调程序总是把Keil弄挂了~真不是为何~难道说他是Keil~而我是Killer么~哈哈)~一定要注意~不然容易出现J-Link连接失败的效果~

图片9.png (250.04 KB )

图片9.png

使用特权

评论回复
14
vivilzb1985|  楼主 | 2015-4-17 21:47 | 只看该作者
本帖最后由 vivilzb1985 于 2015-4-17 21:50 编辑

3)Trace label不用调整~默认就可以~如果需要使用~记得算好了选用的时钟Core Clock~这里是指PLL后的~
4)然后进入了Flash Download label,如图10~Flash的擦写有规矩~需要在有内容的情况下擦出一个扇区后方可写入,而此时的RAM自然不必要这样做~然后RAM for Algorithm需要改下~接着需要点击add添加Flash编程算法(我还不会写这算法,不过大概看了下,就是麻烦点的一堆调用和设置)~接着进入了选择界面~如图11

图片10.png (161.88 KB )

图片10.png

使用特权

评论回复
15
vivilzb1985|  楼主 | 2015-4-17 21:48 | 只看该作者
本帖最后由 vivilzb1985 于 2015-4-17 21:51 编辑

在这里选择好属于自己的芯片Flash大小~我的这个挺大的~512K呢~呵呵~
add后还需要再更改最后一行红线上的内容~此时需要先点一下刚选好的变成算法就会反白可编辑~然后编程算**自动更改其自身的地址~

图片11.png (183.68 KB )

图片11.png

使用特权

评论回复
16
vivilzb1985|  楼主 | 2015-4-17 21:52 | 只看该作者
10.进入Utilities~同Debug一样~选择~其中的setting其实刚刚讲过~其实是同一个~如图12

图片12.png (141.31 KB )

图片12.png

使用特权

评论回复
17
vivilzb1985|  楼主 | 2015-4-17 21:52 | 只看该作者
到此为止~这一天半的RAM调制研究之旅的总结画上了一个圆满的句号~
需要提醒大家注意的几点是:
1.Debug开始后~不要点reset~因为这样后走的就是Flash的程序了~容易造成调试问题~结果是产生keil被kill掉的PC错误~
2.重新启动开发板后一定要build target 一次~或者rebuild all一次再烧写程序~不然~很容易同上~原因是不太清楚~

使用特权

评论回复
18
shenmu2012| | 2015-4-19 19:39 | 只看该作者
vivilzb1985 发表于 2015-4-17 21:28
在STM32F103ZE-EK上进行了一个例程的调试,却发现原来更有方法在RAM中进行代码调试的配置,以下是配置调试 ...

这一步是最基本的,也是最关键的。

使用特权

评论回复
19
shenmu2012| | 2015-4-19 19:39 | 只看该作者

这一块的我使用的时候都是采用默认的了。

使用特权

评论回复
20
comeon201208| | 2015-4-19 20:28 | 只看该作者
vivilzb1985 发表于 2015-4-17 21:31
附图没传上来的啊

这个输出的文件名称的可以根据需要命名的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

4276

帖子

6

粉丝