1. 引言
今天看串口的 IAP ,平时我们通过 JTAG 等工具下载的都是 HEX 文件,都没有思考一下 HEX 的文件组成。而串口 IAP 下载的是 BIN 文件,刚好在这里区分学习一下。
我们平时烧写 HEX 文件是不需要设置地址信息的,因为已经包含在文件里面,而使用 BIN 烧写,需要在程序中指定地址。
2. 简述
Intel hex 文件是记录文本行的 ASCII 文本文件,在 Intel HEX 文件中,每一行是一个 HEX 记录,由十六进制数组成的机器码或者数据常量。Intel HEX 文件经常被用于将程序或数据传输存储到 ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。
2.1 HEX文件
HEX 文件是包括地址信息的,而BIN文件格式只包括了数据本身。在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN文件的时候,用户是一定需要指定地址信息的。
2.2 BIN文件
对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二进制数据。
2.3 HEX文件格式
HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。记录的基本格式为:
RECTYP类型:
eg:
第一条:
RECLEN:02;OFFSET:0000;RECTYP:04;INFO or DATA:0000;CHKUSM:FA
第二条:
RECLEN:10;OFFSET:0000;RECTYP:00;INFO or DATA:982100203501000021920000A5920000;CHKUSM:F7
以此类推
最后一条,表示文件末尾::00000001FF
2.5 BIN文件格式
可以看到,BIN文件的数据与 HEX 格式数据的数据段是一一对应的。
2.6 HEX与BIN文件的大小
HEX 文件是用 ASCII 来表示二进制的数值。
例如:一般 8BIT 的二进制数值0x3F,用ASCII来表示就需要分别表示字符’3’ 和字符’F’,每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。
对一个BIN文件而言,文件的大小就是文件包括的数据的实际大小。而对HEX文件而言,看到的文件大小并不是实际的数据的大小:一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。
2.7 校验和计算
计算从(0x3a–":")以后的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出的值就是此行校验码。
eg:04000005000000C92E
0x100-(04+00+00+05+00+00+00+C9) = 2E
关键字:STM32 HEX文件 BIN文件格式
引用地址:
STM32学习笔记一一HEX文件和BIN文件格式
推荐阅读最新更新时间:2024-03-16 16:22
STM32裸机编程的基础知识(2)
在前一篇文章中我们已经学习到可以通过直接访问存储地址来读写外设寄存器,下面复习下将 GPIO A3 设为输出模式的代码: * (volatile uint32_t *) (0x40020000 + 0) &= ~(3 6); // CLear bit range 6-7 * (volatile uint32_t *) (0x40020000 + 0) |= 1 6; // Set bit range 6-7 to 1 这段代码有些诡秘,如果不加以注释,很难理解。我们可以把这段代码重写成更易读的形式,方法就是用一个包含 32 位域的结构体来表示整个外设。我们来看一下数据手册 8.4 节中描述的 GPIO 外设的寄存器
[单片机]
STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法
1. 前言 bxCAN是STM32系列最稳定的IP核之一,无论有哪个新型号出来,这个IP核基本未变,可见这个IP核的设计是相当成熟的。本文所讲述的内容属于这个IP核的一部分,掌握了本文所讲内容,就可以很方便地适用于所有STM32系列中包含bxCAN外设的型号。有关bxCAN的过滤器部分的内容在参考手册中往往看得“不甚明白“,本文就过滤器的4种工作模式进行详细讲解并使用具体的代码进行演示,这些代码都进行过实测验证通过的,希望能给读者对于bxCAN过滤器有一个清晰的理解。 2. 准备工作 2.1. 为什么要过滤器? 在这里,我们可以将CAN总线看成一个广播消息通道,上面传输着各种类型的消息,好比报纸,有体育新闻,财经新闻,政治新
[单片机]
STM32定时器初始化就进中断问题
在用到STM32定时器的更新中断时,发现有些情形下只要开启定时器就立即进入一次中断。准确说,只要使能更新中断允许位就立即响应一次更新中断【当然前提是相关NVIC也已经配置好】。换言之,只要使能了相关定时器更新中断,不管你定时间隔多长甚至不在乎你是否启动了相关定时器,它都会立即进入一次定时器更新中断服务程序。 以STM32F051芯片为例,做了几种不同顺序的组合测试。根据测试发现,的确有些情况下一运行TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); 【即使能更新中断】就立即进入更新中断服务程序。当然后面的中断都是正常的。 老实说,这个问题比较容易忽视,有些情况下也无关紧要,但有些情况可能会给应
[单片机]
STM32 清读保护
stm32写错程序了,那么你的程序里面又是自动写读保护的,而且你的管教又是接死,不能更改boot模式,这种情况下,以前我是换一个芯片,后来看到网上有人用ram运行程序方法解决。 keil中,程序 int main(void) { FLASH_Unlock(); FLASH_ReadOutProtection(DISABLE); while(1); } 在Target页面设置rom的地方,有个irom的本来设置指向flash的0x80000000的,改为指向ram,0x20000000。 当然ram的指向也要修改一下,不能0x20000000开始了,改了0x20001000开始吧。 在debug页面下,在init
[单片机]
意法半导体二代STM32微处理器推动智能边缘发展,提高处理性能和工业韧性
新STM32MP2 MPUs搭载64位处理器和边缘 AI加速器 与生俱来的速度、安全性和可靠性 依托STM32生态系统,加快应用开发,安全配置网络 2024年3月12日,中国 -- 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST)发布了新一代的STM32MP2系列工业级微处理器 (MPUs),以推动智能工厂、智能医疗、智能楼宇和智能基础设施等领域未来的发展。 数字化转型席卷全球,它推动企业提高生产效率、改善医疗服务质量,加强楼宇、公用设施和交通网络的安全和能源管理。数字化的核心赋能技术包括云计算、数据分析、人工智能 (AI)和物联网 (IoT)
[单片机]
STM32微控制器的可靠串口通信技术研究
引言 STM32F107微控制器是意法半导体推出的高性能32位以CortexM3为内核的面向工业控制的处理器。该处理器内部通过一个多层的AHB总线构架相连,其内部集成了丰富的外设,如USART、SPI、ADC等等。另外,STM32F107处理器还提供多达80个通用I/O接口,如此丰富的资源使STM32系列微控制器能够很理想地用于工业控制。本文设计出一种基于STM32F107的可靠串口通信设计方案,可以完成STM32F107处理器和PC机以及其他串口之间的可靠通信 。 1 串口通信的实现 1.1 硬件设计 STM32F107处理器的通用同步异步通信单元(USART)提供 5个独立的异步串行接口,并且都能工作在中断和DMA模式
[单片机]
STM32进阶-串口及蓝牙通信 控制开发板硬件详细步骤-USART1/2
处理器与外部通信概述 串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少 -缺点:速度相对较慢 并行通信 -传输原理:数据各个位同时传输。 -优点:速度快 -缺点:占用引脚资源多 串口作为 MCU 的重要外部接口,基本上所有的 MCU 都会带有串口。而STM32F407ZET6 最多可提供 6 路串口。 通信按传输方向以下几种方式: a.单工: 数据传输只支持数据在一个方向上传输(收音机、遥控器) b.半双工: 允许数据在两个方向上传输,但是,在某一时刻,只允许数 据在一个方向上传输,它实际上是一种切换方向的单工通信;(对讲机) c.全双工: 允许数据同时在两个方向上传输,因此,全双工通信是两个
[单片机]
基于STM32的SPI基本介绍
STM32---SPI(DMA)通信的总结(库函数操作) 本文主要由7项内容介绍SPI并会在最后附上测试源码供参考: 1. SPI的通信协议 2. SPI通信初始化(以STM32为从机,LPC1114为主机介绍) 3. SPI的读写函数 4. SPI的中断配置 5. SPI的SMA操作 6. 测试源码 7. 易出现的问题及原因和解决方法 一、 SPI的通信协议 SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口一般由4根线组成,CS片选信号(有的单片机上也称为N
[单片机]