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

[复制链接]
 楼主| 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 | 显示全部楼层
不知道你问的什么,问这些有什么意义吗?
 楼主| yanjinbin0 发表于 2012-5-16 22:16 | 显示全部楼层
好多**说到了系统启动的步骤,都会说到.
在_main函数之前,会进行堆栈初始和内存初试化工作.

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

不清楚所以想问问.
walnutcy 发表于 2012-5-16 22:30 | 显示全部楼层
LZ,研究MCU工作机理不是从HEX文件开始的。
 楼主| yanjinbin0 发表于 2012-5-17 11:39 | 显示全部楼层
6楼,我不要那么复杂.
我只想知道初始SRAM到底是什么时候开始的.
 楼主| yanjinbin0 发表于 2012-5-22 09:54 | 显示全部楼层
请高人,给几个cpu如何执行文档看看.
芯片代理 发表于 2012-5-22 13:58 | 显示全部楼层
用C语言写程序,编译器会自动生成一段代码家在main函数前面,会将ROM中变量数据搬运到SRAM

LZ用汇编写的话,需要自己写一段搬运代码。
芯片代理 发表于 2012-5-22 14:00 | 显示全部楼层
SRAM一般不用配置,芯片自带的,一般都配置SDRAM,配置好后就开始搬运了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

0

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