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

[复制链接]
5714|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

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