打印

STM32执行*.Hex(内存映像)文件原理是什么

[复制链接]
3954|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanjinbin0|  楼主 | 2012-5-14 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yanjinbin0 于 2012-5-14 14:58 编辑

此处,*.Hex文件是一个内存映像文件,例如:
:020000040800F2
:10000000001000200900000802480349034AFEE7E7
:100010007856341204100020001000201000000850
:020000042000DA
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
.....中间省略N个字.........................
:081000001223311267452301A0
:0400000508000009E6
:00000001FF
这里很简单的就是,
:081000001223311267452301A0 ->这句:在20001000地址数据是:12233112 67452301,
这里是使用IAR定义的:
DCD 0x01234567
DCD 0x12312312
如果是ROM处的数据,我还能理解,一直保存在0800 0000开始后的地址处.
但在RAM处的数据,CPU是如何处理的呢.
大概猜测下流程:
CPU是首先执行内存映像,把ROM中的定义(DCD)的数据读取到RAM中(这步只CPU控制,不可编程控制???).
在跳转到0800 0000开始执行程序吗?
大家谁有讲解这方面的资料吗?
沙发
香水城| | 2012-5-14 18:35 | 只看该作者
如果HEX文件中有指定到RAM中的数据,那么烧录时,烧录程序应该报错。

使用特权

评论回复
板凳
yanjinbin0|  楼主 | 2012-5-15 16:50 | 只看该作者
*.Hex文件到FLash里面的内容是怎么执行的,例如这句:
:081000001223311267452301A0 ->这句:在20001000地址数据是:12233112 67452301,

使用特权

评论回复
地板
香水城| | 2012-5-15 17:13 | 只看该作者
不知道你问的什么,问这些有什么意义吗?

使用特权

评论回复
5
yanjinbin0|  楼主 | 2012-5-16 22:16 | 只看该作者
好多**说到了系统启动的步骤,都会说到.
在_main函数之前,会进行堆栈初始和内存初试化工作.

而我,汇编不带初始内存函数,但如果使用了DCD定义一个数,在Memon内存里面发现是存在的.
这里疑问是我没代码去控制内存初始啊,为什么会自动初始化.
CPU是怎么处理的.

不清楚所以想问问.

使用特权

评论回复
6
walnutcy| | 2012-5-16 22:30 | 只看该作者
LZ,研究MCU工作机理不是从HEX文件开始的。

使用特权

评论回复
7
yanjinbin0|  楼主 | 2012-5-17 11:39 | 只看该作者
6楼,我不要那么复杂.
我只想知道初始SRAM到底是什么时候开始的.

使用特权

评论回复
8
yanjinbin0|  楼主 | 2012-5-22 09:54 | 只看该作者
请高人,给几个cpu如何执行文档看看.

使用特权

评论回复
9
芯片代理| | 2012-5-22 13:58 | 只看该作者
用C语言写程序,编译器会自动生成一段代码家在main函数前面,会将ROM中变量数据搬运到SRAM

LZ用汇编写的话,需要自己写一段搬运代码。

使用特权

评论回复
10
芯片代理| | 2012-5-22 14:00 | 只看该作者
SRAM一般不用配置,芯片自带的,一般都配置SDRAM,配置好后就开始搬运了

使用特权

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

本版积分规则

0

主题

10

帖子

0

粉丝