IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32的烧录和Hex/bin烧录文件解析 -> 正文阅读

[嵌入式]STM32的烧录和Hex/bin烧录文件解析

一、STM32的烧录

1. 用IDE工具烧录

????????可以配置IAR或Keil,用IDE下载。硬件工具需要使用ST-Link(分为SWD或Jtag方式,SWD连线少,比较常用于调试)或J-Link连接到板子的相应引脚(详见Jtag引脚定义)。需要注意的是ST-Link烧录盒分为隔离和非隔离,如果板子必须断电烧录,那么用非隔离的烧录(这个时候烧录器也会带电让STM32运行,某些DSP需要单独供电),如果板子需要上电烧录或在线调试,一般使用带隔离的ST-Link或JLink。

2. 用ST-LINK Utility工具烧录

????????下载HEX文件,设置好地址后,可以下载app(如果是STM32,那么起始地址一般是0x0800xxxx)和bootloader(如果是STM32,那么起始地址一般是0x08000000)。这个工具大概作用总结如下:

  • 擦除flash相应区域
  • 根据地址设置,可以分别烧录app或bootloader到flash,如果app和bootloader合成为一个hex,那么可以把地址设置为0x08000000,一次烧录app和bootloader到flash的两个区域。
  • 可以作为量产PCBA板的烧录工具
  • 如果板子上STM32的flash没有被添加保护,可以用它读出flash里面的所有数据,然后生成一个hex文件。
  • 可以读取STM32芯片的型号、ID、版本等信息
  • 此软件包含了ST-Link驱动,安装了它,像Keil 或IAR在线调试下载等就不需要额外安装驱动了。? ? ? ??

3. 在线升级

????????这种方式只能更新app,不能更新bootloader,具体方法是在程序运行的时候,如果在线升级被触发,那么把一个变量设置为烧录模式(这个变量存放于ram某个位置,一般比较末尾的位置,并在代码中使用相应关键字限定次变量在内存中不会被设置为0,即使STM32被复位)。然后不喂狗,让STM32复位进入bootloder,在bootloader代码中读取上面描述的ram地址的变量,决定进入烧录模式还是调到app入口地址处运行app程序。

二、Hex/bin烧录文件解析

1. Hex/bin文件如何生成

? ? ? ? 如果是IAR,那么可以在output 处设置选择生成hex还是bin文件。如果是Keil,生成Hex文件用同样的设置方法,但是生成bin文件需要借助相应工具。

2. Hex文件解析

? ? ? Intel HEX 文件是由一行行符合Intel HEX 文件格式的文本所 构 成的ASCII 文本文件。在Intel HEX 文件中,每一行包含一 个 HEX 记录 。 这 些 记录 由 对应 机器 语 言 码 和/ 或常量 数 据的十六 进 制 编码数 字 组 成。Intel HEX 文件通常用于 传输将 被存于ROM 或者EPROM 中的程序和 数 据。大多 数 EPROM 编 程器或模 拟器使用Intel HEX 文件。 这里说的Hex文件单指STM32的固件,以.hex为后缀,比如下面为部分Hex文件的内容:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????图一

?????????整个文件以行为单位,每一行为一个记录。每行以冒号开头,内容全部为16进制码,2个 ASCII码字符表示1个Hex字节。

1、每行以冒号开头,":" (0X3a),每一行结尾都是以回车换行结尾((0x0D,0x0A)
2、第1字节0x02表示数据区的字节个数,用ASCII表示就是4个ASCII字符。
3、第2、3字节0x0000 表示偏移地址或无用填0
4、第4字节0x04表示本行记录的类型
'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
'01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
'02' Extended Segment Address Record: 用来标识扩展段地址的记录
'03' Start Segment Address Record: 段地址 STM32不用
'04' Extended Linear Address Record: 用来标识扩展线性地址
'05' Start Linear Address Record: 程序启动运行的地址
5、5-6字节表示数据区
6、最后1个字节是校验字节。所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和
   如何用notepad++打开hex文件,如果每一个记录的最后一个字节即校验和不在notepad中显示为绿色,那么代表校验失败。

? ? ? ?下面是一个Hex文件的例子,注意如果hex文件比较小,可能没有第二个04类型的行用来标识第二个扩展线性地址(如下图中的0x0806高地址)。

?????????????????????????????????????????????????图二

? ? ? ? 另外,05类型的行虽然对烧录程序无用,但是它也表示了开始线性地址记录,意思应该就是第一个函数的入口地址,图一中05类型行的地址0x08000239即对应的HEX文件对应的map文件中如下入口地址,也就是系统复位后,此函数位于__main函数之后(__main函数初始化堆栈,把未初始化的全局变量或静态变量清零,调用main函数等)

3.? bin文件解析

?????????BIN文件只有纯粹的数据(代码)信息,即图一Hex文件中黑色数据区(没有地址、校验等信息)。它并不包含地址信息,所以烧写BIN时就需要指定烧写地址。由于不带地址等信息,所以比上面描述的hex文件内存占用小一些。

? ? ? ? 除开了上面描述的在线烧录bin文件外(bootloader中代码处理,一般上位机使用ymoden协议),还可以使用JLinkARM工具JFlash烧录bin文件到STM32。

? ? ? ? 下图是bin文件用ultraedit打开,由于里面只包含程序数据,没有地址校验等信息,其内容对应图一中数据部分,可以与图一数据部分的头尾对比,会发现是一模一样的。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图三

? ? ? ? 另外需要注意的是,图三种最左列的地址偏移和冒号都是ultraedit加进去的,这个偏移地址与图一中的偏移地址也是一一对应的。? ?

????????如果上位机需要解析bin文件,那么可以遵循这些特性,比如bin文件中除开最后一行外,其他行字节熟练一般都为16个字节,而且行与行之间地址偏移0x10,根据地址偏移(STM32的flash起始地址一般为0x08000000)可以找到具体地址对应的数据。

? ? ? ? 比如两个bin文件,我们可以在相同特定地址处存放不同内容(比如icf文件指定某个地址段section,然后在代码中用@section的方式指定变量存放绝对地址),其他所有地址内容都相同,通过这样的方式,让上位机可以区分开这两个bin,从而实现不同的用途。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:22:07  更:2022-03-17 22:23:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:37:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码