一种基于BootLoader的UVLED固化系统远程升级方法_3

文档序号:9396719阅读:来源:国知局
总CRC校验而言,调整周期短、可靠性高。
[0045]步骤5,数据引导包接收完毕后,BootLoader中的升级程序会根据引导包的信息进行数据包的接收。每包数据接收完毕后会在控制器端再次计算CRC,并校验是否与数据包中的CRC校验码相同,若不相同则会重新申请本序号的数据包,并以5次申请为限,若5次都错误则退出升级;若相同则申请下一包的发送,直到所有的数据包发送完毕。每包校验无误后执行写FLASH操作,使用STM32库函数中的写FLASH函数FLASH_ProgramWord O ;注意写入的最小单元是字(32bit)而非一般单片机是以半字(16bit)的方式写入的,不满的字节需用OxFF填充。以这样的方式,循环地将所有数据包中的程序代码写入FLASH的程序区。
[0046]步骤6,为了加强系统的抗误码能力,除了对每个数据包的校验,还会在最后对总数据包进行校验。上位机在解析包时就对程序的二进制文件的所有字节做CRC校验,耗费时间较长,会削弱用户体检;而改为在发送时校验,将每包帧中校验单元的两个字节单独进行保存(客户端也同样保存到FLASH中的参数区)。全部数据包传输完成后,上位机和微处理器都会对这些储存的CRC校验码做一个总的CRC,判断上位机与微处理器计算得到的总CRC校验码是否一致,若不一致也会判断为升级失败。进一步增强了系统的抗误码性。
[0047]步骤7,确认升级成功后,客户端的BootLoader程序会将当前的版本号保存进FLASH的参数区中,并上传给上位机存储,至此升级过程确认成功。最后BootLoader执行程序跳转指令Jump_To_Applicat1n();在执行此跳转指令之前,需要初始化用户程序的堆栈指针,设定—set_MSP(*(—1 uint32_t*)APPLICAT10N_ADD)指令。至此,所有升级程序完成。
[0048]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0049]尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
【主权项】
1.一种基于BootLoader的UV LED固化系统远程升级方法,其特征在于,包括步骤: 步骤1,根据处理器模块、光源驱动模块中的STM32F103R8T6的内存架构完成对内存页的分配,将FLASH分为四个区,即BootLoader、用户程序区、升级存储区、参数保存区,并初始化 BootLoader ; 步骤2,BootLoader初始化结束后,判断参数保存区中的升级标志Updata_Flag,若升级标志为OxFA,说明接收到远程升级指令,接着判断是处理器模块的程序升级还是光源驱动模块的程序升级;确定后相应的模块则由BootLoader引导程序跳转进入升级程序,程序跳转指令符合STM32F10X系列的指令协议,升级确认指令反馈给上位机; 步骤3,STM32F103R8T6微处理器调用FLASH擦除函数Flash_SectorErase()按页擦除FLASH中升级储存区的相应数据,并注意将程序存储的地址与FLASH进行页对齐,每页占用 2048bit ; 步骤4,为了保证程序的安全,本发明引入抗误码环节,上位机在对新程序BIN文件分包的环节会按照一定格式打包成每一个数据包; 步骤5,数据引导包接收完毕后,BootLoader中的升级程序会根据引导包的信息进行数据包的接收,每包数据接收完毕后会在控制器端再次计算CRC,并校验是否与数据包中的CRC校验码相同,若不相同则会重新申请本序号的数据包,并以5次申请为限,若5次都错误则退出升级;若相同则申请下一包的发送,直到所有的数据包发送完毕; 步骤6,为了加强系统的抗误码能力,除了对每个数据包的校验,还会在最后对总数据包进行校验; 步骤7,确认升级成功后,客户端的BootLoader程序会将当前的版本号保存进FLASH的参数区中,并上传给上位机存储,至此升级过程确认成功。2.根据权利要求1所述的基于BootLoader的UVLED固化系统远程升级方法,其特征在于,所述UV LED固化系统主要包含通信模块、处理器模块、光源驱动模块以及交互模块,所述通信模块通过RS485分别连接处理器模块、光源驱动模块,所述处理器模块用于控制整个系统的运行,所述光源驱动模块用于控制电流的分配,所述交互模块和处理器模块相连,用于UV LED固化系统的显示和手动输入。3.根据权利要求1所述的基于BootLoader的UVLED固化系统远程升级方法,其特征在于,所述步骤I中,BootLoader是嵌入式系统在上电后执行的第一段代码,在完成初始化硬件设备、建立内存空间映射后,再跳转到操作系统映像或固化的嵌入式应用程序的内存空间,启动运行系统;用户程序区是储存需要运行的用户程序;升级存储区是用来暂时存储新的程序的二进制文件,待校验完成后再写入用户程序区;参数保存区内定义一个升级状态的结构体,成员包括升级标志,最近一次的升级信息,CRC校验码。4.根据权利要求3所述的基于BootLoader的UVLED固化系统远程升级方法,其特征在于,所述BootLoader以及用户程序区的首地址,需要在KEIL中的Opt1ns for target中手动设置为0x8000000和0x8010000。5.根据权利要求1所述的基于BootLoader的UVLED固化系统远程升级方法,其特征在于,所述步骤3在擦除的过程中,Flash_SectorErase()会返回每页的擦除结果,将擦除的结果返回给上位机;若擦除成功则开始请求数据引导包,若不成功则由上位机询问是否结束升级;数据引导包是上位机对新程序BIN文件解析并分包后生成的,引导包中包含程序包的总包数、总字节数、版本号及总CRC(16Bit MODELBUS模式)校验码。6.根据权利要求1所述的基于BootLoader的UVLED固化系统远程升级方法,其特征在于,所述步骤4中具体过程为:每个数据包分别含有帧头(lBit)、序号(lBit)、文件长度(2Bit)、文件数据(1024BU以内)、校验码(2Bit)、帧尾(IBit);帧头和帧尾是根据通信协议固定的0x5A和0xA5 ;校验环节采用的是CRC (16Bit MODELBUS模式),上位机在传输数据包前对每一数据包计算一次CRC并生成校验码;STM32F103R8T6微处理器在每一包数据的接收后都会校验CRC,如果校验不成功则发出错误指令,要求重新发送一遍当前数据包。7.根据权利要求1所述的基于BootLoader的UVLED固化系统远程升级方法,其特征在于,所述步骤6还包括: 全部数据包传输完成后,上位机和STM32F103R8T6微处理器都会对这些储存的CRC校验码做一个总的CRC,判断上位机与微处理器计算得到的总CRC校验码是否一致,若不一致也会判断为升级失败。
【专利摘要】本发明公开了一种基于BootLoader的UV?LED固化系统远程升级方法,系统管理分配用户程序区、升级储存区、参数保存区的FLASH存储地址的分配;通过接受上位机的请求判断是否进行升级;通过接受上位机的请求进行程序版本号、验证码等信息传输;升级结束后完成向用户程序的跳转。本发明将Bootloader与IAP结合,通过上位机通讯或配置GPRS、WiFi、以太网卡等通信模块完成的远程升级系统,集成在一个UV?LED控制设备上,可完成设备的远程调试、程序更新,大大减少了维护成本和维护周期。
【IPC分类】G06F9/445
【公开号】CN105117253
【申请号】CN201510536559
【发明人】朱正伟, 钱露, 张南, 周谢益, 宋文浩, 黄晓竹
【申请人】常州大学
【公开日】2015年12月2日
【申请日】2015年8月27日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1