5537|9

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

IAREWSTM8HEX格式问题? [复制链接]

:04 0000 05 0000B191B5

这个是IARSTM8 输出的HEX文件最后部分,请问 05 这里指什么意思呢? 查了HEX格式资料说是“开始线性地址” 不知道在这里是什么意思?
此帖出自stm32/stm8论坛

最新回复

                                  http://en.wikipedia.org/wiki/Intel_HEX 0000B191应该是需要装入的地址,估计是供后面的 hex目标码用。 05, Start Linear Address Record. The address field is 0000, the byte count is 04. T ... [/quote] 还是举例说明,才能弄清楚。我的代码生成的部分HEX如下: :020000040800F2 :1000000000040020594A0008A1420008A342000849 :10001000A5420008A7420008A9420008000000000D ... ... :104C700006070809FFFFFFFFFFFFFFFF020406080A :084C8000FFFFE8030100000042 :0400000508004ABDE8 :00000001FF 此段与LZ的一样,类型为05: :0400000508004ABDE8 其中的地址是0x08004ABD,当我下载代码到芯片里后(不勾选 run to main),程序恰好停在 0x08004ABD,对应于标号: __iar_program_start 维基百科是这么说: http://en.wikipedia.org/wiki/Intel_HEX 05, Start Linear Address Record. The address field is 0000, the byte count is 04. The 4 data bytes represent the 32-bit value loaded into the EIP register of the 80386 and higher CPU. 根据 http://en.wikipedia.org/wiki/X86_assembly_language The instruction pointer is called ip in 16-bit mode, eip in 32-bit mode, and rip in 64-bit mode. The instruction pointer register points to the memory address which the processor will next attempt to execute 实际上 EIP 寄存器就是 STM8或者ARM芯片的PC指针。 可见,上面维基百科的描述是对的:类型05后面跟的是4字节地址,将赋给(STM8或者ARM芯片的)PC指针。  详情 回复 发表于 2010-8-6 14:04
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 有人知道不?
此帖出自stm32/stm8论坛
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 MCUISP知道不,你的编程序都做了,下载程序的时候上位机总要读HEX文件吧!
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
:04 0000 05 0000B191B5

04 是长度

000005 是地址,3字节长的地址
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
楼上的,搞错了吧

:    04     0000    05     0000B191   B5
开始  长度  地址    类型  数据         校验

我想问的数 05 在EWSTM8 里代表什么意思,比如 00 代表MEMORY 数据!

而这里的 05 是什么意思呢? STM8 存储器是统一编址的!
05, Start Linear Address Record. The address field is 0000, the byte count is 04. The 4 data bytes represent the 32-bit value loaded into the EIP register of the 80386 and higher CPU.
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼上的,搞错了吧

呵呵,记错了。

http://en.wikipedia.org/wiki/Intel_HEX

0000B191应该是需要装入的地址,估计是供后面的 hex目标码用。
05, Start Linear Address Record. The address field is 0000, the byte count is 04. The 4 data bytes represent the 32-bit value loaded into the EIP register of the 80386 and higher CPU. There are various format subtypes:
  • I8HEX or INTEL 8, 8-bit format.
  • I16HEX or INTEL 16, 16-bit format. Allows usage of 02 and 03 records. The data field endianness may be byte-swapped.
  • I32HEX or INTEL 32, 32-bit format. Allows usage of 04 and 05 records. The data field endianness may be byte-swapped.
Beware! Byte-swapped data might be more confusing. It is possible to misinterpret the byte order in case of I16HEX and I32HEX.
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
hex格式我做好就忘了,呵呵
得去翻资料才能看懂。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 



不对啊,反正我都它是多余的,但是IAR输出这样的“05” 应该有他们的用意!

你的理解,我觉得不对,因为“00”每行都带有START ADDRESS的1
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
不知道的不要乱猜,找资料仔细看下吧,我凭记忆随便说一点:

:10 0000 05 11 22 33 44 55 66 CC
冒号后分别是长度,地址,记录类型 数据(多个字节) 校验和

类型00是数据
类型05是起始地址,好像是给调试工具用的,芯片烧录可忽略
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 


http://en.wikipedia.org/wiki/Intel_HEX

0000B191应该是需要装入的地址,估计是供后面的 hex目标码用。
05, Start Linear Address Record. The address field is 0000, the byte count is 04. T ...
[/quote]

还是举例说明,才能弄清楚。我的代码生成的部分HEX如下:
:020000040800F2
:1000000000040020594A0008A1420008A342000849
:10001000A5420008A7420008A9420008000000000D
... ...
:104C700006070809FFFFFFFFFFFFFFFF020406080A
:084C8000FFFFE8030100000042
:0400000508004ABDE8
:00000001FF

此段与LZ的一样,类型为05:
:0400000508004ABDE8
其中的地址是0x08004ABD,当我下载代码到芯片里后(不勾选 run to main),程序恰好停在 0x08004ABD,对应于标号: __iar_program_start

维基百科是这么说:
http://en.wikipedia.org/wiki/Intel_HEX
05, Start Linear Address Record. The address field is 0000, the byte count is 04. The 4 data bytes represent the 32-bit value loaded into the EIP register of the 80386 and higher CPU.

根据 http://en.wikipedia.org/wiki/X86_assembly_language
The instruction pointer is called ip in 16-bit mode, eip in 32-bit mode, and rip in 64-bit mode. The instruction pointer register points to the memory address which the processor will next attempt to execute
实际上 EIP 寄存器就是 STM8或者ARM芯片的PC指针。

可见,上面维基百科的描述是对的:类型05后面跟的是4字节地址,将赋给(STM8或者ARM芯片的)PC指针。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表