pythone 打开文件 一行_【精品资料】用了这么多年单片机的Hex文件不懂?看这篇就够了...
字段 | 名称 | 含义 |
'00' | Data Rrecord | 用来记录数据,HEX文件的大部分记录都是数据记录 |
'01' | End of File Record | 用来标识文件结束,放在文件的最后,标识HEX文件的结尾 |
'02' | Extended Segment Address Record | 用来标识扩展段地址的记录 |
'03' | Start Segment Address Record | 开始段地址记录 |
'04' | Extended Linear Address Record | 用来标识扩展线性地址的记录 |
'05' | Start Linear Address Record | 开始线性地址记录 |
然后是数据,0x08 0x00最后一个字节 0xf2为校验和,校验和的算法为:计算 0xf2前所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和。Hex文件的数据类型字段中,'04' '05',都是用来提供地址信息的。每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。记录的基本格式为::020000040800F2:1000000048B6002085010008B1450008252B0108ED:10001000B9450008C1450008C945000800000000B6:00000001FF 对上面的HEX文件进行分析:
第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0800,校验和为F2。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为(0x0800 << 16) = 0x0800 0000后面的数据记录都以这个地址为基地址。
第2条记录的长度为10(16),LOAD OFFSET为0000,RECTYPE为00,说明该记录为数据记录。数据为48 B6 00 20 85 01 00 08 B1 45 00 08 25 2B 01 08,共16个BYTE。这个记录的校验和为ED。此时的基地址为0X0800 0000,加上OFFSET,这个记录里的16BYTE的数据的起始地址就是0x0800 0000 + 0x0000 = 0x0800 0000.
第3条记录的长度为10(16),LOAD OFFSET为0010,RECTYPE为00,说明该记录为数据记录。数据为B9 45 00 08 C1 45 00 08 C9 45 00 08 00 00 00 00,共16个BYTE。这个记录的校验和为B6。此时的基地址为0X0800 0000,加上OFFSET,这个记录里的16BYTE的数据的起始地址就是0x80000 + 0x0010 = 0x0800 0010.
第4条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识文件的结尾。
当我们用J-flash去下载Hex文件的时候,这个软件也会如我们分析一样,将整个Hex文件一行行写入到单片机中的特定基地址的偏移值中。
pythone 打开文件 一行_【精品资料】用了这么多年单片机的Hex文件不懂?看这篇就够了...相关推荐
- TF卡里删掉文件后内存没变大_双11,TF卡,SD卡,读卡器如何选,看这篇就够了...
此文章发布已经半年有余,各大厂家推出了很多新的SD卡,且SD卡组织也推出了新的标准,所以这篇文章的内容已经有些过时,还得烦请各位移步到新的文章: 黄昏百分百:TF卡,SD卡,读卡器,USB拓展坞如何选 ...
- uiautomation遍历windows所有窗口_万字长文!滑动窗口看这篇就够了!
大家好,我是小浩.今天是小浩算法 "365刷题计划" 滑动窗口系列 - 整合篇.之前给大家讲解过一些滑动窗口的题目,但未作系统整理. 所以我就出了这个整合合集,整合工作中除了保留原 ...
- python java混合编程_详解java调用python的几种用法(看这篇就够了)
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
- C++两个函数可以相互递归吗_[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进
[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...
- u盘无法复制文件进去_只需一招,禁止Windows复制文件到U盘,再也不用担心你的资料被拷走!...
现在,我们日常的生活和工作都是电脑全程陪伴,可以说是离不开电脑了. 也正是因为电脑的功能那么多,而且在保存资料方面,相比纸质资料来讲,确实有十分大的优势! 因此,有许多人都会将一些重要的个人资料或者是 ...
- php源码放入iis+mysql+php服务器打开出现乱码_安装了IIS和PHP,运行PHP文件却内部服务器错误...
如题,我按照步骤安装的应该没问题的,同学也是这样安装的就可以,我的却是500内部服务器错误用集成了Apache+PHP+MySQL+Zend+eAccelerator+PhpMyAdmin的e2php ...
- mac 电脑资源库文件夹_如何在Mac上找到您的资料库文件夹
mac 电脑资源库文件夹 When fixing problems on a Mac, sometimes you need to roll up your sleeves and directly ...
- mfc 监控文件操作_实战经验:使用CFileDialog实现多个文件选择
问题 最近需要实现文件选择的功能,要求是需要弹出系统标准的文件选择对话框,另外,允许用户选择多个文件. 解决方法 MFC中有一个类CFileDialog就是用来做这件事的,而且功能还挺丰富,今天只是使 ...
- hosts文件 端口_在Linux系统中使用Vim读写远程文件
大家好,我是良许. 今天我们讨论一个 Vim 使用技巧--用 Vim 读写远程文件.要实现这个目的,我们需要使用到一个叫 netrw.vim 的插件.从 Vim 7.x 开始,netrw.vim 就被 ...
最新文章
- linux学习笔记十四:安装SAMBA(Server Message Block)
- C++类class和结构体struct区别
- openstack API debug OpenstackEveryProject_CLI,curl_based
- 多线程不重复读取数据_别再犯错了,多线程访问同一个资源一定要上锁?
- java中原始数据文件的输入
- 画图板-- 中点算法画圆
- html 标签 r语言,从R中的字符串中删除html标签
- IOS中,在两个ViewController之间传值
- Linux 修改环境变量
- spark-dataframe与rdd的区别
- 18、Windows API 图形用户界面(2)
- solidworks迈迪设计宝_做非标机械设计必备的辅助工具,如米思米、怡合达、英科宇等...
- 爱看小说网源码全站带数据打包ThinkPHP内核小说网站源码
- 【操作系统】进程管理
- [从头读历史] 第262节 左传 [BC597至BC538]
- 【备读学术论文总览】研究方向论文清单
- 对话周傲英:数据库人的切肤之痛
- Nginx管理(二)
- Python语言的33个保留字(记得一定要收藏好哦)
- 基于JSP的汽车租赁管理系统的设计与实现
热门文章
- 个推通知栏修改_浙大一院五一劳动节放假通知!手机办住院手续!还有这些攻略不能错过!...
- 文本挖掘预处理流程总结(1)— 中文
- EOS 消息设计(3)并行处理之状态评估
- Hyperledger Fabric 智能合约实战 (2)软件安装Docker、 Docker-composer、go
- Hyperledger Fabric 链码(2) 接口
- [optee_os]-optee中的内核栈、中断栈、abort栈的定义
- java小程序死机_求解,刚写的小程序,一运行我机器就死机
- 内核和用户模式下进程与线程创建
- 软件调试学习笔记(七)—— 单步步入单步步过
- 1043 Is It a Binary Search Tree (25 分)【难度: 中 / 知识点: 构造二叉搜索树(BST) 】