Flash扩容升级方法、设备、计算机可读存储介质及系统与流程

摘要: 本技术涉及存储,具体涉及一种flash扩容升级方法、设备、计算机可读存储介质及系统。背景技术:1、gd32f305vet6和stm32f107vct6两款芯片硬...
Flash扩容升级方法、设备、计算机可读存储介质及系统与流程

本技术涉及存储,具体涉及一种flash 扩容升级方法、设备、计算机可读存储介质及系统。

背景技术:

1、gd32f305vet6 和 stm32f107vct6 两款芯片硬件引脚可直接互换,早期为共用一套应用程序(application program,app)代码,强制将 gd 芯片程序限制在 256k 分区运行,gd 芯片剩余一半 flash 硬件资源长期闲置;随着产品迭代 app 代码量持续增长,256k 空间不足以承载新增业务功能。在这种情况下,常规解决方案为新建 gd 专属工程,两套代码并行维护,申请人在研究中发现,这一实现方式导致研发、版本管理成本极高。因此,如何高效、便捷地实现两套代码的并行管理维护是本领域技术人员亟需解决的技术问题。

技术实现思路

1、本技术公开了一种flash 扩容升级方法、设备、计算机可读存储介质及系统,可以实现大容量flash芯片的兼容扩容。

2、第一方面,本技术公开了一种flash 扩容升级方法,所述方法应用于可搭载不同容量flash芯片的设备;所述flash芯片包括第一容量的第一芯片或第二容量的第二芯片,所述第二容量大于所述第一容量;所述第一芯片和第二芯片各自对应的芯片引脚数量相同,且引脚定义相同;所述方法包括:

3、获取用户针对旧版本应用程序发起的扩容升级请求;

4、响应于所述扩容升级请求,启动一级bootloader 并运行,通过所述一级bootloader 调取芯片识别程序读取所述 flash芯片的总容量,识别所述flash芯片为所述第一芯片或所述第二芯片;

5、若识别为所述第二芯片,所述一级bootloader跳转至二级 bootloader,通过所述二级 bootloader 接收过渡版本整合包并执行烧录,其中,所述过渡版本整合包包含过渡应用程序与正式二级 bootloader;

6、所述二级 bootloader烧录过程中对所述 flash 芯片执行内存地址分区重构,在所述一级 bootloader 的存储分区与应用程序的存储分区之间开辟独立的二级bootloader 存储分区,使所述一级 bootloader 的存储分区、二级 bootloader的存储分区以及应用程序的存储分区形成连续的存储空间,并在预设标志位地址写入过渡兼容标志位;

7、烧录完成后,所述二级 bootloader 跳转至所述过渡应用程序运行。

8、实施本技术实施例,通过一级bootloader识别flash芯片的总容量,识别flash芯片为第一芯片或第二芯片。在识别出flash芯片为第二芯片的情况下,通过二级bootloader接收过渡版本整合包并执行烧录,在烧录过程中,对所述 flash 芯片执行内存地址分区重构,在所述一级 bootloader 的存储分区与应用程序的存储分区之间开辟独立的二级bootloader 存储分区,使所述一级 bootloader 的存储分区、二级 bootloader的存储分区以及应用程序的存储分区形成连续的存储空间,并在预设标志位地址写入过渡兼容标志位,实现了大容量flash芯片的兼容扩容。在这一实现方式中,无需更换设备硬件即可拓展存储资源。

9、第二方面,本技术公开了一种flash 扩容升级设备,包括:

10、存储模块,搭载不同容量flash芯片,所述flash芯片包括第一容量的第一芯片或第二容量的第二芯片,所述第二容量大于所述第一容量;

11、通信模块,用于接收用户针对旧版本应用程序发起的扩容升级请求;

12、处理模块,集成一级 bootloader 和二级 bootloader,所述处理模块被配置为执行以下操作:

13、响应于所述扩容升级请求,启动一级bootloader 并运行,通过所述一级bootloader 调取芯片识别程序读取所述 flash芯片的总容量,识别所述flash芯片为所述第一芯片或所述第二芯片;

14、若识别为所述第二芯片,控制所述一级bootloader跳转至二级 bootloader,通过所述二级 bootloader 接收过渡版本整合包并执行烧录,其中,所述过渡版本整合包包含过渡应用程序与正式二级 bootloader;

15、所述二级 bootloader烧录过程中对所述存储模块执行内存地址分区重构,在所述一级 bootloader 的存储分区与应用程序的存储分区之间开辟独立的二级 bootloader存储分区,使所述一级 bootloader 的存储分区、二级 bootloader的存储分区以及应用程序的存储分区形成连续的存储空间,并在预设标志位地址写入过渡兼容标志位;

16、烧录完成后,控制所述二级 bootloader 跳转至所述过渡应用程序运行。

17、第三方面,本技术公开了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如上述第一方面任一项所述的方法。

18、第四方面,本技术公开了一种flash 扩容升级系统,包括:

19、终端设备,搭载不同容量的 flash 芯片,集成一级 bootloader 和二级bootloader,用于发起应用程序扩容升级请求;

20、服务器,用于响应于所述扩容升级请求,向所述终端设备发送应用程序过渡版本整合包;

21、所述终端设备,还用于在识别flash芯片为第二芯片的情况下,所述一级bootloader跳转至二级 bootloader,通过所述二级 bootloader 接收过渡版本整合包并执行烧录;其中,所述过渡版本整合包包含过渡应用程序与正式二级 bootloader;

22、所述二级 bootloader烧录过程中对所述 flash 芯片执行内存地址分区重构,在所述一级 bootloader 的存储分区与应用程序的存储分区之间开辟独立的二级bootloader 存储分区,使所述一级 bootloader 的存储分区、二级 bootloader的存储分区以及应用程序的存储分区形成连续的存储空间,并在预设标志位地址写入过渡兼容标志位;烧录完成后,所述二级 bootloader 跳转至所述过渡应用程序运行。

23、在一种可能的实现方式中,所述过渡应用程序发起正式扩容升级请求,唤醒所述二级 bootloader;

24、所述二级 bootloader 下载正式版本整合包并执行烧录,所述正式版本整合包包含适配所述第二容量的扩容应用程序与所述正式二级 bootloader;

25、烧录过程中,所述二级 bootloader 擦除预设升级方式标志位,并将所述过渡兼容标志位更新为扩容标志位;

26、基于所述扩容标志位对所述 flash 芯片执行二次分区重构,释放所述第二芯片的全部存储空间;

27、烧录完成后,跳转至扩容后的应用程序分区运行所述扩容应用程序。

28、实施本技术实施例,通过“过渡升级-正式扩容” 两步式设计,避免直接扩容导致的应用程序兼容性问题。烧录过程中,将过渡兼容标志位更新为扩容标志位,从而可以基于扩容标志位对flash 芯片执行二次分区重构,释放所述第二芯片的全部存储空间,扩容标志位确保后续系统启动时准确识别存储状态。

29、在一种可能的实现方式中,所述正式版本整合包的升级方式为外部 flash 升级或透传升级。

30、实施本技术实施例,提供多样化升级路径,适配不同使用场景(如离线升级、在线远程升级),提升方法的实用性与适配性。

31、在一种可能的实现方式中,所述方法还包括:

32、若识别为所述第一芯片,不执行扩容升级。

33、实施本技术实施例,明确小容量flash芯片的处理逻辑,避免无效升级操作,降低系统资源消耗,确保方法的执行效率。

34、在一种可能的实现方式中,每次启动所述过渡版本整合包或所述正式版本整合包的烧录前,所述二级 bootloader 先对整机用户配置数据进行备份。

35、实施本技术实施例,可以防止升级过程中数据丢失或损坏,提升升级过程的可靠性和用户体验,降低升级风险。

36、在一种可能的实现方式中,搭载所述第二芯片的设备仅支持正向扩容升级,禁止从适配所述第二容量的版本回退至适配所述第一容量的版本;搭载所述第一芯片的设备仅能基于所述第一容量进行现有功能维护,不支持新增占用存储空间超过所述第一容量的功能。

37、实施本技术实施例,通过版本兼容性限制,避免回退升级或超容量功能新增导致的系统崩溃,确保设备运行稳定性。

38、在一种可能的实现方式中,所述第一芯片为容量 256k 的 stm32f107vct6 芯片,所述第二芯片为容量 512k 的 gd32f305vet6 芯片。

39、在一种可能的实现方式中,各存储分区的地址范围设置如下:

40、所述一级 bootloader 存储分区地址范围为0x8000000至0x800c7ff,存储空间大小为50kb;

41、所述二级 bootloader 存储分区地址范围为 0x800d000 至 0x800ffff,存储空间大小为 14kb,设置于一级 bootloader 存储分区与应用程序存储分区之间;

42、应用程序存储分区起始地址为 0x8010000,占用所述 flash 芯片自 0x8010000至末端的剩余存储空间;地址 0x803f7f8 为预设标志位地址。