本发明属于嵌入式软件,尤其是基于国产化arm芯片串网兼容自适应加载iap在线编程方法。
背景技术:
1、伴随着国际形势的发展与国内半导体制造技术的提高,国产化芯片制造技术以及基于国产化芯片的应用技术到了蓬勃发展,gd公司gd32f4xx系列国产化arm处理器具有功耗低、接口丰富、运算能力强、自主可控等优点,其作为系统cpu在捷联惯导系统中应用比例得到大幅提升,同时网络通信相对与串行通信具备传输距离长、通信容量大、传输速率高、覆盖面广、协议校验完善等优点,在捷联惯导系统中得到了广泛应用。工程实践中使用gd32f4xx系列处理器必然会涉及到芯片启动引导环节即bootloader软件升级过程,目前普遍使用的引导过程有两种方式,即仿真器结合keil mdk集成开发环境加载方式和isp(in-system programming)借助系统编程加载方式。仿真器结合keil mdk集成开发环境加载方式,应用仿真器连接gd32f4xx芯片jtag或swd调试接口,通过keilmdk集成开发环境访问芯片debugaccess port端口,将应用程序二进制代码烧写于芯片内flash中,重新上电后,处理器自动引导应用程序至cpu中运行;isp加载方式,需首先通过更改芯片引脚配置电平改变芯片启动方式,使芯片上电后进入isp模式,再通过uart1网络将应用程序上传至芯片处理器,借助芯片厂商出厂固化的boot程序,将应用程序二进制代码烧写于芯片内flash中,重新上电后,处理器自动引导应用程序至cpu中运行。
2、对于仿真器结合keilmdk集成开发环境加载的方法,由于gd32f4xx芯片处理器集成在系统电路当中,每次更新应用软件程序均需要对捷联惯导系统进行拆解,再通过仿真器连接芯片调试接口更新软件程序,在相对复杂的导航系统中,拆卸或拆解捷联惯导系统是一个牵扯方面较多相当繁复的过程,因此通过仿真器结合keilmdk集成开发环境加载程序的方法在实际使用中显然存在诸多不便之处;isp(in-system programming)加载方式,则需首先更改芯片管脚配置电平,使芯片上电后进入isp模式,再通过通信接口将应用程序上传至芯片处理器更新到flash中,更改芯片管脚电平需要专门硬件电路配合而且需将相应管脚引出,增加了系统设计难度,同时引出管脚容易受到信号干扰,会出现不需要更新应用程序时意外进入isp模式的情况,信号干扰也可造成通信接口数据传输错误,至使更新到芯片内flash程序有误,造成系统不能正常启动,不能持续稳定可靠工作,给实际工程应用带来诸多不良影响。
技术实现思路
1、本发明的目的在于克服现有技术的不足,提出基于国产化arm芯片串网兼容自适应加载iap在线编程方法,能够在不必拆卸捷联惯导系统、不必增加硬件电路条件下,利用iap(in-application programming)在线可编程技术,具备自适应串行与网络通信接口,既可通过串行通信又可通过网络通信(串网兼容)更新、维护软件程序的优点,增加了数据传输、存储双校验过程,避免传输、存储过程干扰对系统软件升级的影响,而且能够直接引导程序启动运行,省略了处理器重新上电或复位操作,同时即使操作过程产生意外掉电等中断操作,再次启动后烧录程序(即boot程序)仍可正常运行继续烧录过程,稳定可靠的实现了iap自启动软件升级,在实际工程应用过程中具有相当的灵活性与实用性,该技术适用于在捷联惯导系统中应用。
2、本发明解决其技术问题是采取以下技术方案实现的:
3、基于国产化arm芯片串网兼容自适应加载iap在线编程方法,包括以下步骤:
4、步骤1、arm芯片上电复位;
5、步骤2、arm芯片系统进入主闪存存储器启动模式;
6、步骤3、启动烧录程序运行;
7、步骤4、判断程序烧写标志是否有效,若有效则进行步骤5,否则进行步骤14;
8、步骤5、判断是否应用串行接口,若应用则进行步骤7,否则进行步骤6;
9、步骤6、判断是否应用网络接口,若应用则进行步骤7,否则进行步骤14;
10、步骤7、接收应用程序数据;
11、步骤8、判断数据接收是否结束,若结束则进行步骤9,否则返回步骤7;
12、步骤9、校验接收数据;
13、步骤10、判断数据校验是否正确,若正确则进行步骤11,否则返回步骤1;
14、步骤11、应用程序数据存储写入flash;
15、步骤12、校验存储数据;
16、步骤13、判断存储校验是否正确,若正确则进行步骤步骤14,否则返回步骤1;
17、步骤14、清除烧写标志跳转至应用程序入口运行并结束。
18、而且,所述步骤2中在处理器进入主闪存存储器启动模式,芯片将主flash地址0x08000000存储空间映射到0x00000000,执行专门设计的串网兼容烧录程序代码。
19、而且,所述步骤3中烧录程序和步骤11中应用程序数据分别存储在芯片主flash两个独立的地址空间,串网兼容烧录程序存储在flash 0x08000000地址空间。
20、而且,所述步骤4的具体实现方法为:串网兼容烧录程序将会判断flash中的烧录程序标志,如没有被置位,设计人员编写的串网兼容烧录程序将会控制处理器pc指针跳转至应用程序入口地址,应用程序即可正常运行;如被置位,烧录程序接收通过串口或网络发送的需更新的应用程序数据。
21、而且,所述步骤10的具体实现方法为:通过crc校验算法,检验数据正确性,若数据正确则进行步骤11,若数据有误,通过串口或网络发送提示信息,指导操作人员返回步骤1。
22、而且,所述步骤11的具体实现方法为:接收数据校验正确后,利用在线编程技术,将应用程序二进制代码固化在flash应用程序存储空间。
23、而且,所述步骤13的具体实现方法为:读取烧录后存储数据,再次通过crc校验算法,检验数据正确性,若数据正确进行步骤14,若数据有误,通过串口或网络发送提示信息,返回步骤1。
24、而且,所述步骤14的具体实现方法为:存储数据校验正确后,烧录程序清除烧录标志,同时控制处理器pc指针直接跳转至应用程序入口地址,运行更新后程序,应用程序运行后设置中断向量表偏移量,使中断向量表对应应用程序中断,新的应用程序直接正常运行。
25、本发明的优点和积极效果是:
26、本发明能够在不必拆卸捷联惯导系统、不必增加硬件电路条件下,利用iap(in-application programming)在线可编程技术,具备自适应串行与网络通信接口,既可通过串行通信又可通过网络通信(串网兼容)更新、维护软件程序的优点,采用了数据传输、存储双校验过程,避免传输、存储过程干扰对系统软件升级的影响,而且能够直接引导程序启动运行,省略了处理器重新上电或复位操作,同时即使操作过程产生意外掉电等中断操作,再次启动后烧录程序(即boot程序)仍可正常运行继续烧录过程,稳定可靠的实现了iap自启动软件升级,在实际工程应用过程中具有相当的灵活性与实用性。
1.基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤2中在处理器进入主闪存存储器启动模式,芯片将主flash地址0x08000000存储空间映射到0x00000000,执行专门设计的串网兼容烧录程序代码。
3.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤3中烧录程序和步骤11中应用程序数据分别存储在芯片主flash两个独立的地址空间,串网兼容烧录程序存储在flash 0x08000000地址空间。
4.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤4的具体实现方法为:串网兼容烧录程序将会判断flash中的烧录程序标志,如没有被置位,设计人员编写的串网兼容烧录程序将会控制处理器pc指针跳转至应用程序入口地址,应用程序即可正常运行;如被置位,烧录程序接收通过串口或网络发送的需更新的应用程序数据。
5.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤10的具体实现方法为:通过crc校验算法,检验数据正确性,若数据正确则进行步骤11,若数据有误,通过串口或网络发送提示信息,指导操作人员返回步骤1。
6.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤11的具体实现方法为:接收数据校验正确后,利用在线编程技术,将应用程序二进制代码固化在flash应用程序存储空间。
7.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤13的具体实现方法为:读取烧录后存储数据,再次通过crc校验算法,检验数据正确性,若数据正确进行步骤14,若数据有误,通过网络发送提示信息,返回步骤1。
8.根据权利要求1所述的基于国产化arm芯片串网兼容自适应加载iap在线编程方法,其特征在于:所述步骤14的具体实现方法为:存储数据校验正确后,烧录程序清除烧录标志,同时控制处理器pc指针直接跳转至应用程序入口地址,运行更新后程序,应用程序运行后设置中断向量表偏移量,使中断向量表对应应用程序中断,新的应用程序直接正常运行。
