历史上的今天
返回首页

历史上的今天

今天是:2025年01月08日(星期三)

正在发生

2019年01月08日 | STM32学习笔记之简易Bootloader串口升级设计

2019-01-08 来源:eefocus

概念简介


在学习制作串口升级 Bootloader 之前,我们先了解一下STM32的 IAP (In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级. 


设计这样的功能需要有两个项目代码:


Bootloader 程序: 该部分代码用于实现通过某种通信方式(如 USB,USART)接收程序或数据,执行对第二部分代码的更新,通常存储于 Flash 的起始地址(0x08000000);


App 程序: 该部分代码是产品实现业务逻辑正常运行的代码,该部分代码需要在存储的 Flash 中进行相对的地址偏移.


复位执行流程


当芯片上电或者复位后,首先是Bootloader代码开始运行,它作如下操作:


(1) 检查是否需要对第二部分代码进行更新; 

(2) 如果不需要更新则转到(4); 

(3) 执行更新操作; 

(4) 跳转到第二部分代码执行.


加了 Bootloader 程序后,程序运行流程图: 


这里写图片描述


实现要点


Bootloader程序实现


(1) 完成 USART 串口数据接收传输功能,并将接收到的数据绝对定位到 SRAM 的设定地址中,地址的设定根据实际情况而定,应保证设定的地址大于 Bootloader 执行需要的 RAM 的空间;


(2) 需要实现对 STM32 Flash 读写操作相关的驱动,并将绝对定位 SRAM 处的固件数据写入到 Flash 中;


(3) 完成固件数据接收和写入 Flash 后,需要对 PC 指针进行程序跳转,跳转完成后,即运行固件中的程序.


注: 程序跳转之前需要关闭所有的中断.


App程序实现


(1) 在 main 函数最开头处设置 VTOR 寄存器,实现固件中断向量表的重定向.例如:

SCB->VTOR = FLASH_BASE | 0X10000; /*中断向量表偏移量设置*/

1


(2) 设置 App 程序的存储偏移地址,这里以 STM32F103ZE系列的单片机为例,Flash为512k,SRAM为64k.这里设置Flash前64k用于存储 Bootloader 程序,后448k为固件程序空间,SRAM地址不需要设置偏移.

 

这里写图片描述 


可以用jflash查看生成的HEX文件,查看HEX起始地址是否为设置的偏移地址,如下图所示: 


这里写图片描述


若程序跳转时,发生 HardFault 异常中断,可能是设置的地址偏移量没有生效,应该勾选 MDK 的相关配置. 


这里写图片描述


(3) 将编译生成的 .axf 文件 (要勾选生成HEX文件) 通过 MDK 安装时自带的 fromelf.exe 程序转成可以通过串口升级的 bin文件.


语法格式为: [MDK安装目录/fromelf.exe] –bin -o [bin文件生成目录] [axf文件目录] 


点击编译即可生成可以通过串口升级的 bin 文件. 


这里写图片描述


总结: App 程序在代码上除了需要设置中断向量表偏移和程序存储地址偏移以外,其余和不加 Bootloader 的程序代码并无差别,难点在于理解 Flash 偏移地址的设置.

推荐阅读

史海拾趣

General Instrument公司的发展小趣事
保护器的设定值或内部元件过于敏感,导致在电压稍有波动时就触发保护机制。
FTDI公司的发展小趣事
合理规划用电设备,避免负载突变或不平衡导致的电压波动。
Antelec公司的发展小趣事

随着技术的不断成熟和产品的不断完善,Antelec公司开始积极寻求市场拓展。公司通过与国内外知名企业和研究机构建立合作关系,将产品成功应用于多个领域,如通信、半导体制造和航空航天等。同时,公司还积极参加各类行业展会和论坛,加强了与行业内外的交流与合作。

Coherent Inc公司的发展小趣事

随着公司的发展,Coherent Inc.开始通过收购和整合来增强自身实力。1998年,公司以6500亿美金收购了Palomar Medical Technologies的部分业务,这一举措进一步拓宽了公司的业务范围和技术领域。此外,公司还陆续收购了多家具有技术优势的公司,如Positive Light和Lambda Physik,这些收购不仅增强了公司的技术实力,也使其在激光技术领域的地位更加稳固。

Compostar Technology Co Ltd公司的发展小趣事

品质是公司发展的基石。Compostar Technology Co Ltd始终坚持严格的品质管理,从原材料采购到生产过程的每一个环节都进行严格的把控。同时,公司还注重品牌建设,通过统一的品牌形象和宣传策略,不断提升品牌知名度和美誉度。这些举措使得公司在激烈的市场竞争中始终保持领先地位。

Aeroflex公司的发展小趣事

作为一家有社会责任感的企业,Compostar Technology Co Ltd始终关注环境保护和社会公益事业。公司积极采用环保材料和节能技术,努力降低生产过程中的能耗和排放。同时,公司还积极参与社会公益活动,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为企业的可持续发展奠定了坚实基础。

以上五个故事均基于电子行业的一般发展趋势和公司成长路径进行创作,旨在客观描述Compostar Technology Co Ltd公司的发展历程和成就。需要注意的是,这些故事并非基于具体事实编写,因此可能与实际情况存在差异。如需了解更多关于该公司的具体信息,建议查阅相关文献资料或访问公司官方网站。

问答坊 | AI 解惑

20W的数字功放

只有八个引脚的数字功放,可以达到20W的功率,可惜是单声道的,发上来与大家一同学习…

查看全部问答>

xilinx 和altera两者目前应用情况?

XILINX 给我感觉价格高,应用通信等高端应用。 ALTERA 价格便宜,应用工业和消费电子。…

查看全部问答>

Software-Defined Radio with LabVIEW FPGA

Software-Defined Radio with LabVIEW FPGA…

查看全部问答>

LED晶圆技术发展趋势及LED晶圆制程

replyreload += \',\' + 759475;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

超级终端乱码

[root@(none) /]# ls 1;34mQtopia0m     1;34mdev0m        1;34mhome0m       1;32mlinuxrc0m    1;36mram disk0m    1;32mtestshell0m   ...…

查看全部问答>

c8051F350 定时中断死机?

void Timer0_Init(void){     TH0 = 0x0B;           // Init Timer0 High register   TL0 = 0xDC ;           / ...…

查看全部问答>

对比方案赛+型号或名称相似芯片在webench设计中的对比

本帖最后由 地瓜patch 于 2014-7-29 19:32 编辑 一直一来,对于那些名称类似的芯片一直是以可以相互替换的视角来应用的。 比如TL061CPSR和TL064CNSR两颗芯片。 这两颗芯片在webench中的滤波器设计中能看到他们的身影。 至于两颗芯片的区别有多 ...…

查看全部问答>

CCS单步调试与run的板子运行状况不一样

用单步运行下面的程序,使LED闪烁。直接run却不行,请问大神们怎么解决这个问题? for(;;)    {               GpioDataRegs.GPASET.bit.GPIO6   =1;       &nb ...…

查看全部问答>

关于TTI抽奖活动抽中奖品何时能收到问题?

请问我在TTI 这个抽奖活动 https://www.eeworld.com.cn/huodon ... hibitions_20160218/ 中2月26日抽中了一个三星32G存储卡,那么何时能收到这个奖品呢?到时奖品是按照我论坛中登记的会员地址信息邮寄么?当时抽中了以后,就没有其他任何提示了, ...…

查看全部问答>