打印

关于stm32代码在ram运行的问题(代码搬运)

[复制链接]
5008|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wb_5687|  楼主 | 2010-3-15 11:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把一个BIN文件做成一个数组,然后把它搬到ram中运行.
当我把BIN搬运到ram,LDR     R0, =0x20000000   bx r0;
代码便跑到HardFault_Handler中了.
请问我这样的做法可行吗?
有没有哪位朋友做过这方面的东西?
沙发
A7_COOL| | 2010-3-15 12:37 | 只看该作者
不明白你为什么要这么做。据说STM32的代码在Flash运行的效率要比在RAM运行的效率高。相必楼主是沿用了TI的DSP软件编程思路吧。

使用特权

评论回复
板凳
ShakaLeo| | 2010-3-15 12:42 | 只看该作者
首先要确定代码连接的位置,即在编译连接的时候,要确定代码的位置是在RAM中。
还有就是跳转的方法不对,STM32的0x20000000位置存的不是代码,而是主堆栈的初始值。代码的起始位置是存储在0x20000004这个单元的,要把0x20000004这个单元的内容赋值给PC就行了,跳转前先把主堆栈初始化,再跳转,过程大概如下:
mov r0,  #0x20000000
ldr r0, [r0]
msr msp, r0
ldr r0,  =0x20000004
ldr r0, [r0]
bx r0

使用特权

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

本版积分规则

2

主题

2

帖子

0

粉丝