【分享】K60 Keil 将程序在RAM中运行——转帖
本帖最后由 cn_x 于 2014-9-3 14:23 编辑设置Keil K60工程在RAM中运行在Keil中设置K60程序在RAM中运行比IAR要稍微复杂一些。在开始之前
[*]有一份可以运行在Flash中的 K60 Keil工程
[*]我的开发环境: MDK4.8x + Jlink V8
正式开工背景知识:首先要知道K60的RAM分成两块 0x1FFF0000 - 0x20000000, 0x20000000 - 0x20001000。 这2快RAM虽然地址上连续,但是不能当做一块连续的RAM来用,所以这样正好把这2快RAM一块当做RO data(存代码) 一块当做RW data(RAM)第一步配置如图所示:http://static.oschina.net/uploads/space/2014/0530/161404_Rr98_1435660.jpgLinker 选项配置如图所示:http://static.oschina.net/uploads/space/2014/0530/161644_k4KM_1435660.jpg注意 Linker中的RO base 和 RW Base 需要取消勾选Use Memory Layout form Target Dialog 后才能改,我们先取消勾选,改好后,再重新勾选上在Debug 中选择Jlink, 取消勾选Load application at startup 并且加上RAM.ini (名字任意)http://static.oschina.net/uploads/space/2014/0530/162005_rV4w_1435660.jpgRAM.ini大家自己创建一下,内容如下:FUNC void Setup (void) {
SP = _RDWORD(0x1FFF0000); // Setup Stack Pointer
PC = _RDWORD(0x1FFF0004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x1FFF0000); // Setup Vector Table Offset Register
}
load %L incremental
Setup(); // Setup for Running
g, main
最后在utilities选项中配置如下(Debug选项没有特别的配置要求,和Flash一样就可以)http://static.oschina.net/uploads/space/2014/0530/162433_9yDC_1435660.jpg 也可以指定单独文件的分散加载位置 楼主辛苦了谢谢{:handshake:} sunnyqd 发表于 2014-9-3 14:23
也可以指定单独文件的分散加载位置
keil也支持分散加载文件么? fengyunyu 发表于 2014-9-3 14:31
keil也支持分散加载文件么?
当然支持,功能很强大 sunnyqd 发表于 2014-9-3 14:23
也可以指定单独文件的分散加载位置
可否图文教程。。。。 晚上试一下
。。再来请教楼主。。。 sunnyqd 发表于 2014-9-3 14:31
当然支持,功能很强大
keil还真没有注意。一般都是option中设置。 分散加载哈,露珠自己原创么? 放到内存中断电不是没了,有什么好处? 浪里白条 发表于 2014-9-3 14:39
分散加载哈,露珠自己原创么?
标记了转帖了············ cn_x 发表于 2014-9-3 14:44
标记了转帖了············
原来如此,感谢分享。 浪里白条 发表于 2014-9-3 14:47
原来如此,感谢分享。
你这个是明天就可以换塔式开发板的节奏啊 cn_x 发表于 2014-9-3 14:55
你这个是明天就可以换塔式开发板的节奏啊
争取哈,您这也差不太多了。加油吧 这个可以有啊,呵呵! fengyunyu 发表于 2014-9-3 14:38
keil还真没有注意。一般都是option中设置。
晚点我弄一个帖子说明一下 湛泸骏驰 发表于 2014-9-3 14:35
可否图文教程。。。。
OK,晚上我写一下 sunnyqd 发表于 2014-9-3 16:00
晚点我弄一个帖子说明一下
http://blog.sina.com.cn/s/blog_621dafdb0100ufoe.html,这篇文章貌似说得还可以。 fengyunyu 发表于 2014-9-3 16:05
http://blog.sina.com.cn/s/blog_621dafdb0100ufoe.html,这篇文章貌似说得还可以。
是呢,这个是手动配置分散加载文件的位置的 分散加载的话,可以开发bootloader了,通过bootloader 烧写固件到flash中去,或者在内存中运行,通过串口或者其他媒介传输固件。
类似uboot那个功能 楼主 到1W2了吗? rootxie 发表于 2014-9-3 19:33
楼主 到1W2了吗?
楼主马上1W2啦,哈哈 浪里白条 发表于 2014-9-3 19:37
楼主马上1W2啦,哈哈
难道你的目标是ipad? rootxie 发表于 2014-9-3 19:33
楼主 到1W2了吗?
还差一点点··········· rootxie 发表于 2014-9-3 19:53
难道你的目标是ipad?
Tower!不喜欢iPAD 浪里白条 发表于 2014-9-3 19:55
Tower!不喜欢iPAD
你很快了,再拉一泡就到了 恭喜恭喜{:victory:} rootxie 发表于 2014-9-3 19:56
你很快了,再拉一泡就到了 恭喜恭喜
恩,争取今晚上能达成目标,你也加油哦! 马上又要有第二个tower了啊 lzl000 发表于 2014-9-3 20:12
马上又要有第二个tower了啊
多谢支持啊 在RAM中调试方便多了,
不知2楼说的是什么方式,怎么设置 这个帖子有技术性。学习一下。 本帖最后由 bli19 于 2014-9-4 12:21 编辑
第三行怎么理解呢,不太懂这种语法,对向量表寄存器赋值? 谢谢分享! mark 标记一下 最后在utilities选项中配置如下(Debug选项没有特别的配置要求,和Flash一样就可以) stm32内存调试的话,这里有个问题,flash配置应该选下面那个,并且什么内容也不填,因为没有flash什么事情,否则会提示闪存编程的问题 昨天晚上用类似的方法设置STM32,程序可以下载,但是就是不运行,折腾到很晚,还是不行,谁遇到过这种情况?
楼主辛苦了谢谢 之前在STM32上用过在RAM中调试,不过感觉这样有点麻烦,因为芯片的烧写次数也不至于在测试时就坏了吧,后来就没弄了 分散加载起什么作用?
页:
[1]