| 对.hex文件格式之我见(boot loader)
以下是我对用HEX500做的目标文件的剖析,包括启动表的内容 欢迎大家补充!共同进步啊。 http://www.guangdongdz.com/special_...e/200203/11.htm 上面网页最后有一段启动表格式的定义,可以和我的剖析对照一下。 该目标文件中间的内容我删除了,以便于了解概念。 目标文件是以“:”冒号开始的。其他内容是我添加的。数据之间的“-”也是我加的分隔符号 便于观看。
.boot sections*********************************** 20-该行长度 0000-flash写入的该段起点地址 00-类型(代码) *************************** 08AA-boot loader表启动方式(8位) 7FFF-SWWSR值 F800-BSCR值 ***************************** 0000-程序入口XPC 3065-程序入口地址 _c_int00 0008-该段的长度(.boot sections) 0000-该段入口XPC(.boot sections) 2400-该段的入口地址(.boot sections) 10AA-2400程序代码8个(.boot sections) 6B-该行的校验码(第一行的20个字节校验,08AA-2400,补码格式) ******************************** 0000+20=0020-(.text sections的起点,下一个段)
:20-0000-00-08AA-7FFF-F800-0000-3065-0008-0000-2400-10AA-7FFF-F000-0000-2B00-1500-0000-2400-6B .text sections********************* 20-该行长度 0020-flash写入地址 00-类型(代码) *************************** 12AD-该段的长度(.text sections) 0000-该段入口XPC(.text sections) 2408-该段的入口地址(.text sections) 7728-3F00程序代码(20H-6H)个(.text sections) B9-该行的校验码(第一行的20个字节校验,12AD-2400,补码格式) ******************************** 0020+12AD*2+6=2580-(.cinit sections的起点,下一个段)
:20-0020-00-12AD-0000-2408-7728-5000-772B-0000-7729-0000-F7BB-68F8-001D-00FF-69F8-001D-3F00-B9 这一行从4801开始都是代码了,公20个字节 :20-0040-00-4801-8801-7700-FFFF77580000F495F495F495F495775897FFF495F495F495F495DD :2000600077260019F495F495772509C3F495F49577260429F495F495F6BBFC004A07F7B6B7 *此处代码略去 :2025600056F800F2F27336B2F4954E02F020807FF3E71802F1A081025602EE048A11FC00FD
.cinit ections*********************** :20-2580-00-00C8-0000-36B5-0001-010F-0001-0001-0110-0000-0001-051A-0001-0001-0111-0064-0001-CB
:162700000000000106A90000000106AA366E000106AB366E000068 .vectors sections**************** :20-2716-00-0078-0000-3F80-F273-3065-F495-F495-F4EB-F495-F495-F495-0000-0000-0000-0000-0000-E6 *此处代码略去 :1627F600F495F495F495F4EBF495F495F495F4EBF495F495F4953E :20280C000074000000804A989680447A000000000000449C400047C350004627C5AC449CCA *此处代码略去 :0E28EC00000000000000FF7FFFFF7F7FFFFF66
:20338C00002000001D40FD12FCE80AA02346304823460AA0FCE8FD12000000000000000020 :2033AC000000000000000148065F0FC219AA1DFA19AA0FC2065F0148000000000000000066 :0833CC000000000000000000F9 :00-0000-01FF 最后以此行代码结束
|