一种嵌入式软件多版本控制系统及方法与流程

文档序号:20916965发布日期:2020-05-29 13:39阅读:333来源:国知局
一种嵌入式软件多版本控制系统及方法与流程

本发明属于车辆电子信息系统技术领域,具体涉及一种嵌入式软件多版本控制系统及方法。



背景技术:

随着电子技术的飞速发展,越来越多的嵌入式产品开始渗透到我们生活的各个角落,从微小的智能传感器到车辆整车系统,到工业生产的大型系统,嵌入式产品无不发挥着极其核心的作用等。在嵌入式产品应用过程中,为了减少开发成本,经常需要对产品进行复用,典型的如以下情形:

1)产品可靠性增长。当已经发布的产品出现可靠性问题,但功能没有任何影响,通过试验确认后,需要对产品实施可靠性增长。对于可靠性增长的产品来说,一般必须满足的要求是原位替换,即增长后的产品能适用于原工作环境,也能适用新的工作环境。这种情况硬件和软件都可能涉及更改。

2)已有产品应用于新环境。如果产品在新的系统中不需要进行硬件变化,例如重量、尺寸、硬件资源、物理电气接口等,那么为了减少开发和维护成本,可以直接通过更改产品软件适用新的系统和工作环境。

如果产品进行了软件的更改,为了保证可靠性增长产品的原位替换能力,一般通过在软件中设置产品状态的标识位(即增长前和增长后)进行判断;或者为了保证产品应用于新系统环境的能力,一般通过在软件中设置所处系统和工作环境的标识位进行判断。根据判断结果对于不同的产品状态或工作环境进入不同的分支,从而进行相应的工作。但如果软件有一大部分可复用,但有关键部分不能复用,例如接口协议发生变更带来的软件更改、软件全局变量、关键处理函数、关键变量内存分配空间等发生变化,在同一个软件中通过分支判断来实现工作状态的切换,势必会造成软件结构的混乱、代码执行效能的低下甚至严重错误等软件可靠性的降低,对软件后续的维护和管理也带来很大麻烦。

综上,研究一种可靠的、方便的嵌入式软件多版本控制方法,可简化复用嵌入式设备过程而不降低软件的可靠性,从而节省开发成本、后期人工维护成本,有很大的工程应用价值和经济效益。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:从软件变更的嵌入式产品复用需求出发,发明一种嵌入式软件的多版本控制方法,简化复用过程,提高软件可靠性,节省产品开发和维护成本。

(二)技术方案

为了解决上述技术问题,本发明提供了一种嵌入式软件多版本控制系统,包括程序存储器1、总线接口4、通用io口5、外部通信总线6、状态触发开关7,其中,所述程序存储器1、总线接口4、通用io口5组成嵌入式处理器;程序存储器1中运行了bootloader引导程序2和应用程序3,bootloader引导程序2位于程序存储器1的起始地址;所述嵌入式处理器通过总线接口4与外部通信总线6连接,接收外部总线数据;嵌入式处理器通过通用io口5与状态触发开关7连接,接收开关电平信号。

优选地,所述bootloader引导程序2包括状态触发开关检测程序8、接口特征数据检测程序9、应用程序入口跳转程序10、通用io驱动11、总线接口驱动12、系统自检和初始化程序13;bootloader引导程序2位于程序存储器1的起始地址,在嵌入式处理器上电时首先执行;工作状态通过外部通信总线6或状态触发开关7输入;bootloader引导程序2通过两种方式实现状态检测逻辑,一是通过状态触发开关检测程序8和通用io驱动11实现,其中通用io驱动11提供检测嵌入式处理器io口电平信号的底层程序接口;二是通过接口特征数据检测程序9和总线接口驱动12实现,其中总线接口驱动12提供检测嵌入式处理器外部总线通信的底层程序接口;bootloader引导程序2根据状态检测结果,通过应用程序入口跳转程序10实现应用程序3多个版本的切换;系统自检和初始化程序13用于实现系统上电时进行硬件状态检查和外设初始化。

本发明还提供了一种利用所述的系统实现的一种嵌入式软件多版本控制方法,包括以下步骤:

首先通过程序下载器将bootloader引导程序2和多个版本的应用程序3写入程序存储器1;其中将bootloader引导程序2写入程序存储器1的起始地址;

嵌入式处理器上电,从程序存储器1起始地址执行,因此首先执行bootloader引导程序2,bootloader引导程序2实现状态触发开关检测程序8、接口特征数据检测程序9、应用程序入口跳转程序10、通用io驱动11、总线接口驱动12、系统自检和初始化程序13。

优选地,执行bootloader引导程序2时,首先执行系统自检和初始化程序13,实现系统上电时进行硬件状态检查和外设初始化,自检通过后,进行工作状态检测判断;

工作状态检测判断通过两种方式来实施,一是在嵌入式处理器外部设置状态触发开关7,将状态触发开关7与处理器通用io口5连接,bootloader引导程序2中的状态触发开关检测程序8和通用io驱动11检测该状态触发开关7的状态,开关状态作为判断标识;二是在通信协议中设计特征信息,bootloader引导程序2中的接口特征数据检测程序9通过总线接口驱动12接收外部通信数据并检测该特征信息,该特征信息作为判断标识。

优选地,工作状态检测判断完成后,应用程序入口跳转程序10根据得到的开关状态或特征信息,查找应用程序版本控制向量表,确认当前嵌入式设备应该工作的环境和应该具有的状态,实现应用程序3多个版本的切换。

优选地,将bootloader引导程序2和多个版本的应用程序3写入程序存储器1时,程序下载地址通过编译器的编译选项来指定。

优选地,将bootloader引导程序2和多个版本的应用程序3写入程序存储器1时,应用程序3的多个版本依次根据前一程序的占用存储空间来确定下载偏移量。

本发明又提供了一种车辆电子信息系统,其特征在于,包括所述的系统。

本发明又提供了一种所述的方法在车辆电子信息系统中的应用。

(三)有益效果

本发明将多个独立发布版本的应用软件集成到程序存储器中,通过起动引导程序实现应用软件版本的选择,避免了在同一个软件中通过复杂的判断逻辑来实现产品工作状态的切换,提高了软件的基本可靠性,很大程度上可以节省开发成本、后期人工维护成本,有重要的工程应用价值和经济效益。本发明的可在多种嵌入式芯片中实施,系统适应性好;可增加并切换多个应用程序版本,可扩展性好且保证了软件的可靠性。

附图说明

图1为本发明系统的总体架构框图;

图2为本发明的程序存储空间分配示意图;

图3为本发明的bootloader程序架构框图;

图4为本发明方法中基于外部状态开关触发引导程序的数据流示意图;

图5为本发明方法中基于外部通信数据特征引导程序的数据流示意图;

其中,1.程序存储器,2.bootloader程序,3.应用程序,4.总线接口,5.通用io口,6.外部通信总线,7.状态触发开关,8.状态触发开关检测程序、9.接口特征数据检测程序、10.应用程序入口跳转程序、11.通用io驱动、12.总线接口驱动、13.系统自检和初始化程序。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

如图1至图3,本发明提供了一种嵌入式软件多版本控制系统,包括程序存储器(1)、总线接口(4)、通用io口(5)、外部通信总线(6)、状态触发开关(7),其中程序存储器(1)、总线接口(4)、通用io口(5)组成嵌入式处理器;程序存储器(1)中运行了bootloader引导程序(2)和应用程序(3);bootloader引导程序(2)包括状态触发开关检测程序(8)、接口特征数据检测程序(9)、应用程序入口跳转程序(10)、通用io驱动(11)、总线接口驱动(12)、系统自检和初始化程序(13);所述嵌入式处理器通过总线接口(4)与外部通信总线(6)连接,接收外部总线数据;嵌入式处理器通过通用io口(5)与状态触发开关(7)连接,接收开关电平信号;

bootloader引导程序(2)位于程序存储器(1)的起始地址,嵌入式处理器上电时首先执行;工作状态通过外部通信总线(6)或状态触发开关(7)输入;bootloader引导程序(2)通过两种方式实现状态检测逻辑,一是通过状态触发开关检测程序(8)和通用io驱动(11)实现,其中通用io驱动(11)提供检测嵌入式处理器io口电平信号的底层程序接口;二是通过接口特征数据检测程序(9)和总线接口驱动(12)实现,其中总线接口驱动(12)提供检测嵌入式处理器外部总线通信的底层程序接口;bootloader引导程序(2)根据状态检测结果,通过应用程序入口跳转程序(10)实现应用程序(3)多个版本的切换;系统自检和初始化程序(13)用于实现系统上电时进行硬件状态检查和外设初始化。

本发明的原理是:bootloader引导程序(2)是系统上电后运行的第一段程序,其作用是完成基本的硬件初始化工作,然后加载应用程序(3)运行。本发明将bootloader引导程序(2)存储于程序存储器(1)的起始地址空间,并通过计算偏移量依次写入多个版本的应用程序(3)。嵌入式处理器上电时,先跳转到起始地址执行bootloader引导程序(2),在bootloader引导程序(2)中,检测工作状态触发条件并根据触发条件确定应用程序(3)执行版本,最后跳转到相应版本应用程序(3)的入口地址。

本发明还基于以上系统提供了一种嵌入式软件多版本控制方法。首先通过程序下载器将bootloader引导程序(2)和多个版本的应用程序(3)写入程序存储器(1)。为了实现本发明所描述方法,尤其应注意每个程序的下载地址和空间偏移,程序下载地址可通过编译器的编译选项来指定。其中,bootloader引导程序(2)应写入程序存储器(1)的起始地址,应用程序(3)的多个版本依次根据前一程序的占用存储空间来确定下载偏移量。

嵌入式处理器上电时一般默认从程序存储器(1)起始地址执行,因此本发明首先执行bootloader引导程序(2),bootloader引导程序(2)实现了状态触发开关检测程序(8)、接口特征数据检测程序(9)、应用程序入口跳转程序(10)、通用io驱动(11)、总线接口驱动(12)、系统自检和初始化程序(13)。其中首先执行系统自检和初始化程序(13),其主要功能是系统上电时进行硬件状态检查和外设初始化。自检通过后,进行工作状态检测判断。

工作状态判断可通过两种方式来实施。参考图4,一是在嵌入式处理器外部设置状态触发开关(7)。将状态触发开关(7)与处理器通用io口(5)连接,bootloader引导程序(2)中的状态触发开关检测程序(8)和通用io驱动(11)检测该状态触发开关(7)的状态,开关状态作为判断标识,其中通用io驱动(11)提供检测嵌入式处理器io口电平信号的底层程序接口;参考图5,二是在通信协议中设计特征信息,bootloader引导程序(2)中的接口特征数据检测程序(9)通过总线接口驱动(12)接收外部通信数据并检测该特征信息,该特征信息作为判断标识,其中总线接口驱动(12)提供检测嵌入式处理器数据通信的底层程序接口。

应用程序入口跳转程序(10)根据前面得到的开关状态或特征信息,查找应用程序版本控制向量表,确认当前嵌入式设备应该工作的环境和应该具有的状态,实现应用程序(3)多个版本的切换。

本发明将多个独立发布版本的应用软件集成到程序存储器中,通过起动引导程序实现应用软件版本的选择,避免了在同一个软件中通过复杂的判断逻辑来实现产品工作状态的切换,提高了软件的基本可靠性,很大程度上可以节省开发成本、后期人工维护成本,有重要的工程应用价值和经济效益。本发明的可在多种嵌入式芯片中实施,系统适应性好;可增加并切换多个应用程序版本,可扩展性好且保证了软件的可靠性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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