打印
[STM32F1]

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

[复制链接]
3197|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
这样做速度快不了,过程可能更繁琐。

使用特权

评论回复
5
fjjjnk1234| | 2014-3-11 20:34 | 只看该作者
不是所有的程序都能在SRAM中调试的。在调试模式下,计数器会被冻结,PWM输出被禁止。

使用特权

评论回复
6
hwboy05|  楼主 | 2014-3-11 22:50 | 只看该作者
多谢大家的热心参与,第一个问题已经解决,Keil自带一个软件可以把axf文件转成bin文件;
程序跳转也搞定了,但是跳到0x20002000后就没反应了。可能是RAM程序的工程需要做一些设置;
另外有一点没有说清楚,我是希望程序在RAM中运行,而不是调试。

使用特权

评论回复
7
myxiaonia| | 2014-3-12 20:19 | 只看该作者
如果只是想在ram调试,没必要做这个bootloader,ram调试网上很多内容,建议以后有问题先放谷歌百度搜

使用特权

评论回复
8
拿起书本| | 2014-3-12 22:33 | 只看该作者
如果是调试,则更简单,只要链接为在那个地址内,然后加载运行就行。

使用特权

评论回复
9
hwboy05|  楼主 | 2014-10-12 00:07 | 只看该作者
问题已经解决,0x20002000存放的并不是第一条指令,入口地址存在0x20002004;谢谢大家参与讨论;
另外,因这个问题引发我做了一个BIOS,详情见:
https://bbs.21ic.com/forum.php?mo ... &fromuid=640170

使用特权

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

本版积分规则

131

主题

219

帖子

2

粉丝