一种基于蓝牙的固件升级装置的制作方法

文档序号:12889792阅读:2106来源:国知局
一种基于蓝牙的固件升级装置的制作方法

本发明属于通信领域,涉及一种固件升级装置,尤其涉及一种基于蓝牙的固件升级装置。



背景技术:

随着嵌入式系统和arm移动处理器的高速发展,电子设备日趋小型化、智能化,更新换代频繁,特别是近些年智能硬件和可穿戴式设备不断涌现。而市场的需求地不断变化促使智能硬件和可穿戴式设备的固件程序需要不断升级更新。作为常见的固件的升级方法jtag、isp、iap,而jtag需要专门的下载器,且一般用于软件调试,用于固件升级步骤复杂、程序繁琐。

iap(inapplicationprogramming,应用编程)是指最终产品出厂后,由用户在使用中对用户程序部分进行编程,实现在线升级。iap要求将程序分成两部分:引导程序、用户程序。引导部分通常不变,用户程序为用户自定义。

iap主要采用串口或usb连接pc,然后在电子设备的应用端对使固件系统重启;在系统重启后,程序在启动过程中通过对串口或usb中断进行响应,进入下载模式,然后开始接收数据并进行固件程序升级。

采用该方法需要对设备进行拆卸,在某些场合拆卸的成本高或无法拆卸,例如智能汽车的ecu(electroniccontrolunit电子控制单元)需要将零件从整车上拆卸下来,这样将增加更新的工作量,并且容易对车辆本身造成损坏。随着蓝牙通信技术的普及,越来越多的设备采用蓝牙作为通信方式,相对于usb,串口等物理线路,蓝牙由于通过无线连接,不依赖于硬件线路,所以具备更高的便携性。



技术实现要素:

本发明提供了一种基于蓝牙的固件升级装置,以解决固件升级需要通过机械的拆卸的问题。

为解决上述问题,本发明的具体技术方案为:一种基于蓝牙的固件升级装置,包括控制器、存储器,蓝牙模块,所述蓝牙模块被配置为与固件进行通讯,并检测固件的版本,向控制器发出更新请求;

所述控制器被配置为根据所述蓝牙模块发出的更新请求开放所述存储器的权限;

所述存储器包括引导单元、升级单元,所述引导单元被配置为初始化固件的硬件运行环境、引导固件升级。

在本发明的一个实施例中,所述蓝牙模块还包括检测单元,所述检测单元用于检测固件版本标记,向所述控制器发出更新请求。

在本发明的一个实施例中,所述蓝牙模块还包括蓝牙适配单元。

进一步的,所述蓝牙适配单元包括蓝牙串口适配模块。

在本发明的一个实施例中,所述存储器还包括备份单元,所述备份单元用于存储固件的升级前的初始固件程序。

在本发明的一个实施例中,所述蓝牙模块还包括hci接口,所述hci接口用于与上位机进行交互。

在本发明的一个实施例中,所述蓝牙模块还包括ymodem模块,所述ymodem模块用于与用户固件的数据传输。

本发明的有益效果是:

1.采用蓝牙模块与固件进行通讯,实现了基于蓝牙的固件升级模式,提高了升级的便携性,减少了传统升级方式的机械操作。

2.存储器设有备份单元,提高固件升级装置的稳定性,防止升级失败后无法恢复。

3.人机交互接口提高了固件升级装置的灵活性,用于固件升级的上位机不再局限于传

统的pc机。

附图说明

图1为本发明的结构示意图;

图2为本发明的蓝牙模块结构图之一;

图3为本发明的蓝牙模块结构图之二;

图4为本发明的存储器区域划分结构图;

图5为stm32系列处理器的存储器区域划分图。

附图标记

1.固件升级装置;2.控制器;3.蓝牙模块;31.检测单元32.蓝牙适配单元33.hci接口4.存储器;41引导单元;42.备份单元;43.升级单元。

具体实施方式

为了更好的理解本发明所提出的技术方案,下面结合附图和具体的实施例对本发明作进一步阐述。

如图1至图4所示,一种基于蓝牙的固件升级装置1,包括控制器2、存储器44,蓝牙模块3,所述蓝牙模块3被配置为与固件进行通讯,并检测固件的版本,向控制器2发出更新请求;

所述控制器2被配置为根据所述蓝牙模块3发出的更新请求开放所述存储器4的读取权限;

所述存储器4包括引导单元41、升级单元43,所述引导单元41被配置为初始化固件的硬件运行环境、引导固件升级。例如,基于arm架构的处理器内的flash分成两部分:主存储块、信息块。主存储块用于存储固件程序,升级程序一般存储在这里。信息块又分成两部分:系统存储器、选项字节。系统存储器存储用于存放在系统存储器自举模式下的启动程序(bootloader),当使用isp方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入bootloader,然后锁死,用户是无法改变这个区域的。选项字节存储芯片的配置信息及对主存储块的保护信息。bootloader便属于引导单元41。升级单元43主要存储了固件所需升级的程序。

在本发明的一个实施例中,所述蓝牙模块3还包括检测单元31,所述检测单元31用于检测固件版本标记,检测标记可以由根据固件厂家定义或用户自定义。具体地,检测单元根据蓝牙模块接收到的数据与标记数据进行比较,若检测到固件的版本低于存储在的固件升级单元43的版本,则向所述控制器2发出更新请求。所述控制器2根据蓝牙模块3的请求,开放所述存储器4读取权限,蓝牙模块3便可将存储器4的数据传输给待升级的固件。特殊的,存储器可以是固件升级装置的外部存储器。

在本发明的一个实施例中,所述蓝牙模块3还包括蓝牙适配单元32。进一步的,所述蓝牙适配单元32包括蓝牙串口适配模块。蓝牙串口适配模快主要用于用户固件的不同cpu的接口的适配,通常为串口、usb接口。

为防止升级失败而导致固件无法正常运行,在本发明的一个实施例中,所述存储器4还包括备份单元42,所述备份单元42用于存储固件的升级前的初始固件程序。

在本发明的一个实施例中,所述蓝牙模块3还包括hci接口33,所述hci接口33用于与上位机进行交互。hci接口33可以通过蓝牙、wifi、串口、usb、can或以太网的方式与上位机进行交互,上位机不局限于传统的pc机,可以是手机、平板电脑或其他带有上述通讯模块的电子终端设备。

如图5所示,在本发明的一个实施例中,固件以stm32系列处理器为例,该处理器内部的存储器为例,所述存储器4的升级单元43将stm32flash分成4部分,第一部分从0x08000000到0x0800ffff共64k来存放bootloader程序,第二部分为0x08010000到0x0803ffff共192k来存放旧app程序,第三部分从0x08040000开始到0x805ffff共128k来存放升级后的app程序,剩下的存放程序运行的标志位和其他。

stm32系列的单片机基于cortex-m4核的,其内部主要通过中断向量表来响应各种中断,内部闪存的起始地址是0x08000000,中断向量表的起始地址是0x8000004。升级时,将首先从“中断向量表”取出复位中断向量执行复位中断程序完成启动,当中断来临时stm32的内部硬件机制亦会自动将pc指针定位到“中断向量表”处,并根据中断源取出对应的中断向量执行相应的中断服务程序。

在本发明的一个实施例中,所述蓝牙模块3还包括ymodem模块,所述ymodem模块用于与用户固件的数据传输。所述ymodem模块采用ymodem协议进行传输,ymodem协议是一种发送并等待的协议,即发送方发送一个数据包以后,都要等待接收方的确认。如果是ack信号,则可以发送新的包。如果是nak信号,则重发或者错误退出。

(1)由接收方发起传输,以第一个大写字母c开启传输。然后进入等待(soh)状态,如果没有回应,就会超时退出。

(2)发送方开始时处于等待过程中,等待c。收到c以后,发送(soh)数据包开始信号,发送序号(00),补码(ff),“文件名”,“空字符”“文件大小”“除去序号外,补满128字节”,crc校验两个字节。进入等待(ack)状态。

(3)接收方收到数据包后,crc校验满足,则发送ack。发送方接收到ack,又进入等待“文件传输开启”信号,即重新进入等待“c”的状态。

(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,ymodem支持128字节和1024字节一个数据包。128字节以(soh)开始,1024字节以(stx)开始。

接收方又发出一个“c”信号,开始准备接收文件。进入等待“soh”或者“stx”状态。

(5)发送接收到“c”以后,发送数据包,(soh)(01序号)(fe补码)(128位数据)(crc校验),等待接收方“ack”。

(6)文件发送完以后,发送方发出一个“eot”信号,接收方也以“ack”回应。

然后接收方会再次发出“c”开启另一次传输,若接着发送方会发出一个“全0数据包”,接收方“ack”以后,本次通信正式结束。

根据上述说明书中的结构和功能的揭示,本发明所属领域的技术人员还可以将上述实施方式进行变更和修改,以应用于其他领域。因此,虽然本发明只给出了stm32系列cpu的固件升级实例,但本发明并不局限于上面揭示和描述的具体实施方式,对发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1