一种基于消息转发的ecu间通信方法

文档序号:7889697阅读:196来源:国知局
专利名称:一种基于消息转发的ecu间通信方法
技术领域
本发明涉及汽车电子软件开发技术领域,尤其是涉及一种基于消息转发的ECU间通信方法。
背景技术
随着汽车电子技术和产品在汽车产业中的广泛应用,汽车上的嵌入式应用规模越来越大,目前,汽车上所包含的EOJ (Electronic Control Unit,电控单元)的数量已经扩大到几十个、甚至上百个,因此E⑶间有效通信成为提高汽车电子开发技术质量和效率的重要研究方向。在汽车电子实际应用领域中,CAN (Controller Area Network,控制器局域网)是应用最为广泛的串行总线,它甚至在一辆车上被多次使用低速CAN总线被用来连接舒适系统的E⑶,高速CAN被用来连接动力系统的E⑶。CAN提供了极高的传输安全性,这得益于它采用差分信号传输并同时采用5种错误检测机制。CAN总线通过广播通信,采用了多主竞争式总线结构,是一种多主站运行和分散仲裁的串行总线。CAN总线上的任意节点可以在任意时刻向网络上其它节点发送信息,实现各节点间的自由通信,通过位仲裁来解决当两个站点同时发送数据产生的冲突,具有最低二进制数的CAN ID具有最高的优先级。AUT0SAR (AUTomotive Open System Architecture)是汽车电子开放系统架构的简称,规定了一整套汽车电子开发的方法论,包括系统配置和E⑶(Electronic Control Unit,电控单元)配置阶段。系统配置(System Configuration)是方法论的第一个环节,它定义了系统中软件架构、硬件拓扑、网络通信和系统映射等配置信息,通过定义软件架构和硬件拓扑的分离,实现了软硬件的解耦。ECU配置阶段通过提取系统配置生成的单个ECU抽取结果,针对每个特定的电控单元进行配置,包括常见的操作系统(OS),运行时环境(RTE) 等和基础软件模块(BSW)的配置,自动生成用户的配置代码和ECU配置描述文件。复杂的系统内部会有成千上万的软件组件,并且软件组件之间有一定的通信关系。按照系统配置时软件组件到ECU映射的不同,软件组件间的通信关系可以划分为ECU 内部通信和E⑶间通信。在同一个E⑶上的软件组件通信E⑶内部即可完成,而分布在不同ECU上的软件组件通信在真实的汽车电子环境中是通过汽车上常用的总线来消息发送和接收的。在通常的汽车电子软件开发中,为了验证软件组件之间的消息通信的正确与否, 可以在真实的环境和ECU硬件平台上搭建运行环境进而观察和分析结果。但是,这无形中延长了软件的开发周期,增加了系统开发的复杂度和成本。同时,由于在系统开发的早期阶段,还无法得到系统最终运行的真实环境和ECU硬件平台,如果有一个仿真平台,能在开发的早期阶段搭建好一个仿真的环境对软件组件间通信进行验证测试,从而较早的发现和纠正软件的逻辑错误,提高系统开发的效率。综上所述,面对日趋复杂的汽车电子软件产品,基于AUT0SAR方法论的软件开发, 在系统开发的早期阶段搭建一个仿真环境,支持位于不同E⑶上的软件组件之间通信的仿真验证,本发明基于CAN总线“仲裁机制”的消息广播特点,提出一种软件实现ECU之间消息通信的方法,即基于消息转发的ECU间通信方法。

发明内容
为了避免传统的在AUT0SAR开发完成ECU配置后,再搭建硬件在环仿真平台付出的昂贵代价,克服在开发过程中配置和生成代码容易出错的缺点,本发明提供了一种基于消息转发的ECU间通信方法,为不同ECU上的软件组件间通信的仿真验证提供支持。一种基于消息转发的E⑶间通信方法,包括如下步骤
1)、分析并建立系统中的静态消息路由表
(I. D获取系统中的顶层组合组件;
(I. 2)利用组件抹平算法将软件组件转化为单层结构,更新软件组件到电控单元的映射关系和数据元素到系统信号的映射关系;
(I. 3)获得系统中所有的系统映射信息;
(1.4)分析系统中数据元素到系统信号的映射关系,建立不同电控单元间的通信关系,分别填充源地址和目的地址信息,数据元素和系统信号信息,完成静态消息路由表的建立;
2)、消息转发器完成消息转发的工作
(2. I)消息转发器主线程负责监听各个电控单元节点中CAN Driver的套接字连接请求,并创建子线程用于和每个发出建立连接请求的电控单元节点建立套接字连接;
(2. 2)消息转发器等待发送E⑶中CAN Driver调用Can_Write发送消息,在消息转发器中发送E⑶对应的子线程接收消息,并发送接收应答给CAN Driver ;
(2. 3)发送ECU对应的子线程查找消息路由表,得到目的ECU对应的子线程,最终目的 ECU对应的子线程完成消息转发。进一步的,所述静态消息路由表包含的信息有源电控单元,目标电控单元,数据兀素,系统信号。进一步的,所述步骤(I. 2)利用组件抹平算法将软件组件转化为单层结构的步骤包括
(I. 2. I)将组件结构按照组件包含关系建立为树结构;
(I. 2. 2)从叶节点到根节点遍历树结构,若组件组件为非根节点的组合组件类型,则提取该组合组件中的所有软件组件实例;否则,若到达了根节点,则退出完成抹平;
(I. 2. 3)对每个软件组件实例,复制其到该组合组件的父节点中并更新软件组件实例间的连接关系,在该组合组件的父节点中删除该组合组件实例。进一步的,所述步骤(I. 4)分析系统中数据元素到系统信号的映射信息,建立静态消息路由表的步骤包括
(1.4. I)对系统中每个数据元素到系统信号的映射关系,获得该映射信息中引用的端口信息;
(I. 4. 2)遍历顶层组合组件中包含的所有组装连接线;
(I. 4. 3)对每个组装连接线,如果其引用的提供端或者接收端的端口和数据映射引用的端口相同,获得对应的组件实例;否则,不处理;(I. 4. 4)在系统的软件组件到电控单元映射关系中,查找软件组件实例映射到的电控单元,不是同一个电控单元,则在消息路由表中添加一条记录;否则,不处理;
(I. 4. 5)数据元素到系统信号的映射关系处理完成后,静态消息路由表完成建立。本发明的技术构思是通过对AUT0SAR系统配置中的系统映射信息进行分析,提取建立系统中静态消息路由表,利用建立好的静态消息路由表,提出一种软件实现ECU之间消息通信的方法,即基于消息转发的ECU间通信方法。本方法借鉴了 CAN总线广播发送消息的模式,即基于CAN总线“仲裁机制”的消息广播特点,用软件的方法模拟CAN总线收发CAN帧实现E⑶间通信。本发明具有如下优点
I.本发明借鉴了 CAN总线广播发送消息的模式,通过建立静态消息路由表实现ECU间通信,为支持位于不同ECU上软件组件之间通信的仿真验证提供了一种有效方法。2.本发明实施简单,在AUT0SAR系统配置阶段开发完成后即可仿真验证不同E⑶ 之间的软件组件通信,降低了传统的在开发完成生成可执行代码后,在真实的环境和E⑶ 硬件平台上运行带来的昂贵代价,提高了 AUT0SAR的开发速度。3.本发明可以随时发现软件开发中的错误,弹性调整用户的配置。同时,也为仿真验证CAN总线提供了一个指导方向。


图I本发明分析并建立系统中的静态消息路由表的主流程。图2本发明系统中顶层软件组件的抹平流程。图3本发明中遍历系统中数据映射信息,建立消息路由表的流程。图4本发明消息转发器完成消息转发的工作流程。
具体实施例方式参照附图1-4,对本发明进一步详细说明。一种基于消息转发的E⑶间通信方法,包括以下步骤
I)、分析并建立系统中的静态消息路由表
(I. D获得系统中的顶层组合组件;
(I. 2)利用组件抹平算法将软件组件转化为单层结构,更新系统中软件组件到电控单元的映射关系和数据元素到系统信号的映射关系;
(I. 3)获得系统中所有的系统映射信息,即提取系统中软件组件的连接信息和映射信
(I. 4)分析系统中数据元素到系统信号的映射关系,建立不同电控单元间的通信关系, 分别填充源地址和目的地址信息,数据元素和系统信号信息,完成静态消息路由表的建立。2)、消息转发器完成消息转发的工作
(2. I)消息转发器主线程负责监听各个电控单元节点中CAN Driver的套接字连接请求,并创建子线程用于和每个发出建立连接请求的电控单元节点建立套接字连接;
(2. 2)消息转发器等待发送E⑶中CAN Driver调用Can_Write发送消息;
(2.3)在消息转发器中发送ECU对应的子线程接收消息,并发送接收应答给CANDriver ;
(2. 4)发送E⑶对应的子线程申请资源锁,当申请成功时,根据发送消息内容设置全局数据变量;
(2. 5)发送E⑶对应的子线程查找消息路由表,得到目的E⑶,最后目的E⑶中CAN Driver对应的子线程通过套接字完成消息转发,释放资源锁。进一步,步骤(I. 2)利用组件抹平算法将软件组件转化为单层结构的步骤包括
I. 2. I将组件结构按照组件包含关系建立为树结构;
I. 2. 2从叶节点到根节点遍历树结构,若组件组件为非根节点的组合组件类型,则提取该组合组件中的所有软件组件实例;否则,若到达了根节点,则退出完成抹平;
I. 2. 3对每个软件组件实例,复制其到该组合组件的父节点中并更新软件组件实例间的连接关系,在该组合组件的父节点中删除该组合组件实例。进一步,步骤(I. 4)分析系统中数据元素到系统信号的映射信息,建立静态消息路由表的步骤包括
I. 4. I对系统中每个数据元素到系统信号的映射关系,获得该映射信息中引用的端口信息;
I. 4. 2遍历顶层组合组件中包含的所有组装连接线;
I. 4. 3对每个组装连接线,如果其引用的提供端或者接收端的端口和数据映射引用的端口相同,获得对应的组件实例;否则,不处理;
I. 4. 4在系统的软件组件到电控单元映射关系中,查找软件组件实例映射到的电控单元,不是同一个电控单元,则在消息路由表中添加一条记录;否则,不处理;
I. 4. 5数据元素到系统信号的映射关系处理完成后,静态消息路由表完成建立。本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。
权利要求
1.一种基于消息转发的ECU间通信方法,其特征在于包括如下步骤1)、分析并建立系统中的静态消息路由表(I. O获取系统中的顶层组合组件;(I. 2)利用组件抹平算法将软件组件转化为单层结构,更新软件组件到电控单元的映射关系和数据元素到系统信号的映射关系;(I. 3)获得系统中所有的系统映射信息;(1.4)分析系统中数据元素到系统信号的映射关系,建立不同电控单元间的通信关系,分别填充源地址和目的地址信息,数据元素和系统信号信息,完成静态消息路由表的建立;2)、消息转发器完成消息转发的工作(2. I)消息转发器主线程负责监听各个电控单元节点中CAN Driver的套接字连接请求,并创建子线程用于和每个发出建立连接请求的电控单元节点建立套接字连接;(2. 2)消息转发器等待发送E⑶中CAN Driver调用Can_Write发送消息,在消息转发器中发送E⑶对应的子线程接收消息,并发送接收应答给CAN Driver ;(2. 3)发送ECU对应的子线程查找消息路由表,得到目的ECU对应的子线程,最终目的ECU对应的子线程完成消息转发。
2.根据权利要求I所述的基于消息转发的ECU间通信方法,其特征在于所述静态消息路由表包含的信息有源电控单元,目标电控单元,数据元素,系统信号。
3.根据权利要求I所述的基于消息转发的ECU间通信方法,其特征在于所述步骤 (I. 2)利用组件抹平算法将软件组件转化为单层结构的步骤包括(I. 2. I)将组件结构按照组件包含关系建立为树结构;(I. 2. 2)从叶节点到根节点遍历树结构,若组件组件为非根节点的组合组件类型,则提取该组合组件中的所有软件组件实例;否则,若到达了根节点,则退出完成抹平;(I. 2. 3)对每个软件组件实例,复制其到该组合组件的父节点中并更新软件组件实例间的连接关系,在该组合组件的父节点中删除该组合组件实例。
4.根据权利要求I所述的基于消息转发的ECU间通信方法,其特征在于所述步骤 (I. 4)分析系统中数据元素到系统信号的映射信息,建立静态消息路由表的步骤包括(1.4. I)对系统中每个数据元素到系统信号的映射关系,获得该映射信息中引用的端口信息;(I. 4. 2)遍历顶层组合组件中包含的所有组装连接线;(I. 4. 3)对每个组装连接线,如果其引用的提供端或者接收端的端口和数据映射引用的端口相同,获得对应的组件实例;否则,不处理;(I. 4. 4)在系统的软件组件到电控单元映射关系中,查找软件组件实例映射到的电控单元,不是同一个电控单元,则在消息路由表中添加一条记录;否则,不处理;(I. 4. 5)数据元素到系统信号的映射关系处理完成后,静态消息路由表完成建立。
全文摘要
本发明涉及汽车电子软件开发技术领域,尤其是涉及一种基于消息转发的ECU间通信方法,通过对AUTOSAR系统配置中的系统映射信息进行分析,提取建立系统中静态消息路由表,利用建立好的静态消息路由表,提出一种软件实现ECU之间消息通信的方法,即基于消息转发的ECU间通信方法。基于CAN总线“仲裁机制”的消息广播特点,用软件的方法模拟CAN总线收发CAN帧实现ECU间通信。本发明降低了传统的在开发完成生成可执行代码后,在真实的环境和ECU硬件平台上运行带来的昂贵代价,提高了AUTOSAR的开发速度。
文档编号H04L12/58GK102594685SQ20121003719
公开日2012年7月18日 申请日期2012年2月17日 优先权日2012年2月17日
发明者吴朝晖, 姜旭锋, 孙征, 杨国青, 耿莉莉, 郭徐, 顾宗华 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1