13.4-“制作一款私有IAP串口下载小工具”之STM32的Bootloader设计说明

一、原理简要说明

从上一章可知,IAP更新程序的原理,就是在单片机flash中的划分出两个区域,分别叫做Bootloader区域和一个App区域。芯片上电启动的时候,会默认运行Bootloader,然后bootloader来做逻辑判断,bootloader会等待5s左右,如果在5s之内收到需要更新固件的命令,则进行固件更新,否则的话,判断芯片中是否已经有之前的可用app。如果有,跳转过去执行app。否则的话继续保持在“等待固件下载模式”。这就是bootloader的大概原理。

二、Bootloader逻辑说明

第一节简介重复了一次IAP烧写固件的原理。这节使用一个流程图来详细准确的描述一下,IAP的相关判断逻辑。如,下图所示:

在这里插入图片描述

三、编译生成的bin文件和hex文件,都可以使用IAP“烧录”到芯片中吗?

  1. 什么是Bin文件
    Bin文件是最纯粹的二进制机器代码, 是由C或C++编译成汇编,然后从汇编转换生成的二进制机器码。因此Bin文件就是芯片可以直接运行的程序。

  2. 什么是Hex文件
    全称为“INTEL HEX”,HEX文件是一个ASCII文本文件,文件中放满了一行一行的“Intel HEX格式”的标记文本。每一行包含一个HEX记录。记录是由多个代表机器码或常量数据的16进制数组成。HEX常用来储存要烧写到ROM或EPROM中的程序。大多数的烧写器支持HEX格式。(注意HEX文件包含程序要被下载到芯片中的具体位置)
    以上简介,翻译自“arm KEIL”对HEX格式的介绍。参考地址:http://www.keil.com/support/docs/1584/

  3. Bin文件与Hex文件的区别
    直接把Bin文件传输并烧写到芯片Flash即可运行。但HEX文件不行,HEX是一个文本文件,里面用标记符号记录程序的详情。方便阅读(二进制查看器和烧写器对被烧写程序的预览查看,就是用的HEX格式。如果用二进制显示,那么你看到的是大量的0101)并且可以包含除“程序”之外的额外信息。一般“下载器”可以使用Hex文件编程,其实是“下载器”对Hex文件做了解析,最终还是转换为Bin文件的格式,然后烧写到了芯片的Flash中。
    “下载器”使用Hex文件的原因是,Hex文件包含“程序”之外的信息,比如“程序烧写地址”。这样就避免了让用户手工输入这些额外的信息。当你用“下载器”下载Bin文件的时候,下载软件有个“烧写地址”的输入框,就是要你指定要把这个bin文件下载到芯片的哪个Flash地址。(因为bin文件本身不包含这个信息)。

  4. 使用IAP下载固件,使用Bin还是Hex文件
    结合IAP的原理和以上的分析可知,IAP需要一种直接传递到芯片即可运行的“程序”,因此要实现IAP下载你只能选择Bin文件格式。

四、怎样完成“烧写固件”的工作(Flash操作)

“把程序烧写(下载)到芯片中”,从始至终都感觉这是一个很“神奇”的事情。现在终于明白了“烧写”程序到底怎么一回事了。原来,本质上就是把“BIN文件”复制粘贴到芯片Flash的指定地址中。也就是说,你只要实现对芯片的内部Flash读写函数。你就可以实现“烧写程序”了。

  1. 对STM32芯片内部Flash的介绍
    (中文版)STM32根据FLASH主存储块容量、页面的不同,系统存储器的不同,可以分为以下几个类别。
    小容量产品主存储块1-32KB,每页1KB。系统存储器2KB。
    中容量产品主存储块64-128KB,每页1KB。系统存储器2KB。
    大容量产品主存储块256KB以上,每页2KB。系统存储器2KB。
    互联型产品主存储块256KB以上,每页2KB。系统存储器18KB。
    (英文版)STM32有4种Flash module organization,分别是:
    low-density devices(32KB,1KB/page)、
    medium-density devices(128KB,1KB/page)、
    high-density devices(512KB,2KB/page)、
    connectivity line devices(256KB,2KB/page)、
    XL-density(devices(1M,2KB/page)。
    本小

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值