一种不影响应用程序调试的BootLoader方法技术

技术编号:28941260 阅读:16 留言:0更新日期:2021-06-18 21:45
本发明专利技术涉及嵌入式软件技术领域,尤其是指一种不影响应用程序调试的BootLoader方法,其包括:在上电复位后进入BootLoader,通过读取flash相应位置的标志,来判断是否直接跳转应用程序,或者进行升级程序;当在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据,接收到升级数据后,擦除应用层flash,接收到的每帧数据都做单帧的校验,升级数据帧中包含偏移量,通过基地址和偏移量,把接收到的升级数据写入flash,每个字节写入后,读取flash相应位置数据是否正确,并记录数据量。本发明专利技术能稳定的对应用程序进行升级,又能不影响应用程序的仿真调试。

【技术实现步骤摘要】
一种不影响应用程序调试的BootLoader方法
本专利技术涉及嵌入式软件
,尤其是指一种不影响应用程序调试的BootLoader方法。
技术介绍
bootloader是一段启动程序,它在芯片启动的时候首先被执行,它可以用来做一些硬件的初始化,当初始化完成之后跳转到对应的应用程序中去。现有的嵌入式产品,通常要加入升级的功能,当产品交于客户后,如果发现产品存在程序问题或有新的需求,就要去对程序进行升级,由于产品是已经包装完整的,很难直接给单片机下载程序,有了BootLoader就不用拆卸产品,预留出接口就可以方便很多。产品在开发和后续的维护中,有时需要进行仿真调试。调试中有些不需要BootLoader中的配置;例如为了保证跳转应用程序时,为了解决程序无法运行卡死的问题,在BootLoader中打开看门狗,但是仿真调试的时候,应用程序无法关闭已经打开的看门狗功能,给仿真调试带来不便。
技术实现思路
本专利技术针对现有技术的问题提供一种不影响应用程序调试的BootLoader方法,既能保证跳转应用程序无法运行时,能自动跳回BootLoader,等待再次升级,又能避免仿真调试的时候BootLoader的配置对应用程序的影响;即能稳定的对应用程序进行升级,又能不影响应用程序的仿真调试。为了解决上述技术问题,本专利技术采用如下技术方案:本专利技术提供的一种不影响应用程序调试的BootLoader方法,包括:在上电复位后进入BootLoader,通过读取flash相应位置的标志,来判断是否直接跳转应用程序,或者进行升级程序;当在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据,接收到升级数据后,擦除应用层flash,接收到的每帧数据都做单帧的校验,升级数据帧中包含偏移量,通过基地址和偏移量,把接收到的升级数据写入flash,每个字节写入后,读取flash相应位置数据是否正确,并记录数据量;接收到升级完成指令后,通过记录的数据量和代码总数据量帧做对比,来判断是否升级成功,每次接收到数据,通过应答,上报进度是否正确,如果升级成功,跳转到应用程序,否则擦除应用层flash,重新等待升级;当跳转到应用程序,正常运行持续1秒后,把升级完成标志写入flash。其中,所述升级数据包括5种帧数据,该5种帧数据分别为:升级使能帧、基地址帧、代码总数据量帧、代码数据帧和升级结束帧。其中,每种帧数据均包括帧头、帧组号、帧数据长度、帧数据、帧校验值以及帧尾。其中,在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据的步骤包括:步骤A,采用STM32F103作为硬件平台,读取0x80040f0升级标志,判断是否有升级完成标志,若有则跳转应用程序,若无则进行下一步;步骤B,时钟初始化;步骤C,GPIO初始化;步骤D,串口初始化;步骤E,看门狗初始化;步骤F,进入升级应用程序循环函数;步骤G,检测数据是否有升级结束帧,若无,则进入步骤F;若有,进入下一步骤;步骤H,判断是否升级成功,若是,则跳转应用程序,若否,则擦除应用层flash,并进入步骤F。本专利技术的有益效果:本专利技术通过该方法,既能保证跳转应用程序无法运行时,能自动跳回BootLoader,等待再次升级,又能避免仿真调试的时候BootLoader的配置对应用程序的影响;即能稳定的对应用程序进行升级,又能不影响应用程序的仿真调试。附图说明图1为本专利技术的一种不影响应用程序调试的BootLoader方法的流程图。图2为本专利技术在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据的流程图。具体实施方式为了便于本领域技术人员的理解,下面结合实施例与附图对本专利技术作进一步的说明,实施方式提及的内容并非对本专利技术的限定。以下结合附图对本专利技术进行详细的描述。一种不影响应用程序调试的BootLoader方法,包括:在上电复位后进入BootLoader,通过读取flash相应位置的标志,来判断是否直接跳转应用程序,或者进行升级程序;当在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据,总共5种帧数据,分别为:升级使能帧、基地址帧、代码总数据量帧、代码数据帧、升级结束帧;接收到升级使能帧后,擦除应用层flash,接收到的每帧数据都做单帧的校验,代码数据帧中包含偏移量,通过基地址和偏移量,把接收到的代码数据写入flash,每个字节写入后,读取flash相应位置数据是否正确,并记录数据量;接收到升级完成指令后,通过记录的数据量和代码总数据量帧做对比,来判断是否升级成功,每次接收到数据,通过应答,上报进度是否正确,如果升级成功,跳转到应用程序,否则擦除应用层flash,重新等待升级;当跳转到应用程序,正常运行持续1秒后,把升级完成标志写入flash。具体地,本专利技术通过上述方法,既能保证跳转应用程序无法运行时,能自动跳回BootLoader,等待再次升级,又能避免仿真调试的时候BootLoader的配置对应用程序的影响;即能稳定的对应用程序进行升级,又能不影响应用程序的仿真调试。本实施例所述的一种不影响应用程序调试的BootLoader方法,所述升级数据包括5种帧数据,该5种帧数据分别为:升级使能帧、基地址帧、代码总数据量帧、代码数据帧和升级结束帧。本实施例所述的一种不影响应用程序调试的BootLoader方法,每种帧数据均包括帧头、帧组号、帧数据长度、帧数据、帧校验值以及帧尾。本实施例所述的一种不影响应用程序调试的BootLoader方法,在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据的步骤包括:步骤A,本专利技术采用STM32F103做为硬件平台,BootLoader的流程图如下,读取0x80040f0升级标志,判断是否有升级完成标志,若有则跳转应用程序,若无则进行下一步;步骤B,时钟初始化;步骤C,GPIO初始化;步骤D,串口初始化;步骤E,看门狗初始化;步骤F,进入升级应用程序循环函数;步骤G,检测数据是否有升级结束帧,若无,则进入步骤F;若有,进入下一步骤;步骤H,判断是否升级成功,若是,则跳转应用程序,若否,则擦除应用层flash,并进入步骤F。具体地,本实施例采用485通信,每帧数据数据包括枕头、帧组号、帧数据长度、帧数据、帧校验值、帧尾;可以保证对接收数据的完整性和可靠性,在写入flash过程中,对每个字节进行读取,保证写入flash的数据正确;但是在实际应用中,因为在传输过程中受环境干扰或者升级文件错误或者其它未知原因,导致写入应用层数据出错,无法运行而死机;加入看门狗,可以保证程序无法运行时,可以跳回BootLoader,继续升级,而不至于器件一直卡死状态;在应用程序中稳定运行1秒后,写入升级完成标志;可以确保程序真实升级成功;在应本文档来自技高网...

【技术保护点】
1.一种不影响应用程序调试的BootLoader方法,其特征在于,包括:在上电复位后进入BootLoader,通过读取flash相应位置的标志,来判断是否直接跳转应用程序,或者进行升级程序;/n当在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据,接收到升级数据后,擦除应用层flash,接收到的每帧数据都做单帧的校验,升级数据帧中包含偏移量,通过基地址和偏移量,把接收到的升级数据写入flash,每个字节写入后,读取flash相应位置数据是否正确,并记录数据量;/n接收到升级完成指令后,通过记录的数据量和代码总数据量帧做对比,来判断是否升级成功,每次接收到数据,通过应答,上报进度是否正确,如果升级成功,跳转到应用程序,否则擦除应用层flash,重新等待升级;/n当跳转到应用程序,正常运行持续1秒后,把升级完成标志写入flash。/n

【技术特征摘要】
1.一种不影响应用程序调试的BootLoader方法,其特征在于,包括:在上电复位后进入BootLoader,通过读取flash相应位置的标志,来判断是否直接跳转应用程序,或者进行升级程序;
当在升级程序中,打开相应的初始化配置,进入循环函数等待接收升级数据,接收到升级数据后,擦除应用层flash,接收到的每帧数据都做单帧的校验,升级数据帧中包含偏移量,通过基地址和偏移量,把接收到的升级数据写入flash,每个字节写入后,读取flash相应位置数据是否正确,并记录数据量;
接收到升级完成指令后,通过记录的数据量和代码总数据量帧做对比,来判断是否升级成功,每次接收到数据,通过应答,上报进度是否正确,如果升级成功,跳转到应用程序,否则擦除应用层flash,重新等待升级;
当跳转到应用程序,正常运行持续1秒后,把升级完成标志写入flash。


2.根据权利要求1所述的一种不影响应用程序调试的BootLoader方法,其特征在于:所述升级数据包括5种帧数据,该5种帧数据分别...

【专利技术属性】
技术研发人员:付春雷
申请(专利权)人:东莞市峰谷科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1