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

文档序号:8527630阅读:313来源:国知局
一种软件封装方法及一种汽车电子控制器的制造方法
【技术领域】
[0001]本发明涉及汽车技术领域,特别是涉及一种软件封装方法及相应的汽车电子控制器。
【背景技术】
[0002]汽车电子控制器出产后,需要对其进行软件刷写,才能使其正常工作。当软件代码有改动时,常规的做法是对所有代码进行一次集成,擦除ECU内原目标文件并重新刷写新集成的目标文件。进行软件版本管理与维护时,需要保证所有代码的正确性。这一系列的操作步骤太过繁琐,任何一环节出现问题都将导致ECU失效甚至出现错误导致车辆存在安全隐患。
[0003]目前的版本管理以所有代码为单位进行统一的软件版本管理,以保证刷写目标文件的正确性。当策略、底层驱动、底层控制逻辑等需要变更时,都需要对所有代码进行一次全面的编译、链接等集成操作。
[0004]当前的版本管理以代码为单位进行统一的软件版本管理,对整个代码群进行全面集成的动作需要保证所有集成代码的正确性,当代码集中无需变更的代码有带有并不需要的修改或变化时,对于本次的变更会造成影响。
[0005]因此希望有一种软件封装方法来克服或至少减轻现有技术的上述缺陷中的一个或多个。

【发明内容】

[0006]动态库(Dynamic Link Library (DLL))即动态链接库。DLL是包含多代码和数据的库,它可被多个程序同时使用,但DLL不是可执行文件。动态连接提供了一种方法,使得程序可以调用不属于其可执行代码的函数,所述函数的可执行代码位于一个动态库中。该动态库包含一个或多个已编译、链接并与使用它们的程序进行分开存储的函数。
[0007]模块化设计是指程序的编写并非开始就逐条录入计算机语句和指令,而是用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。
[0008]FTP对应的英文为File Transfer Control Protocol,即文件传输协议。FTP用于主机间共享文件。FTP采用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。FTP属于网络协议族的应用层,FTP客户端可以给服务器发出命令来下载、上传文件,创建或改变服务器上的目录。
[0009]本发明的目的在于提供一种基于动态库的软件封装方法来克服或至少减轻现有技术的上述缺陷中的一个或多个。
[0010]为实现上述目的,本发明提供一种软件封装方法,所述软件封装方法包括下述步骤:步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。所述方法是基于动态库的软件封装方法。
[0011 ] 优选地,步骤S2包括下述步骤:
[0012]步骤S21:控制器上电以及连接存储有所述软件的电脑与控制器;
[0013]步骤S22:对控制器进行bootloader的刷写;
[0014]步骤S23:将所述主控程序和任务配置文件刷写至控制器;
[0015]步骤S24:上传所有动态库到控制器;以及
[0016]步骤S25:重置主控程序。
[0017]优选地,在修改所述软件时,仅编译、集成需改动的模块,并将之封装成动态库。
[0018]优选地,所述软件封装方法进一步包括下述步骤:
[0019]S31:控制器上电以及连接存储有变动的动态库的电脑与控制器;
[0020]S32:把所述变动的动态库从电脑载入至控制器的相应目录中;以及
[0021]S33:重置主控程序。
[0022]优选地,所述动态库的数量为多个,每个动态库对应于同一种类的功能模块。
[0023]优选地,所述任务配置文件包括所有任务所属动态库名称、路径、任务的执行周期、所属任务的顺序编号。
[0024]优选地,在步骤S21中,采用BDM或JTAG连接电脑与控制器。
[0025]优选地,所述软件是基于Iinux平台的。
[0026]优选地,步骤SI包括下述步骤:
[0027]Sll:进行软件模块分析,裁剪Iinux内核,保留任务管理、资源管理、动态库调用功能,以及在OS内创建路径,用于存储任务配置文件和动态库;
[0028]S12:设计基于OS的主控程序,该主控程序独立于芯片型号、功能模块的变更;
[0029]S13:根据模块分类,集成各个模块,生成动态库;以及
[0030]S14:编辑任务配置文件。
[0031]优选地,所述控制器为汽车电子控制器。
[0032]本发明还提供一种汽车电子控制器,所述汽车电子控制器内封装的软件包括主控程序、任务配置文件和动态库,所述汽车电子控制器支持CAN通讯和网口通讯。
[0033]采用模块化动态库封装的方式,本发明的方法能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。
【附图说明】
[0034]图1是主控程序运行调用图。
[0035]图2是动态库封装软件设计步骤示意图。
[0036]图3是程序设计流程图。
[0037]图4是控制器首次刷写流程图。
[0038]图5是E⑶程序变更后的刷写流程图。
[0039]图6是E⑶端FTP服务器工作流程图。
【具体实施方式】
[0040]为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图对本发明的实施例进行详细说明。
[0041]在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底” “内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。
[0042]根据本发明的软件封装方法是基于动态库的,所述软件封装方法包括下述步骤:步骤S1:以模块化方式设计软件,所述软件包括主控程序、任务配置文件和功能模块,所述功能模块集成为动态库;以及步骤S2:将所述主控程序、任务配置文件和动态库载入控制器,其中所述控制器支持CAN通讯和网口通讯。
[0043]需要指出的是,上述的主控程序是基于操作系统(OS)的主控程序,其中含有OS。所述任务配置文件服务于主控程序,供主控程序调度或调用。动态库的数量为多个,有利的是,每个动态库对应于功能相同或相近的多个功能模块。网口通讯可以用于将初始的动态库或变更后的动态库载入控制器中。CAN通讯一方面用于控制器与其他车载电器的通讯,另一方面,还可以用于刷写基于操作系统(OS)的主控程序。
[0044]采用模块化动态库封装的方式,能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。
[0045]在所述软件封装方法中,步骤S2包括下述步骤:
[0046]步骤S21:控制器上电以及连接存储有所述软件的电脑与控制器;
[0047]步骤S22:对控制器进行bootloader的刷写;
[0048]步骤S23:将所述主控程序和任务配置文件刷写至控制器;
[0049]步骤S24:上传所有动态库到控制器;以及
[0050]步骤S25:重置主控程序。
[0051]有利的是,在修改所述软件时,仅编译、集成需改动的模块,并将之封装成动态库。
[0052]从而,所述软件封装方法进一步包括下述步骤:S31:控制器上电以及连接存储有变动的动态库的电脑与控制器;S32:把所述变动的动态库从电脑载入至控制器的相应目录中;以及S33:重置主控程序。由此,容易地实现功能模块的变更。
[0053]优选地,所述动态库的数量为多个,每个动态库对应于同一种类的功能模块。
[0054]可以理解的是,所述任务配置文件包括所有任务所属动态库名称、路径、任务的执行周期、所属任务的顺序编号。
[0055]优选地,在步骤S21中,采用BDM或JTAG连接电脑与控制器。
[0056]优选地,所述软件是基于Iinux平台的。有利的是,步骤SI包括下述步骤:
[0057]Sll:进行软件模块分析,裁剪Iinux内核,保留任务管理、资源管理、动态库调用功能,以及在OS内创建路径,用于存储任务配置文件和动态库;
[0058]S12:设计基于OS的主控程序,该主控程序独立于芯片型号、功能模块的变更;
[0059]S13:根据模块分类,集成各个模块,生成动态库;以及
[0060]S14:编辑任务配置文件。
[0061]优选地,所述控制器为汽车电子控制器。
[0062]可以理解的是,本发明还提供与上述方法相对应的汽车电子控制器。所述汽车电子控制器中的软件以上述方法进行封装。具体地,所述汽车电子控制器内封装的软件包括主控程序、任务配置文件和动态库,所述汽车电子控制器支持CAN通讯和网口通讯。
[0063]采用模块化动态库封装的方式,能够保证开发人员在同时对多个模块进行修改的时候,依次对模块进行更新,不会因改动中的其他模块造成软件发布版本的紊乱,有效的提高了运行代码的准确性,并降低了代码维护的成本。
[0064]图1是主控程序运行调用图。主控程序main根据需要调用各模块对应的动态库,MODEL 1.so、M0DE
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1