一种嵌入式系统的软件分离设计的方法

文档序号:6442073阅读:264来源:国知局
专利名称:一种嵌入式系统的软件分离设计的方法
技术领域
本发明涉及嵌入式系统,尤其涉及一种嵌入式系统的软件分离设计方法,尤其可以适用于低性能嵌入式系统中。
背景技术
随着嵌入式技术发展和嵌入式设备的多样化,嵌入式软件功能越来越多,越来越强大,越来越智能化,因此,如何在有限的存储器容量上运行众多应用软件和管理维护众多应用软件成为嵌入式系统经常需要解决关键问题。在实际应用中,嵌入式系统中基本上都具备Flash存储器和RAM存储器两种存储介质,正是由于这两种存储器使得软件固件的存储、引导和启动运行成为可能。软件固件通常情况下下载存储在Flash存储器中,需要运行时才引导到RAM中运行,因此Flash和RAM被广泛用于移动存储、数码相机、MP3播放器、掌上电脑、车载终端等新兴数字设备中。以往嵌入式软件设计和运行的方法是,在低性能嵌入式系统中,选择普通操作系统(如UC/0S等)或者无操作系统,这些操作系统本身不支持平台层和应用层分离设计,不支持应用与应用间分离设计,所有的程序一次性开发完毕,最终编译链接生成一个可执行固件,下载到设备中,当设备上电启动时将整个固件引导到RAM中运行,这类的操作系统对硬件资源要求比较低,可以选择普通的微处理器(如ARM7内核处理器)和普通容量的Flash存储器和RAM存储器。这种方法没有进行分离设计,有如下缺点1.无法分时共享RAM存储器,当设备上电启动时将整个固件引导到RAM中运行,然而不是所有功能在同一时刻都要启动运行的,造成RAM容量浪费,容量大的RAM存储器价格比较昂贵,从而增加产品的成本; 2.不能进行分离维护,不能专人专职,软件维护工作量和难度比较大,同时不利于公司层次化技术保密管理;3.通过数据线下载更新固件时要下载整个固件,需要下载的时间比较长;4.通过移动通信网络无线下载更新固件时要下载整个固件,需要下载的时间比较长, 而且浪费数据流量,产生较多流量费用;5.程序都融合在一起,代码量比较大,调试查找问题比较困难,可靠性比较低;6.不易跨平台移植,平台变更时,往往需要修改很多程序,甚至涉及到应用软件的更改。

发明内容
本发明所要解决的是针对低性能嵌入式系统的普通操作系统或者无操作系统不支持平台层和应用层分离设计产生的技术问题,本发明提供了一种低性能嵌入式系统的软件分离设计方法。为解决上述技术问题,本发明所采用的技术方案包括 将软件的设计划分为平台层和应用层的软件分离设计步骤, 实现应用层动态调用平台层的函数接口 API的设计步骤, 将应用软件可执行固件与操作菜单的绑定步骤,
应用软件可执行固件的引导、跳转和运行的步骤。
进一步的,还包括应用软件可执行固件有效性、合法性的判断步骤,在引导应用软件到RAM执行之前,对每个软件工程编译链接生成的各自独立的可执行固件进行有效性和合法性判断,以正确引导操作菜单所对应的应用软件可执行固件,并避免将文件系统的其他文件当作应用软件可执行固件。进一步的,将软件的设计划分为平台层和应用层的软件分离设计步骤,具体是将软件的设计划分为平台层和应用层,为平台层创建一个独立的软件工程,为应用层的各个应用分别创建独立的软件工程,每个软件工程编译链接生成各自独立的应用软件可执行固件,实现软件分离设计。进一步的,实现应用层动态调用平台层的函数接口 API的设计步骤,是采用分类注册方式,根据驱动的类型将API接口划分为不同类别,每一类都有一个结构体和注册表, 将应用层需要调用的函数接口注册到该注册表中,当平台层引导启动应用软件时,将注册表地址传递给应用层,应用层的应用软件根据注册表地址和结构体成员实现动态调用平台层函数接口。进一步的,将应用软件可执行固件与操作菜单的绑定步骤,是将应用软件与操作菜单进行绑定,当点击相应的操作菜单时,启动引导该操作菜单绑定的应用软件。进一步的,将应用软件可执行固件与操作菜单的绑定步骤,是通过自动方式实现的,具体是首先按照预定的格式编辑映射文件,并将该映射文件放置于设备的可执行固件所在文件夹中,在设备上电启动时平台自动加载解析该映射文件,按照映射文件的描述自动创建生成菜单以及菜单与应用软件的绑定。进一步的,将应用软件可执行固件与操作菜单的绑定步骤,还可以是手动方式,具体是通过界面上的操作菜单手动配置绑定关系,配置后的绑定关系将会存储到映射文件中,当设备上电启动时,平台按照映射文件的描述保持上述手动设置的绑定关系。进一步的,应用软件可执行固件的引导、跳转和运行的步骤,是当点击相应的操作菜单时,拷贝应用软件可执行固件的内容到动态内存块,跳转到动态内存块应用程序入口地址,传递API接口注册表地址和内存块地址,启动运行应用软件。进一步的,应用软件可执行固件包括头信息和内容,头信息包括头标、平台层标志、应用软件标志、固件大小、固件校验和。本发明采用上述步骤,解决了背景技术中所述的低性能嵌入式系统中没有进行分离设计而带来的一系列缺陷,可以选择普通的操作系统或者无操作系统,各应用软件可以独立运行或者同时运行,分时共享程序运行区,对硬件资源的要求比较低,可以选择低端的微处理器、Flash存储器,以及容量较小的RAM存储器,降低产品的硬件成本,提高产品的竞争力;进行分离设计时,可分团队同步研发,分离维护,降低软件维护工作量和难度,同时有利于层次化技术保密管理;采用分离设计,程序耦合性比较低,查找问题比较容易,系统稳定可靠;独立软件工程,生成独立的固件,只要下载需要更新的固件,下载数度快,减少流量,降低通信费用;具有应用软件管理功能,能够自动识别应用软件固件的合法性,避免因人为操作失误或者引导错误应用软件而导致设备系统崩溃,同时能够根据个性化要求自主编辑菜单并绑定菜单与应用软件固件之间的关系;容易跨平台移植,如基于ARM硬件平台之间,只需要修改平台层硬件驱动,无需涉及到应用软件的更改。


图1是本发明的软件整体架构示意图2是本发明的实施例的软件整体架构示意图; 图3是本发明中函数接口 API设计示意图; 图4是本发明中可执行固件有效性判断流程图; 图5是本发明中可执行固件合法性判断流程图; 图6是本发明中可执行固件绑定流程图; 图7是本发明中应用软件启动流程图。
具体实施例方式现结合附图和具体实施方式
对本发明进一步说明。本实施例所采用的技术方案包括
一将软件的设计划分为平台层和应用层的软件分离设计步骤,具体是将软件的设计划分为平台层和应用层,为平台层创建一个独立的软件工程,为应用层的各个应用分别创建独立的软件工程,每个软件工程编译链接生成各自独立的应用软件可执行固件,实现软件分离设计;
一实现应用层动态调用平台层的函数接口 API的设计步骤,是采用分类注册方式,根据驱动的类型将API接口划分为不同类别,每一类都有一个结构体和注册表,将应用层需要调用的函数接口注册到该注册表中,当平台层引导启动应用软件时,将注册表地址传递给应用层,应用层的应用软件根据注册表地址和结构体成员实现动态调用平台层函数接 Π ;
一将应用软件可执行固件与操作菜单的绑定步骤,是将应用软件与操作菜单进行绑定,当点击相应的操作菜单时,启动引导该操作菜单绑定的应用软件;
一应用软件可执行固件有效性、合法性的判断步骤,在引导应用软件到RAM执行之前, 对每个软件工程编译链接生成的各自独立的可执行固件进行有效性和合法性判断,以正确引导操作菜单所对应的应用软件可执行固件,并避免将文件系统的其他文件当作应用软件可执行固件;
一应用软件可执行固件的引导、跳转和运行的步骤,当点击相应的操作菜单时,拷贝应用软件可执行固件的内容到动态内存块,跳转到动态内存块应用程序入口地址,传递API 接口注册表地址和内存块地址,启动运行应用软件。进一步的,应用软件可执行固件包括头信息和内容,头信息包括头标、平台层标志、应用软件标志、固件大小、固件校验和。下面具体结合实际应用场景来说明上述方案。GPS车载终端是一个安装在车辆上的主机设备,包含了 ARM微处理器、存储器RAM、 Flash、外围输入输出接口 I/0、IXD显示屏、GPRS移动通信模块和GPS卫星定位模块的子系统,主要起到移动网络无线数据通信、GPS卫星定位功能、界面显示。GPS车载终端安装在车辆上,主要实现自主导航、网络导航、电子狗、拍照、打电话等功能,这些功能相对独立,基本上不会在同一时刻都同时开启,因此可以将这些功能独立划分开来,每一种功能都作为一个应用软件,需要应用是打开启动应用软件,不用时关闭,以达到共享程序运行区目的。
具体应用上述方案,如图1和图2所示,首先在软件设计时将软件整体架构划分为两层平台层和应用层,为平台层创建一个独立的软件工程,为应用层的各个应用分别创建独立的软件工程,如车载终端系统中的自主导航、网络导航、电子狗、打电话等应用,每个软件工程编译链接生成各自独立的应用软件可执行固件,平台层主要包括硬件驱动计、运行环境搭建、API接口设计,为应用层提供运行环境和硬件资源,并封装程序接口,为上层应用提供丰富的API接口,同时引导运行上层应用软件。平台层一般情况下无需经常更改维护。 应用层主要实现用户定制功能的应用软件,当用户需要添加或者删除某个应用功能时,只需要在应用层对应用软件进行下载安装或卸载删除即可。其次,如图3所示,实现应用层动态调用平台层的函数接口 API的设计一个系统中的驱动往往有很多,如文件系统、串口、网络等,因此根据驱动类将API接口人为划分为几类,每一类都有一个结构体和注册表,将应用层需要调用的函数接口注册到该注册表中, 当平台层引导启动应用软件时,将注册表地址传递给应用软件,应用软件根据注册表地址和结构体成员实现动态调用平台层函数接口。再次,由于系统的应用软件很多,设备文件系统中的可执行固件和文件也很多,为了避免因人为操作失误或者引导错误文件而导致设备系统崩溃,对应用软件可执行固件有效性和合法性进行判断,图4是有效性的判断流程,图5是合法性判断的流程。其中在进行合法性判断时,同时可以区分识别应用软件可运行的平台以及应用软件版本,应用软件可执行固件包括头信息和内容,头信息包括头标、平台层标志、应用软件标志、固件大小、固件校验和,因此可以通过可执行固件的头信息来识别其合法性,首先判断头标的合法性,如果头标等于规定的值,则继续判断,如果非法则返回固件格式非法;然后判断平台标志的合法性,根据平台标志,可以获取该应用软件可运行平台的信息,平台层可通过这些信息判断应用软件是否可在平台上运行,如果符合运行条件,则继续向下判断,否则返回固件格式非法;接下来判断应用软件标志合法性,根据应用软件标志,可以获取应用软件版本号、开发者、开发日期等信息,平台层可通过这些信息判断应用软件是否可在平台上运行,如果符合运行条件,则继续向下判断,否则返回固件格式非法;最后判断校验和的合法性,按照一定的校验和算法计算校验和正确与否,正确则返回固件格式合法,否则返回固件格式非法。接下来,为了用户使用方便,进行应用软件可执行固件与操作菜单绑定,可采用如图6所示的两种方式进行绑定,具体可通过自动方式或手动方式实现,当选择通过自动方式时,首先按照预定的格式编辑映射文件,并将该映射文件放置于设备的可执行固件所在文件夹中,在设备上电启动时平台自动加载解析该映射文件,按照映射文件的描述自动创建生成菜单以及菜单与应用软件的绑定;当选择通过手动方式时,具体是通过界面上的操作菜单手动配置绑定关系,配置后的绑定关系将会存储到映射文件中,当设备上电启动时, 平台按照映射文件的描述保持上述手动设置的绑定关系。最后,做好上述准备工作,就可以进行应用软件可执行固件的引导、跳转和运行, 如图7所示,首先嵌入式设备开机运行,平台层的代码启动,进入待机界面;用户操作LCD显示屏上的菜单界面,选择确认需要开启的应用功能;判断选择的菜单所对应的可执行固件是否有效,是则继续下一步,否则弹出菜单提示“应用错误,重新下载应用软件”,并返回;申请动态内存块,判断是否申请成功,是则继续下一步,否则弹出菜单提示“内存不足,先关闭其他应用”,并返回;拷贝可执行固件内容到动态内存块,跳转到动态内存块应用程序入口地址,传递API接口注册表地址和内存块地址,启动运行应用软件。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
权利要求
1.一种嵌入式系统的软件分离设计方法,包括将软件的设计划分为平台层和应用层的软件分离设计步骤,实现应用层动态调用平台层的函数接口 API的设计步骤,将应用软件可执行固件与操作菜单的绑定步骤,应用软件可执行固件的引导、跳转和运行的步骤。
2.根据权利要求1所述的嵌入式系统的软件分离设计方法,其特征在于还包括应用软件可执行固件有效性、合法性的判断步骤,在引导应用软件到RAM执行之前,对每个软件工程编译链接生成的各自独立的可执行固件进行有效性和合法性判断,以正确引导操作菜单所对应的应用软件可执行固件,并避免将文件系统的其他文件当作应用软件可执行固件。
3.根据权利要求1或2所述的嵌入式系统的软件分离设计方法,其特征在于将软件的设计划分为平台层和应用层的软件分离设计步骤,具体是将软件的设计划分为平台层和应用层,为平台层创建一个独立的软件工程,为应用层的各个应用分别创建独立的软件工程,每个软件工程编译链接生成各自独立的应用软件可执行固件,实现软件分离设计。
4.根据权利要求1或2所述的嵌入式系统的软件分离设计方法,其特征在于实现应用层动态调用平台层的函数接口 API的设计步骤,是采用分类注册方式,根据驱动的类型将API接口划分为不同类别,每一类都有一个结构体和注册表,将应用层需要调用的函数接口注册到该注册表中,当平台层引导启动应用软件时,将注册表地址传递给应用层,应用层的应用软件根据注册表地址和结构体成员实现动态调用平台层函数接口。
5.根据权利要求1或2所述的嵌入式系统的软件分离设计方法,其特征在于将应用软件可执行固件与操作菜单的绑定步骤,是将应用软件与操作菜单进行绑定,当点击相应的操作菜单时,启动引导该操作菜单绑定的应用软件。
6.根据权利要求5所述的嵌入式系统的软件分离设计方法,其特征在于将应用软件可执行固件与操作菜单的绑定步骤,是通过自动方式实现的,具体是首先按照预定的格式编辑映射文件,并将该映射文件放置于设备的可执行固件所在文件夹中,在设备上电启动时平台自动加载解析该映射文件,按照映射文件的描述自动创建生成菜单以及菜单与应用软件的绑定。
7.根据权利要求5所述的嵌入式系统的软件分离设计方法,其特征在于按照预定的格式编辑映射文件,具体是通过映射文件编辑软件实现的。
8.根据权利要求5所述的嵌入式系统的软件分离设计方法,其特征在于将应用软件可执行固件与操作菜单的绑定步骤,是通过手动方式实现的,具体是通过界面上的操作菜单手动配置绑定关系,配置后的绑定关系将会存储到映射文件中,当设备上电启动时,平台按照映射文件的描述保持上述手动设置的绑定关系。
9.根据权利要求1或2所述的嵌入式系统的软件分离设计方法,其特征在于应用软件可执行固件的引导、跳转和运行的步骤,是当点击相应的操作菜单时,拷贝应用软件可执行固件的内容到动态内存块,跳转到动态内存块应用程序入口地址,传递API接口注册表地址和内存块地址,启动运行应用软件。
10.根据权利要求1或2所述的嵌入式系统的软件分离设计方法,其特征在于应用软件可执行固件包括头信息和内容,头信息包括头标、平台层标志、应用软件标志、固件大小、 固件校验和。
全文摘要
本发明涉及嵌入式系统,尤其涉及一种低性能嵌入式系统的软件分离设计方法。其包括将软件的设计划分为平台层和应用层的软件分离设计步骤,实现应用层动态调用平台层的函数接口API的设计步骤,将应用软件可执行固件与操作菜单的绑定步骤,应用软件可执行固件的引导、跳转和运行的步骤。还包括应用软件可执行固件有效性、合法性的判断步骤,即在引导应用软件到RAM执行之前,对每个可执行固件进行有效性和合法性判断,以正确引导操作菜单所对应的应用软件可执行固件,并避免将文件系统的其他文件当作应用软件可执行固件。本发明应用于在低性能嵌入式系统中对于普通操作系统或者无操作系统的平台层和应用层进行分离设计。
文档编号G06F9/44GK102520957SQ201110426710
公开日2012年6月27日 申请日期2011年12月19日 优先权日2011年12月19日
发明者叶德焰, 李基勇, 赖荣东, 陈从华, 陈挺, 黄运峰 申请人:厦门雅迅网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1