一种STM32微处理器程序架构设计方法与流程

文档序号:12664630阅读:404来源:国知局

本发明涉及一种STM32微处理器程序架构设计方法。



背景技术:

嵌入式系统对于不同的应用,出于开发成本,开发周期,可维护性等方面考虑,都会选择不同的微控制器来进行产品开发。在嵌入式系统的程序设计中,存储架构的设计是程序设计的关键因素之一。STM32F103RCT6是一款基于ARM 32位CORTEX-M3的高性能,高稳定性,低功耗,最高工作频率为72MHZ,1.25DIPS/MHZ单周期乘法与硬件除法的存储器。存储器片上集成了256KB的flash可在线擦除存储器和48KB的SRAM静态存储器。其中,由于flash可在线擦除存储器的256KB程序空间是连续的,因此在每次更新程序时,都只能整片擦除和烧写,而烧写又只能使用ISP模式进行烧写,操作起来及其不方便。



技术实现要素:

本发明要解决的技术问题,在于提供一种STM32微处理器程序架构设计方法,通过对程序架构的设计,实现在更新程序的时候,可以只更新对应区域的内容,而无需整片擦除和烧写,可以降低开发成本,提高系统稳定性,提高生产效率,缩短更新时间。

本发明是这样实现的:一种STM32微处理器程序架构设计方法,所述方法包括:将微处理器程序架构划分为四个区,包括BOOT程序区、应用程序区、配置信息区以及程序备份区;且通过所述BOOT程序区实现在线烧写程序和远程升级程序;通过所述应用程序区实现外设模块接口的调用;通过所述配置信息区存储配置参数;通过所述程序备份区实现APP程序或者配置信息的升级备份。

进一步地,所述BOOT程序区分配有24KB的存储空间,所述APP应用程序区分配有100KB的存储空间,所述信息配置区分配有100KB的存储空间,所述程序备份区分配有32KB的存储空间。

进一步地,所述“通过所述BOOT程序区实现在线烧写程序”具体包括:

系统上电后,所述BOOT程序区开始运行BOOT程序,并判断是否进入ISP模式,若是,则进入ISP模式,并等待接收数据包;若否,则正常运行BOOT程序;进入ISP模式后,PC端先向所述BOOT程序区发送一个握手命令判断是否接收数据包信息,若BOOT程序区应答是,则PC端开始向BOOT程序区发送数据包信息;若BOOT程序区应答否,则PC端不向BOOT程序区发送数据包信息;所述数据包信息包含数据头、数据长度、数据命令、数据内容、CRC校验码以及包尾;

BOOT程序区在接收到完整的数据包信息后,判断CRC校验码是否正确,若否,则返回重发指令给PC端,PC端重新发送数据包信息给BOOT程序区;若是,则从数据包信息中解析出指定的烧写地址以及烧写的数据,并将数据烧写到指定的烧写地址中。

进一步地,所述“通过所述程序备份区实现APP程序或者配置信息的升级备份”具体包括:

远程PC端通过升级协议向APP应用程序区推送升级文件,所述升级协议中包含文件大小、文件类型、文件CRC校验码、文件内容以及文件的数据包个数,所述升级文件为APP程序升级文件或者配置信息升级文件;APP应用程序区在接收到完整的升级文件后,判断文件CRC校验码是否正确,若否,则返回重发指令给远程PC端,远程PC端重新发送升级文件给APP应用程序区;若是,则将升级文件备份到程序备份区,且若升级文件为APP程序升级文件,则生成一对应的APP程序升级标志;若升级文件为配置信息升级文件,则生成一对应的配置信息升级标志。

进一步地,所述“通过所述BOOT程序区实现远程升级程序”具体包括:

BOOT程序正常运行后,BOOT程序区检测程序备份区是否存在APP程序升级标志或者配置信息升级标志,若存在,则将APP程序升级文件拷贝到应用程序区进行升级并运行APP程序,或者将配置信息升级文件拷贝到配置信息区进行升级,且删除APP程序升级标志或者配置信息升级标志;若不存在,则直接运行应用程序区中的APP程序;

同时,在运行APP程序的过程中,若出现程序损坏,则从程序备份区拷贝APP程序升级文件至应用程序区,并重新运行APP程序。

进一步地,所述“通过所述应用程序区实现外设模块接口的调用”具体包括:客户端向应用程序区发送调用命令数据包,所述调用命令数据包中包含数据头、调用的外设模块、数据长度、CRC校验码、数据内容以及包尾;应用程序区在接收到完整的调用命令数据包后,判断CRC校验码是否正确,若否,则返回重发指令给客户端,客户端重新向应用程序区发送调用命令数据包;若是,则解析出调用的外设模块,并调用相应的接口。

进一步地,所述“通过所述配置信息区存储配置参数”具体包括:

系统上电后,通过所述BOOT程序区将基本配置参数烧写到所述配置信息区中,所述基本配置参数至少包含厂家的协议版本以及外设模块的使能情况;且在系统第一次上电时,应用程序区先从该配置信息区获取微处理器芯片的唯一ID,并利用加密算法生成一加密数据,之后将加密数据写入到配置信息区中;

在运行APP程序时,APP程序从配置信息区读取基本配置参数,并根据基本配置参数确定厂家的协议版本以及外设模块的使能情况;同时,APP程序读取微处理器芯片的唯一ID,利用加密算法生成一加密结果,并将加密结果与配置信息区中的加密数据进行比对,且若比对结果一致,则正常运行APP程序;若比对结果不一致,则执行开机自销毁操作。

进一步地,所述“通过所述配置信息区存储配置参数”还包括:

BOOT程序正常运行后,通过PC端向应用程序区下发配置指令,应用程序区从配置信息区读取基本配置参数,并将读取的基本配置参数返回到PC端进行修改,之后将修改后的基本配置参数写入到配置信息区中。

本发明具有如下优点:通过对程序架构的划分,使得在更新程序的时候,可以只更新对应区域的内容,而无需整片擦除和烧写,比如只要更新应用程序区中的APP程序,或者只修改配置信息区中的基本配置参数,这可以缩短软件的更新时间。且在不增加额外存储集成电路的情况下,实现远程升级程序和更新配置参数,可以降低开发成本,提高系统稳定性,提高生产效率,并增加芯片的使用寿命,提高软件售后维护、升级的方便性。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明中程序架构的示意图。

具体实施方式

请参照图1,一种STM32微处理器程序架构设计方法,所述方法包括:将微处理器程序架构划分为四个区,包括BOOT程序区(即图1中的BOOT区)、应用程序区(即图1中的APP区)、配置信息区(即图1中的BACK区)以及程序备份区(即图1中的BASE_INFO_CONF区);且通过所述BOOT程序区实现在线烧写程序和远程升级程序;通过所述应用程序区实现外设模块接口的调用;通过所述配置信息区存储配置参数;通过所述程序备份区实现APP程序或者配置信息的升级备份。

其中,所述BOOT程序区分配有24KB的存储空间,分配给BOOT程序区的地址为:0x08000000--0x8006000;所述APP应用程序区分配有100KB的存储空间,分配给APP应用程序区的地址为:0x08006000--0x0801F000;所述信息配置区分配有100KB的存储空间,分配给信息配置区的地址为:0x0801F000--0x08038000;所述程序备份区分配有32KB的存储空间,分配给程序备份区的地址为:0x08038000--0x0803FFFF。

所述“通过所述BOOT程序区实现在线烧写程序”具体包括:

系统上电后,所述BOOT程序区开始运行BOOT程序,并判断是否进入ISP模式,若是,则进入ISP模式,并等待接收数据包;若否,则正常运行BOOT程序;进入ISP模式后,通过PC端先向所述BOOT程序区发送一个握手命令判断是否接收数据包信息,若BOOT程序区应答是,则PC端开始向BOOT程序区发送数据包信息;若BOOT程序区应答否,则PC端不向BOOT程序区发送数据包信息;所述数据包信息包含数据头、数据长度、数据命令、数据内容、CRC校验码以及包尾。以传输十六进制的数据为例,判断是否进入ISP模式命令:04(数据头)06 00(数据长度)00 00 01(数据命令)53(数据内容)46D4(CRC校验)06(包尾);应答进入ISP模式命令:04(包头)06 00(数据长度两个字节)00 00 01(数据命令)00(数据内容)D0BE(CRC校验)06(包尾)。

BOOT程序区在接收到完整的数据包信息后(即BOOT程序区在烧写时,会传输一个数据包,数据包的大小最大为4k,以减少内存的使用情况),判断CRC校验码是否正确,若否,则返回重发指令给PC端,PC端重新发送数据包信息给BOOT程序区;若是,则从数据包信息中解析出指定的烧写地址以及烧写的数据,其中,烧写地址包含在数据内容中,并将数据烧写到指定的烧写地址中,例如,指定的烧写地址为0x08006000,此时就将数据烧写到这个地址中。

所述“通过所述程序备份区实现APP程序或者配置信息的升级备份”具体包括:

远程PC端通过升级协议向APP应用程序区推送升级文件,所述升级协议中包含文件大小、文件类型、文件CRC校验码、文件内容以及文件的数据包个数,以推送一个十六进制的文件数据为例:04(包头)30 00(数据长度)00a0 01(命令号)[29 00(文件大小)01(文件类型)1C 00(文件命令)53 65 72 76 5F 72 66 69 64 5F 32 30 31 35 2D 31 30 2D 31 35 2E 62 69 6E 2E 62 69 6E(文件名称)FC 46 00 00(文件大小)00 08(传输文件包数两个字节)6E DA FF FF(文件校验4个字节)](文件包内容)70 8D(数据包校验两个字节)06(包尾)。所述升级文件为APP程序升级文件或者配置信息升级文件;APP应用程序区在接收到完整的升级文件后,例如升级文件中包含有5个数据包,则APP应用程序区需要接收到5个数据包才算完整,且只有接收到完整的升级文件后才可以进行升级,判断文件CRC校验码是否正确,若否,则返回重发指令给远程PC端,远程PC端重新发送升级文件给APP应用程序区;若是,则将升级文件备份到程序备份区,且若升级文件为APP程序升级文件,则生成一对应的APP程序升级标志;若升级文件为配置信息升级文件,则生成一对应的配置信息升级标志。其中,APP程序升级标志和配置信息升级标志用于BOOT程序区进行升级时使用。

所述“通过所述BOOT程序区实现远程升级程序”具体包括:

BOOT程序正常运行后,BOOT程序区检测程序备份区是否存在APP程序升级标志或者配置信息升级标志,若存在,则将APP程序升级文件拷贝到应用程序区进行升级并运行APP程序,或者将配置信息升级文件拷贝到配置信息区进行升级,且删除APP程序升级标志或者配置信息升级标志;若不存在,则直接运行应用程序区中的APP程序;

同时,在运行APP程序的过程中,若出现程序损坏(例如读卡器在非正常操作的情况,就可能导致APP程序损坏,使APP程序无法正常启动),则从程序备份区拷贝APP程序升级文件至应用程序区,并重新运行APP程序。

所述“通过所述应用程序区实现外设模块接口的调用”具体包括:客户端向应用程序区发送调用命令数据包,所述调用命令数据包中包含数据头、调用的外设模块、数据长度、CRC校验码、数据内容以及包尾,例如探测卡片命令:04(数据头)06 00(数据长度)00 03 01(命令号)00(数据内容)25 66(校验码)06(包尾)。应用程序区在接收到完整的调用命令数据包后,判断CRC校验码是否正确,若否,则返回重发指令给客户端,客户端重新向应用程序区发送调用命令数据包;若是,则解析出调用的外设模块,并调用相应的接口。

所述“通过所述配置信息区存储配置参数”具体包括:

系统上电后,通过所述BOOT程序区将基本配置参数烧写到所述配置信息区中,所述基本配置参数至少包含厂家的协议版本以及外设模块的使能情况,当然,还可以包含特殊数据命令的加密方式,系统使用时间,开机次数,产品的客户类型,产品的生产日期等相关参数;且在系统第一次上电时,应用程序区先从该配置信息区获取微处理器芯片的唯一ID(每块微处理器芯片都具有一个唯一ID),并利用加密算法(可以是对称加密算法或者非对称加密算法)生成一加密数据,之后将加密数据写入到配置信息区中;通过将加密数据写入配置信息区,可以防止外面的硬件暴力破解程序,所谓暴力破解方式就是直接读取用户的芯片数据信息并拷贝程序。

在运行APP程序时,APP程序从配置信息区读取基本配置参数,并根据基本配置参数确定厂家的协议版本以及外设模块的使能情况;同时,APP程序读取微处理器芯片的唯一ID,利用加密算法生成一加密结果,并将加密结果与配置信息区中的加密数据进行比对,且若比对结果一致,则正常运行APP程序;若比对结果不一致,则执行开机自销毁操作,有效的防止了程序的硬破解。

所述“通过所述配置信息区存储配置参数”还包括:

BOOT程序正常运行后,通过PC端向应用程序区下发配置指令,应用程序区从配置信息区读取基本配置参数,并将读取的基本配置参数返回到PC端进行修改,之后将修改后的基本配置参数写入到配置信息区中。在具体实施时,可以在不修改应用程序的情况下,通过修改基本配置参数来实现终端产品的应用程序,并可以对接多个客户(例如,原有的基本配置参数只能够对接客户A,通过修改基本配置参数后,就可以实现同时对接客户A、客户B等多个客户),这有助于减少软件的维护成本。

总之,本发明具有如下优点:通过对程序架构的划分,使得在更新程序的时候,可以只更新对应区域的内容,而无需整片擦除和烧写,比如只要更新应用程序区中的APP程序,或者只修改配置信息区中的基本配置参数,这可以缩短软件的更新时间。且在不增加额外存储集成电路的情况下,实现远程升级程序和更新配置参数,可以降低开发成本,提高系统稳定性,提高生产效率,并增加芯片的使用寿命,提高软件售后维护、升级的方便性。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

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