[STM32F1] 我想在RAM中运行程序,不知能否实现?

[复制链接]
 楼主| hwboy05 发表于 2014-3-11 00:26 | 显示全部楼层 |阅读模式
调试程序时需要频繁烧写Flash,一方面速度慢,另一方面过程很繁琐。现在想把程序放到RAM中调试;准备这样做:
先写一个BIOS,烧到Flash中,功能比较简单,上电后初始化串口,提供简单的命令行,支持xmodem协议通过串口下载程序bin文件到RAM,然后跳到RAM指定地址执行;
芯片是STM32F103VDT,RAM只有64K;RAM空间划分如下:
0x20000000~0x20001fff:8K,用作BIOS程序的RAM;
0x20002000~0x2000dfff:48K,用于存放RAM程序的映像文件,也就是在BIOS中通过串口下载的bin文件;
0x2000e000~0x2000ffff:8K,用作RAM程序的RAM;
现在有几个问题需要解决,希望各路大侠能指点一下,谢谢;
1、Keil只能编译生成Hex文件,用什么工具可以转成bin文件?
2、bin文件下载到RAM的0x20002000~0x2000dfff空间后,如何跳转到0x20002000地址执行RAM程序?
3、RAM程序的工程怎么设置?
youimiss 发表于 2014-3-11 08:33 | 显示全部楼层
RAM转BIN小工具网上好像一大把吧
lei129210 发表于 2014-3-11 09:32 | 显示全部楼层
好高深的样子,但是我知道KEIL能够生成BIN文件的。不需要任何转换工具。
香水橙 发表于 2014-3-11 11:51 | 显示全部楼层
这样做速度快不了,过程可能更繁琐。
fjjjnk1234 发表于 2014-3-11 20:34 | 显示全部楼层
不是所有的程序都能在SRAM中调试的。在调试模式下,计数器会被冻结,PWM输出被禁止。
 楼主| hwboy05 发表于 2014-3-11 22:50 | 显示全部楼层
多谢大家的热心参与,第一个问题已经解决,Keil自带一个软件可以把axf文件转成bin文件;
程序跳转也搞定了,但是跳到0x20002000后就没反应了。可能是RAM程序的工程需要做一些设置;
另外有一点没有说清楚,我是希望程序在RAM中运行,而不是调试。
myxiaonia 发表于 2014-3-12 20:19 来自手机 | 显示全部楼层
如果只是想在ram调试,没必要做这个bootloader,ram调试网上很多内容,建议以后有问题先放谷歌百度搜
拿起书本 发表于 2014-3-12 22:33 | 显示全部楼层
如果是调试,则更简单,只要链接为在那个地址内,然后加载运行就行。
 楼主| hwboy05 发表于 2014-10-12 00:07 | 显示全部楼层
问题已经解决,0x20002000存放的并不是第一条指令,入口地址存在0x20002004;谢谢大家参与讨论;
另外,因这个问题引发我做了一个BIOS,详情见:
http://bbs.21ic.com/forum.php?mo ... &fromuid=640170
您需要登录后才可以回帖 登录 | 注册

本版积分规则

131

主题

219

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

131

主题

219

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部