CN107402776A - 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 - Google Patents
一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 Download PDFInfo
- Publication number
- CN107402776A CN107402776A CN201610341999.5A CN201610341999A CN107402776A CN 107402776 A CN107402776 A CN 107402776A CN 201610341999 A CN201610341999 A CN 201610341999A CN 107402776 A CN107402776 A CN 107402776A
- Authority
- CN
- China
- Prior art keywords
- firmware
- stm32
- bluetooth
- data
- upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44573—Execute-in-place [XIP]
Abstract
一种基于蓝牙4.0的手机无线升级stm32控制器固件方法所属电子信息领域,主要解决stm32控制器无线升级,以及最新稳定固件的普及发布问题。这种方法主要采用蓝牙4.0无线串口透传协议,利用手机APP无线升级stm32内部应用程序。stm32的内部Flash存放有Bootloader程序,用于启动引导管理,收取蓝牙指令,解析蓝牙传输的固件数据。固件的发布则是将最新固件的bin文件以资源文件形式打包到手机APP中,将手机APP发布到软件应用商场,及时通知用户更新安装最新的手机APP,然后进行stm32的固件无线升级。
Description
技术领域
本发明是一种手机蓝牙无线升级控制器固件的方法,主要用于解决无法通过有线或者网络升级控制器固件问题,属于电子信息领域。
背景技术
基于stm32单片机设计的控制器电路有多种固件下载方法,包括USB,串口,JTAG(联合测试行动组),SWD(串行单线调试)等,这些下载固件的方法都是通过有线连接来实现的。当发现原有的固件有Bug时,工程师可以通过修改源代码生成新的固件,再次通过以上几种下载方式,将新的固件下载到stm32控制器中,从而实现Bug的修复,以及固件的升级。
蓝牙4.0串口通讯是一种无线串口通讯方案。两个蓝牙4.0低功耗设备通过配对连接后,可以实现数据的传输。由于蓝牙4.0低功耗设备本身的功能限制,设备之间通过串口一次无线透传发送的数据量最大为20字节,因此通过蓝牙4.0串口无线透传可以实现简短控制指令的传送,如果想实现大数据的传输,必须对大数据进行分割,然后采取分包发送的方式得以实现。
stm32固件下载方式中串口下载使用最为普遍。串口下载又分为ISP(在板级编程),ICP(在电路编程),IAP(在应用编程)下载,现在都是通过有线的方式连接stm32和电脑的串口,从而使用电脑串口对stm32进行固件的下载升级。现有的stm32固件升级方式都是通过有线连接进行,对固件升级造成了很多的麻烦。产品发布以后用户不能得到更好的产品体验。智能手机的普及以及蓝牙4.0设备的普及,使得通过蓝牙4.0串口透传对stm32控制器进行固件升级变得更加便捷。
发明目的
本发明的目的就是提供一种无线升级固件方法。stm32控制器固件有线升级方式,用户有操作难度,可能还需要拆卸产品,同时工程师也不便于把新的固件及时分发到每位客户手中。通过蓝牙4.0无线升级固件,只需要工程师把新的固件作为资源文件打包在手机APP(应用程序)中,用户就能用手机APP简单方便的升级产品固件,同时也避免了对产品的拆卸升级。
技术方案
本发明的目的是通过如下措施来达到:
1)stm32的Flash(内部闪存)的起始地址是0X08000000,程序文件从此地址开始写入,控制器复位后,stm32会先从0X08000004地址取出复位中断向量地址,然后跳转到复位中断服务程序,执行完后跳转到main(主)函数,如果在执行main函数时收到中断请求,stm32会将指针重新调整到中断向量表处,执行完中断后再次返回main函数。将stm32的Flash分为两部分,第一部分用于存放bootloader(引导程序),第二部分用于存放应用程序。对stm32固件的升级,主要是擦除第二部分用于存放应用程序的Flash,将新的固件写入到Flash的第二部分。Flash第一部分的引导程序通过电脑串口下载到stm32,可以使用ISP或者JTAG两种方式下载。而Flash的第二部分程序可以通过手机APP进行蓝牙无线下载,也可以直接使用电脑将应用程序的bin文件发送到Flash第二部分的指定地址。
2)Flash第一部分存放的引导程序用于检测是否需要升级固件。如果需要升级,就将通过蓝牙4.0串口透传接收到的固件数据写入到SRAM(随机存储器)中,接收完成后就将暂时存放于SRAM中的固件写入到Flash的第二部分,实现固件升级。如果不需要升级,那么就直接执行Flash第二部分现有的应用程序。
3)通过蓝牙4.0升级固件,蓝牙4.0在低功耗模式下一次传输最大数据长度为20字节,所以我们将更新升级的固件进行分包发送。在发送固件数据帧之前先发送开始数据帧,
数据包头 | 开始标志 | 数据包尾 |
FF AA | 00 | EE |
数据包都是以16进制表示,数据包的开头是0XFF,0XAA(16进制表示),开始标志是0X00,数据结尾标志是0XEE,这一帧数据是让stm32做好准备,下一帧数据就会接收到固件数据帧。
4)固件都是以bin(二进制)形式存放于手机APP的资源文件,手机蓝牙和stm32的蓝牙设备连接成功后,如果需要升级固件,手机APP就会将固件分为若干份小数据,以如下形式发送
数据包头 | 数据长度 | 固件数据 | 数据包尾 |
FF AA | XX | XX | EE |
数据包同样都是以16进制表示,数据包的开头是0XFF,0XAA(16进制表示),数据的长度是固件数据包的长度。固件数据就是把固件分为若干份之后的一部分数据。数据包的结尾是0XEE(16进制表示)。固件的所有数据包会按顺序依次发送。数据包头、数据长度、固件数据和数据包尾的组合为一帧完整固件数据。这一帧数据的总长度小于20字节。stm32在接收到固件数据后,将有效的固件数据部分存入SRAM。
5)一直接收固件数据帧,直到接收到手机端发送的结束数据帧,如下
数据包头 | 结束标志 | 数据包尾 |
FF AA | FF | EE |
此时stm32就将手机APP通过蓝牙4.0无线传送的固件接收完毕,同时将暂时存放于SRAM的新固件写入到stm32Flash的第二部分。
6)重新复位启动stm32,stm32会再次检查是否需要更新固件,如果不需要,那么stm32将会直接运行新的固件,也就实现了固件的升级。
7)如果需要升级,将会再次接收手机APP通过蓝牙4.0发送的固件数据。stm32每次复位启动都会按照这样的顺序检查判断是否需要更新升级固件,不需要则执行Flash第二部分的应用程序,需要升级则会接收手机端发送的固件数据,对第二部分Flash进行擦除重写。
8)以上是软件实现stm32固件升级的具体方案流程,蓝牙4.0无线升级stm32固件,同时需要硬件设备的支持。手机的蓝牙设备必须是蓝牙4.0设备,并且支持蓝牙4.0无线串口透传协议。stm32的下载固件串口必须与蓝牙4.0无线串口透传模块交叉连接,便于接收蓝牙设备收到的数据。具备上述硬件条件后才能实现stm32蓝牙4.0无线升级固件的效果。
有益效果:本发明提出了一种基于蓝牙4.0手机APP无线更新升级stm32固件的方法,主要用于stm32固件升级问题,通过使用本发明中提出的方法可以实现无线便捷升级stm32固件的效果,使stm32的固件能保持最新最稳定的版本。用有线的方式更新升级stm32,可能需要拆卸设备,或者工程师也不能及时将最新最稳定版本的固件分发到每位用户手中,即使分发出最新版本的固件,对于升级stm32的固件也有一定的技术要求,而通过手机APP升级stm32固件,只需用户会使用手机连接蓝牙设备,就能轻易的升级stm32的固件
附图说明
图1是stm32内部芯片程序存储以及运行结构图。将stm32的内部Flash分为两大部分,第一部分存放Bootloader程序用于监测判断是否需要升级固件,需要升级就将蓝牙4.0串口接收的固件数据存储于sram,接收完毕后将存于sram的固件写入第二部分Flash;无需升级则直接运行Flash第二部分程序。Flash第二部分专门用于存放应用程序。
图2是stm32固件升级流程图。具体展示stm32从启动到固件升级,最终到应用程序运行的逻辑关系流程。
图3是本发明应用场景,从手机无线升级是本发明实现的效果,现有的升级方式是从PC端进行有线升级固件。
具体实施方式
为了方便描述,我们假设有如下应用实例:
一款使用stm32为主芯片的控制器(同时搭载蓝牙4.0串口透传模块)销往世界各地,而且控制器封闭在大型设备的内部。使用过程中设备出现问题,经检测发现,控制器内部程序存在漏洞,需要重新升级控制器固件,
其具体的实施方案为:
一、出厂的stm32控制器设备搭载了蓝牙4.0串口透传模块,蓝牙模块的串口与stm32控制器的串口下载固件接口交叉连接;
二、将Bootloader程序通过JTAG或者ISP方式下载到stm32的Flash;
三、通过手机APP,将应用程序的bin文件发送到stm32,即进行IAP下载。发送bin文件前,长按控制器外部按键,复位stm32控制器,触发按键中断进入固件升级模式,接收蓝牙4.0的固件数据,接收完成后重启复位;
四、经过以上处理,完成出厂固件的烧写。
五、由于发现固件存在漏洞,软件工程师将漏洞修复后,生成新的固件bin文件。
六、将新的固件bin文件以资源文件的形式打包到手机APP中,并在手机APP应用商城发布新的手机APP,通知所有用户有新的升级固件。
七、用户下载安装新的手机APP后,连接手机与stm32的蓝牙,长按stm32升级按钮,再复位stm32,就可以通过手机蓝牙对stm32进行固件升级。
八、固件升级完毕后,复位重启,stm32控制器的漏洞得以修复,运行最新的稳定固件。
Claims (3)
1.一种无线升级控制器固件方法,其特征在于,应用于手机升级stm32的内部应用程序,所述无线升级为:基于蓝牙4.0的无线串口透传协议;所述控制器包括:使用stm32为主控芯片的控制器。
2.根据权利要求1所述的无线升级控制器固件方法,其特征是:无线通讯方式是蓝牙4.0,并且手机系统支持蓝牙4.0无线串口透传协议,蓝牙配对连接后将固件bin文件按照:数据包头+数据长度+固件数据+数据包尾的形式分包发送到stm32控制器,每帧数据包总长度小于20字节。
3.根据权利要求1所述的控制器,其特征是,使用stm32为主控芯片,stm32内部Flash存放有用于固件升级判断检测的Bootloader程序,Bootloader程序能够解析蓝牙接收到的固件数据,并将固件数据存放于stm32的sram,固件升级完毕后将解析到的固件数据写入stm32的Flash应用程序部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610341999.5A CN107402776A (zh) | 2016-05-20 | 2016-05-20 | 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610341999.5A CN107402776A (zh) | 2016-05-20 | 2016-05-20 | 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107402776A true CN107402776A (zh) | 2017-11-28 |
Family
ID=60389253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610341999.5A Pending CN107402776A (zh) | 2016-05-20 | 2016-05-20 | 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107402776A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415717A (zh) * | 2018-03-22 | 2018-08-17 | 南京尤尼泰信息科技有限公司 | 一种zynqsoc固件升级方法及升级装置 |
CN109657504A (zh) * | 2018-12-12 | 2019-04-19 | 深圳忆联信息系统有限公司 | 芯片与固件的绑定方法、装置、计算机设备及存储介质 |
CN109803466A (zh) * | 2019-01-21 | 2019-05-24 | 广州达森灯光股份有限公司 | 一种手机app无线升级dmx灯具的系统 |
CN109889368A (zh) * | 2019-01-07 | 2019-06-14 | 浙江工业大学 | 一种基于stm32控制器的gprs远程升级方法 |
CN110096293A (zh) * | 2019-04-30 | 2019-08-06 | 上海睿赛德电子科技有限公司 | 一种基于STM32具有OTA升级功能的通用Bootloader实现方法 |
CN110727449A (zh) * | 2019-09-30 | 2020-01-24 | 中国船舶重工集团公司第七0七研究所 | 基于中继无线通讯链路的陀螺灵敏部控制器程序更新装置 |
CN110750281A (zh) * | 2019-09-30 | 2020-02-04 | 中国船舶重工集团公司第七0七研究所 | 基于二级无线通讯链路的陀螺灵敏部控制器程序更新装置 |
CN111078246A (zh) * | 2019-10-15 | 2020-04-28 | 苏州斯普锐智能系统有限公司 | 一种蓝牙扫描设备的软件配置系统及方法 |
CN112241161A (zh) * | 2020-10-22 | 2021-01-19 | 贝思特门机(嘉兴)有限公司 | 一种门机控制器软件升级方式 |
CN113238789A (zh) * | 2021-05-27 | 2021-08-10 | 闻泰通讯股份有限公司 | 电子设备及其固件升级方法、装置和计算机可读存储介质 |
WO2022143295A1 (zh) * | 2021-01-04 | 2022-07-07 | 展讯通信(上海)有限公司 | 固件升级方法和相关设备 |
FR3125615A1 (fr) * | 2021-07-26 | 2023-01-27 | STMicroelectronics (Grand Ouest) SAS | Systeme sur puce comprenant un logiciel d’installation de programmes |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763279A (zh) * | 2010-01-15 | 2010-06-30 | 上海维宏电子科技有限公司 | 一种BootLoader架构设计方法 |
CN104035793A (zh) * | 2014-05-22 | 2014-09-10 | 浙江大学 | 基于单片机的在应用无线编程方法 |
CN105204899A (zh) * | 2015-09-17 | 2015-12-30 | 浪潮软件集团有限公司 | 一种基于网络的单片机固件升级方法的实现 |
CN106020491A (zh) * | 2016-06-01 | 2016-10-12 | 池州学院 | 一种智能化科技手套 |
US20160299753A1 (en) * | 2015-04-09 | 2016-10-13 | Rex Poway Tseng | Firmware upgrading method for bluetooth electronic scales |
-
2016
- 2016-05-20 CN CN201610341999.5A patent/CN107402776A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763279A (zh) * | 2010-01-15 | 2010-06-30 | 上海维宏电子科技有限公司 | 一种BootLoader架构设计方法 |
CN104035793A (zh) * | 2014-05-22 | 2014-09-10 | 浙江大学 | 基于单片机的在应用无线编程方法 |
US20160299753A1 (en) * | 2015-04-09 | 2016-10-13 | Rex Poway Tseng | Firmware upgrading method for bluetooth electronic scales |
CN105204899A (zh) * | 2015-09-17 | 2015-12-30 | 浪潮软件集团有限公司 | 一种基于网络的单片机固件升级方法的实现 |
CN106020491A (zh) * | 2016-06-01 | 2016-10-12 | 池州学院 | 一种智能化科技手套 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415717A (zh) * | 2018-03-22 | 2018-08-17 | 南京尤尼泰信息科技有限公司 | 一种zynqsoc固件升级方法及升级装置 |
CN108415717B (zh) * | 2018-03-22 | 2021-03-23 | 南京尤尼泰信息科技有限公司 | 一种zynq soc固件升级方法及升级装置 |
CN109657504B (zh) * | 2018-12-12 | 2020-09-22 | 深圳忆联信息系统有限公司 | 芯片与固件的绑定方法、装置、计算机设备及存储介质 |
CN109657504A (zh) * | 2018-12-12 | 2019-04-19 | 深圳忆联信息系统有限公司 | 芯片与固件的绑定方法、装置、计算机设备及存储介质 |
CN109889368B (zh) * | 2019-01-07 | 2022-04-08 | 浙江工业大学 | 一种基于stm32控制器的gprs远程升级方法 |
CN109889368A (zh) * | 2019-01-07 | 2019-06-14 | 浙江工业大学 | 一种基于stm32控制器的gprs远程升级方法 |
CN109803466A (zh) * | 2019-01-21 | 2019-05-24 | 广州达森灯光股份有限公司 | 一种手机app无线升级dmx灯具的系统 |
CN110096293A (zh) * | 2019-04-30 | 2019-08-06 | 上海睿赛德电子科技有限公司 | 一种基于STM32具有OTA升级功能的通用Bootloader实现方法 |
CN110727449A (zh) * | 2019-09-30 | 2020-01-24 | 中国船舶重工集团公司第七0七研究所 | 基于中继无线通讯链路的陀螺灵敏部控制器程序更新装置 |
CN110750281A (zh) * | 2019-09-30 | 2020-02-04 | 中国船舶重工集团公司第七0七研究所 | 基于二级无线通讯链路的陀螺灵敏部控制器程序更新装置 |
CN111078246A (zh) * | 2019-10-15 | 2020-04-28 | 苏州斯普锐智能系统有限公司 | 一种蓝牙扫描设备的软件配置系统及方法 |
CN112241161A (zh) * | 2020-10-22 | 2021-01-19 | 贝思特门机(嘉兴)有限公司 | 一种门机控制器软件升级方式 |
WO2022143295A1 (zh) * | 2021-01-04 | 2022-07-07 | 展讯通信(上海)有限公司 | 固件升级方法和相关设备 |
CN113238789A (zh) * | 2021-05-27 | 2021-08-10 | 闻泰通讯股份有限公司 | 电子设备及其固件升级方法、装置和计算机可读存储介质 |
FR3125615A1 (fr) * | 2021-07-26 | 2023-01-27 | STMicroelectronics (Grand Ouest) SAS | Systeme sur puce comprenant un logiciel d’installation de programmes |
EP4124943A1 (fr) * | 2021-07-26 | 2023-02-01 | STMicroelectronics (Grand Ouest) SAS | Systeme sur puce comprenant un logiciel d'installation de programmes |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402776A (zh) | 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 | |
CN103019779B (zh) | 一种fpga/dsp嵌入式系统的程序更新方法 | |
US20150154016A1 (en) | Internal software updating method and system | |
CN103942061A (zh) | 电池固件更新方法、便携式电子装置及充电电池模块 | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN104122815B (zh) | 一种基于arm的水文测控终端及其远程升级的方法 | |
CN106707848A (zh) | 一种控制系统的控制程序组织结构和下载方法 | |
CN109656597A (zh) | 固件升级方法、装置及计算机可读存储介质 | |
US20140337829A1 (en) | Information processing apparatus, electronic control unit, information processing method, and program | |
CN101963910A (zh) | 基于通用usb总线的设备固件升级方法 | |
CN103077058A (zh) | 一种安装应用程序的方法及装置 | |
CN103324501A (zh) | 无线传感器网络节点软件高效远程更新方法 | |
CN109189434A (zh) | 一种电能表的在线升级方法 | |
CN104391714A (zh) | 一种车辆的软件更新方法和装置 | |
CN104133699A (zh) | 设备系统软件升级方法与系统 | |
CN106452835A (zh) | 特定硬件配置的终端软件更新的方法及其装置 | |
CN103440146A (zh) | 一种基于云存储的更新bios的方法 | |
CN111562436B (zh) | 双芯智能电表的设备驱动方法和装置 | |
CN106293797A (zh) | 一种在线更新单片机程序的方法及系统 | |
CN105262805A (zh) | 一种移动终端自动更新学习资料的方法与系统 | |
CN101299190B (zh) | 一种只读文件系统下的软件升级方法、系统及嵌入式设备 | |
CN103475708A (zh) | 一种远程软件更新方法 | |
CN203102252U (zh) | 嵌入式软件在线升级装置 | |
CN109002309A (zh) | 一种硬件升级方法及相关装置 | |
CN102761653A (zh) | 手持终端设备软件在线升级的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171128 |
|
WD01 | Invention patent application deemed withdrawn after publication |