一种软件封装方法及一种汽车电子控制器.pdf

上传人:1*** 文档编号:33318 上传时间:2018-01-17 格式:PDF 页数:10 大小:594.68KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410455261.2

申请日:

2014.09.09

公开号:

CN104850015A

公开日:

2015.08.19

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G05B 19/04申请日:20140909|||公开

IPC分类号:

G05B19/04

主分类号:

G05B19/04

申请人:

北汽福田汽车股份有限公司

发明人:

周平

地址:

102206北京市昌平区沙河镇沙阳路

优先权:

专利代理机构:

北京汇智胜知识产权代理事务所(普通合伙)11346

代理人:

朱登河

PDF下载: PDF下载
内容摘要

本发明公开了一种软件封装方法及一种汽车电子控制器,所述软件封装方法包括下述步骤:步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。采用模块化动态库封装的方式,能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。

权利要求书

1.  一种软件封装方法,其特征在于,包括下述步骤:
步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及
步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。

2.
  如权利要求1所述的软件封装方法,其特征在于,步骤S2包括下述步骤:
步骤S21:控制器上电以及连接存储有所述软件的电脑与控制器;
步骤S22:对控制器进行bootloader的刷写;
步骤S23:将所述主控程序和任务配置文件刷写至控制器;
步骤S24:上传所有动态库到控制器;以及
步骤S25:重置主控程序。

3.
  如权利要求1所述的软件封装方法,其特征在于,在修改所述软件时,仅编译、集成需改动的模块,并将之封装成动态库。

4.
  如权利要求1所述的软件封装方法,其特征在于,进一步包括下述步骤:
S31:控制器上电以及连接存储有变动的动态库的电脑与控制器;
S32:把所述变动的动态库从电脑载入至控制器的相应目录中;以及
S33:重置主控程序。

5.
  如权利要求1所述的软件封装方法,其特征在于,所述动态库的数量为多个,每个动态库对应于同一种类的功能模块。

6.
  如权利要求1所述的软件封装方法,其特征在于,所述任务配置文件 包括所有任务所属动态库名称、路径、任务的执行周期、所属任务的顺序编号。

7.
  如权利要求2所述的软件封装方法,其特征在于,在步骤S21中,采用BDM或JTAG连接电脑与控制器。

8.
  如权利要求1-7中任一项所述的软件封装方法,其特征在于,步骤S1包括下述步骤:
S11:进行软件模块分析,裁剪linux内核,保留任务管理、资源管理、动态库调用功能,以及在OS内创建路径,用于存储任务配置文件和动态库;
S12:设计基于OS的主控程序,该主控程序独立于芯片型号、功能模块的变更;
S13:根据模块分类,集成各个模块,生成动态库;以及
S14:编辑任务配置文件。

9.
  如权利要求1-7中任一项所述的软件封装方法,其特征在于,所述控制器为汽车电子控制器。

10.
  一种汽车电子控制器,其特征在于,汽车电子控制器内封装的软件包括主控程序、任务配置文件和动态库,所述汽车电子控制器支持CAN通讯和网口通讯。

说明书

一种软件封装方法及一种汽车电子控制器
技术领域
本发明涉及汽车技术领域,特别是涉及一种软件封装方法及相应的汽车电子控制器。
背景技术
汽车电子控制器出产后,需要对其进行软件刷写,才能使其正常工作。当软件代码有改动时,常规的做法是对所有代码进行一次集成,擦除ECU内原目标文件并重新刷写新集成的目标文件。进行软件版本管理与维护时,需要保证所有代码的正确性。这一系列的操作步骤太过繁琐,任何一环节出现问题都将导致ECU失效甚至出现错误导致车辆存在安全隐患。
目前的版本管理以所有代码为单位进行统一的软件版本管理,以保证刷写目标文件的正确性。当策略、底层驱动、底层控制逻辑等需要变更时,都需要对所有代码进行一次全面的编译、链接等集成操作。
当前的版本管理以代码为单位进行统一的软件版本管理,对整个代码群进行全面集成的动作需要保证所有集成代码的正确性,当代码集中无需变更的代码有带有并不需要的修改或变化时,对于本次的变更会造成影响。
因此希望有一种软件封装方法来克服或至少减轻现有技术的上述缺陷中的一个或多个。
发明内容
动态库(Dynamic Link Library(DLL))即动态链接库。DLL是包含多代码和数据的库,它可被多个程序同时使用,但DLL不是可执行文件。动态连接提供了一种方法,使得程序可以调用不属于其可执行代码的函数,所述函数的可执行代码位于一个动态库中。该动态库包含一个或多个已编译、链接并与使用它们的程序进行分开存储的函数。
模块化设计是指程序的编写并非开始就逐条录入计算机语句和指令,而 是用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。
FTP对应的英文为File Transfer Control Protocol,即文件传输协议。FTP用于主机间共享文件。FTP采用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。FTP属于网络协议族的应用层,FTP客户端可以给服务器发出命令来下载、上传文件,创建或改变服务器上的目录。
本发明的目的在于提供一种基于动态库的软件封装方法来克服或至少减轻现有技术的上述缺陷中的一个或多个。
为实现上述目的,本发明提供一种软件封装方法,所述软件封装方法包括下述步骤:步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。所述方法是基于动态库的软件封装方法。
优选地,步骤S2包括下述步骤:
步骤S21:控制器上电以及连接存储有所述软件的电脑与控制器;
步骤S22:对控制器进行bootloader的刷写;
步骤S23:将所述主控程序和任务配置文件刷写至控制器;
步骤S24:上传所有动态库到控制器;以及
步骤S25:重置主控程序。
优选地,在修改所述软件时,仅编译、集成需改动的模块,并将之封装成动态库。
优选地,所述软件封装方法进一步包括下述步骤:
S31:控制器上电以及连接存储有变动的动态库的电脑与控制器;
S32:把所述变动的动态库从电脑载入至控制器的相应目录中;以及
S33:重置主控程序。
优选地,所述动态库的数量为多个,每个动态库对应于同一种类的功能模块。
优选地,所述任务配置文件包括所有任务所属动态库名称、路径、任务的执行周期、所属任务的顺序编号。
优选地,在步骤S21中,采用BDM或JTAG连接电脑与控制器。
优选地,所述软件是基于linux平台的。
优选地,步骤S1包括下述步骤:
S11:进行软件模块分析,裁剪linux内核,保留任务管理、资源管理、动态库调用功能,以及在OS内创建路径,用于存储任务配置文件和动态库;
S12:设计基于OS的主控程序,该主控程序独立于芯片型号、功能模块的变更;
S13:根据模块分类,集成各个模块,生成动态库;以及
S14:编辑任务配置文件。
优选地,所述控制器为汽车电子控制器。
本发明还提供一种汽车电子控制器,所述汽车电子控制器内封装的软件包括主控程序、任务配置文件和动态库,所述汽车电子控制器支持CAN通讯和网口通讯。
采用模块化动态库封装的方式,本发明的方法能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。
附图说明
图1是主控程序运行调用图。
图2是动态库封装软件设计步骤示意图。
图3是程序设计流程图。
图4是控制器首次刷写流程图。
图5是ECU程序变更后的刷写流程图。
图6是ECU端FTP服务器工作流程图。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图对本发明的实施例进行详细说明。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。
根据本发明的软件封装方法是基于动态库的,所述软件封装方法包括下述步骤:步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。
需要指出的是,上述的主控程序是基于操作系统(OS)的主控程序,其中含有OS。所述任务配置文件服务于主控程序,供主控程序调度或调用。动态库的数量为多个,有利的是,每个动态库对应于功能相同或相近的多个功能模块。网口通讯可以用于将初始的动态库或变更后的动态库载入控制器中。CAN通讯一方面用于控制器与其他车载电器的通讯,另一方面,还可以用于刷写基于操作系统(OS)的主控程序。
采用模块化动态库封装的方式,能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。
在所述软件封装方法中,步骤S2包括下述步骤:
步骤S21:控制器上电以及连接存储有所述软件的电脑与控制器;
步骤S22:对控制器进行bootloader的刷写;
步骤S23:将所述主控程序和任务配置文件刷写至控制器;
步骤S24:上传所有动态库到控制器;以及
步骤S25:重置主控程序。
有利的是,在修改所述软件时,仅编译、集成需改动的模块,并将之封装成动态库。
从而,所述软件封装方法进一步包括下述步骤:S31:控制器上电以及连接存储有变动的动态库的电脑与控制器;S32:把所述变动的动态库从电脑载入至控制器的相应目录中;以及S33:重置主控程序。由此,容易地实现功能模块的变更。
优选地,所述动态库的数量为多个,每个动态库对应于同一种类的功能模块。
可以理解的是,所述任务配置文件包括所有任务所属动态库名称、路径、任务的执行周期、所属任务的顺序编号。
优选地,在步骤S21中,采用BDM或JTAG连接电脑与控制器。
优选地,所述软件是基于linux平台的。有利的是,步骤S1包括下述步骤:
S11:进行软件模块分析,裁剪linux内核,保留任务管理、资源管理、动态库调用功能,以及在OS内创建路径,用于存储任务配置文件和动态库;
S12:设计基于OS的主控程序,该主控程序独立于芯片型号、功能模块的变更;
S13:根据模块分类,集成各个模块,生成动态库;以及
S14:编辑任务配置文件。
优选地,所述控制器为汽车电子控制器。
可以理解的是,本发明还提供与上述方法相对应的汽车电子控制器。所述汽车电子控制器中的软件以上述方法进行封装。具体地,所述汽车电子控制器内封装的软件包括主控程序、任务配置文件和动态库,所述汽车电子控制器 支持CAN通讯和网口通讯。
采用模块化动态库封装的方式,能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。
图1是主控程序运行调用图。主控程序main根据需要调用各模块对应的动态库,MODEL1.so、MODEL2.so等等。
本发明是一种基于linux的模块动态库封装的软件设计方法,在软件设计阶段采用模块动态库封装的方式,在ECU主控程序执行指令时,根据需要调用动态库中的封装函数。使用动态库封装的方式,能够免除代码进行全面的重新编译链接这一过程,只需要编译、集成改动的模块,并封装成动态库即可,在ECU上进行程序刷写时,更新对应的动态库文件即可。采用该方法,可以减少软件进行版本管理及维护的成本,提高效率的同时,可以简化对控制器软件更新的操作。
本发明的硬件配置要求如下。控制器(有利的是汽车电子控制器)在支持CAN通讯的同时也支持网口通讯。FLASH及RAM的大小需要在3M以上,以保证有足够的空间容纳操作系统及进行FTP服务。
动态库封装设计方法基于任务调度运行模式:(1)bootloader刷写入ECU控制器后;(2)ECU控制器上电后bootloader开始工作;(3)bootloader进行自检后引导OS启动,即启动基于OS的主控程序;(4)OS启动的同时将读取任务配置文件内容到RAM,启动Task进程;(5)Task进程根据RAM内Task调度信息调用具体路径下动态库中的函数。具体的设计方法包括平台操作系统、任务配置表、操作系统下主控程序三部分组成。
主控程序main读取任务配置文件内任务信息并将之存入RAM,然后根据RAM内任务优先序号及触发频率一次调用具体动态库中的任务函数。
当控制器投入运营后,对控制器进行维护时,维护人员采用网口连接控制器,使用FTP客户端连接到控制器的FTP服务器上,把需要变更的动态库放入控制器相应的目录。从而实现对功能模块的更新。
为了支持动态链接库的运行,主控程序采用linux操作系统。在软件设计初期,把整个软件结构进行模块化分解,并以模块为单位进行动态库封装。 采用动态库的方式进行软件封装。刷写入ECU的主要有基于操作系统的主控程序和相关模块集成的动态库。主控程序在需要调用具体某一函数时,只需采用动态的方式进行动态库调用即可。当有功能模块进行变更时,对相应的动态库进行处理,然后只需从电脑FTP客户端将处理后的动态库上传到ECU上的指定FTP目录即可。
采用动态库封装的前提的采用模块化设计,才能保证动态库封装的意义。采用动态库封装时,需要有基于OS的主控程序。该主控程序与芯片差异无关,与具体业务也无关,是基于该设计的一个平台,软件维护及变更的前提是主控程序的完整性与正确性。在保证主控程序的正确性的前提下对具体芯片及其项目进行功能上的模块划分,并对各个模块进行动态库的封装。同时需要整理各个模块中任务的执行顺序、周期等属性,并以约定的格式写入任务配置文件中。
参见图2和图3,软件程序设计流程如下。
1、软件模块分析,裁剪linux内核,保留任务管理、资源管理、动态库调用等需要的功能,精简便于OS的高效运行。在OS内创建路径,用于存储任务配置文件和动态库。可以理解的是,也可以采用其他linux之外的操作系统。但采用linux具有更大的设计自由度。
2、设计基于OS的主控(主控程序),该主控程序仅遵循软件架构规则,无论芯片型号、功能模块等的变更与否,主控程序都不会改变,主控程序是该设计方法的支柱之一。也就是说,所述主控程序独立于芯片型号、功能模块的变更。需要指出的是,主控程序也可以是非基于OS的。也就是说,主控程序自身可以不带有操作系统。
3、根据模块分类,集成各个模块,生成动态库。
4、编辑任务配置文件。该配置文件以项目为单位,是每个项目里控制器需要执行的任务的集合。该文件包含了所有任务所属动态库名称、路径、任务的执行周期、所属任务的顺序编号。
5、bootloader引导OS启动后,主控程序进程自动启动。主控程序的首要任务是读取配置文件内的信息,并将任务信息放入RAM内以结构体数组的形式进行存储。
6、主控程序依次读取RAM内任务数组信息,根据任务序号及每个任务的 周期逐一进行任务函数的调用。函数名称、动态库的名称及其路径提供了动态库调用的输入条件。
参见图4,将目标软件首次刷写到控制器的步骤如下。
1、控制器连接接插件,上电;
2、采用BDM或JTAG连接电脑与控制器;
3、使用刷写工具对控制器进行bootloader的刷写;
4、控制器下电再上电,保证控制器内bootloader生效;
5、个人电脑通过PCAN连接控制器,并进行主控程序的刷写;
6、控制器下电再上电,保证控制器内主控程序生效;
7、个人电脑通过网口连接到控制器,并通过FTP客户端连接控制器的FTP服务器,上传所有动态库到控制器;
8、控制器FTP服务器端接收完毕后自动重置基于OS的主控程序,使控制器的软件环境开始生效。
其中,BDM(Background Debugging Mode)是摩托罗拉公司支持的一种OCD((On-Chip Debugging在线调试)的调试模式。通过BDM接口可以完成基本的调试功能,例如:设置断点、读写内存、读写寄存器、下载程序、单步执行程序、运行程序、停止程序运行等。
JTAG是英文“Joint Test Action Group(联合测试行为组织)”的词头字母的简写,该组织成立于1985年,是由几家主要的电子制造商发起制订的PCB和IC测试标准。JTAG建议于1990年被IEEE批准为IEEE1149.1-1990测试访问端口和边界扫描结构标准。该标准规定了进行边界扫描所需要的硬件和软件。JTAG主要应用于:电路的边界扫描测试和可编程芯片的在线系统编程。
图5是ECU程序变更后的刷写流程图。投入运营后,具备运营条件的控制器需要进行变更的时候,只需要在ECU(控制器)通电的情况下,维护人员通过网口连接到控制器的网口,使用FTP上传动态库文件到控制器,控制器接收完成后,发起重置命令,使控制器变更生效。
图6是ECU端FTP服务器工作流程图。控制器端的FTP服务器侦听FTP请求,当接收到FTP请求后,FTP服务器端打开端口,建立网络连接,开始接收客户端的指令。当客户端上传文件到服务器端时,需要在接收完毕时向OS 发起重置指令。OS接收重置指令时,重置其内部运行的主控程序,使得变更生效。
采用动态库的方式能够使各个模块彼此独立,可以以模块为单位进行单独的维护与管理。当同一时期多个模块同时做变更时,可以无需所有模块都变更完毕后再对控制器进行变更。
最后需要指出的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

一种软件封装方法及一种汽车电子控制器.pdf_第1页
第1页 / 共10页
一种软件封装方法及一种汽车电子控制器.pdf_第2页
第2页 / 共10页
一种软件封装方法及一种汽车电子控制器.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种软件封装方法及一种汽车电子控制器.pdf》由会员分享,可在线阅读,更多相关《一种软件封装方法及一种汽车电子控制器.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明公开了一种软件封装方法及一种汽车电子控制器,所述软件封装方法包括下述步骤:步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。采用模块化动态库封装的方式,能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 控制;调节


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1