本发明专利技术涉及一种基于资源共享的组件间通信方法,通过维护一个全局的Alarm及其对应的OS任务和通信OS事件的共享资源堆栈,实现AUTOSAR组件间通信的超时监控功能,并在不同通信事件中共享Alarm,同时把同一个OS任务中的由通信活动触发的所有的通信完成事件和超时事件映射到同一个通信OS事件,实现资源使用优化。
【技术实现步骤摘要】
本专利技术涉及数字信息的传输领域,尤其涉及汽车开放系统架构(AUT0SAR)中一种 基于资源共享的组件间通信方法。
技术介绍
为了应对当代汽车中日益复杂的电子软件系统,控制电控软件日益增长的复杂 度,欧日的主要汽车生产商和一些芯片制造商推出了名为开放汽车系统架构(AUT0SAR)的 产业标准。与此同时,伴随着复杂的车载功能的增多,汽车上使用的电控芯片(ECU)的数量 也日益增多,对于大多数经济型轿车而言,过多的ECU对汽车的成本控制带来了极大的考 验。因此,如何利用有限的资源部署更多的软件功能,实现节能减排,是一个非常重要及有 意义的问题。AUT0SAR将电子软件架构分成上层应用软件组件层、中间运行时环境和下层基础 服务以及硬件抽象层等四层。在应用软件层中,各个软件组件遵照标准格式定义自己与外 部通信的端口和端口接口类型,其通信行为的具体实现由下层的运行时环境(RTE)来提供, RTE主要使用OS和COM服务来实现应用软件组件间的各种通信行为,同时也会转发应用软 件组件对下层基础服务层的通信服务请求,达到实现虚拟总线的效果。软件组件的通信分 为S/R和C/S两种,前者是数据传递,后者是服务调用。这两种通信的实现方法是RTE代码 生成器根据系统配置描述和ECU配置描述,动态的生成实际的代码。不同的配置描述所生 成的代码完全不同。在这两种通信中,AUT0SAR允许发起方组件设置一个超时时间,当接收 方组件在给定时间内收到所发数据或者完成所请求服务时,返回给客户组件一个完成事件 (S/R中是数据发送完成事件,C/S中是服务完成事件),否则返回通信超时事件。基于此, RTE对此通行功能通常实现需要使用一个Alarm来定时,两个OS事件来表示通信完成事件 和通信超时事件。不同通信行为需要不同的静态配置的Alarm和OS事件。而通常的嵌入 式操作系统允许使用的Alarm和OS事件资源都是有限的,且过多的这类资源会严重影响系 统的性能。因此,当系统中此类通信行为增多时,解决对上述两类资源的使用的限制问题具 有很大的实际意义。
技术实现思路
为解决上述问题,本专利技术提供一种节约Alarm及OS资源的一种基于资源共享的组 件间通信方法。未达到上述目的,本专利技术采用的技术方案是一种基于资源共享的组件间通信方 法,其特征在于所述的方法包括如下步骤(1)设置各组件的操作系统(OS)和运行环境(RTE):0S中包括多个OS任务,OS任务可 包括多个通信事件,分配一个用于通信OS事件给需要通信的OS任务,确定多个OS任务中 包括闹钟函数(Alarm) OS任务数量;(2)RTE中包括RTE代码生成器、RET开始函数,所述的RTE代码生成器生成通信的实现代码、Alarm回调函数、Alarm资源堆栈的实现代码,RTE开始函数初始设置包括Alarm的 OS任务;(3)当有通信事件发生时通信事件的发起组件调用RTE的通信API,所述的通信API 从Alarm资源堆栈中摘取栈顶节点并设置栈顶节点对通信OS事件和OS任务的引用,启动 Alarm ;(4)通信事件结束后,发起组件所在的OS任务收到通信OS事件,根据通信的状态位判 断通信事件是否完成,是则进入5,否则启动Alarm,启动Alarm回调函数,进入3 ;(5)释放Alarm,归还栈顶节点给Alarm资源堆栈,进入3。本专利技术的第一优选方案为步骤(2)、(4)所述的Alarm回调函数读取栈顶节点,从 中取出OS任务和通信OS事件的引用,并为所述的OS任务重新设置通信OS事件。本专利技术的第二优选方案为步骤(1)中,根据组件通信OS事件周期,将通信OS事 件的优先级分为高和低,所有短周期的循环通信活动为高,其余归为低,高优先级的通信OS 事件确定了所需Alarm的最少数量为所有需要超时监控的通通信OS事件的数量确定 所需Alarm的最大数量为Nmax,实际分配数量值为Nact: {Nmin+Nmax) /2。本专利技术的第四优选方案为步骤(2)中所述的RET开始函数初始化Alarm资源堆 栈,在需要超时监控的通信OS事件的通信应用程序接口(API)的开始处插入Alarm分配代 码,在Alarm回调函数和通信API结束处插入Alarm释放代码。本专利技术的专利技术思想为通过维护一个全局的Alarm及其对应的OS任务和通信 OS事件的共享资源堆栈,实现AUT0SAR组件间通信的超时监控功能,并在不同通信中共享 Alarm,同时把同一个OS任务中的由通信活动触发的所有的通信完成事件和超时事件映射 到同一个通信OS事件,实现资源使用优化。所述的同一个OS任务中的所有通信完成事件 和超时事件映射到同一个通信OS事件,是指不同通信活动中各有通信完成事件或者超时 事件发生,且这些通信行为都位于同一个OS任务,把所有组件关联的通信完成事件和通信 超时事件映射到同一个通信OS事件上,由于同一个OS任务某时刻只可能处以一个通信活 动中,可以通过所处的通信活动来识别当前通信OS事件对应的通信事件,即用一个通信OS 事件对应多个不同的通信事件。本专利技术的技术优势在于所述的实现资源优化使用,在实际应用中,根据通信的 活跃频率,不需要为每个通信事件分配专有的Alarm和通信OS事件,减少实际需要的Alarm 和通信OS事件的数量。下面结合附图和具体实施方式对本专利技术做进一步说明。 附图说明图1为本实施例组件通信流程图。图2为实施例Alarm资源堆栈图。具体实施例方式参考图1、图2,在完成了 OS与RTE初始配置后,各组件间通信事件按照下例步骤 进行。1.根据配置描述配置Alarm,映射同一个OS任务中的通信事件到一个通信OS事4件。2.初始化Alarm资源堆栈,使用数组表示Alarm资源堆栈,使用全局栈顶指针并 初始化为指向第0个元素,每个数组元素中的下一项索引初始化为其为下一个相邻节点在 数组中的下标。3.通信事件请求分配Alarm,根据栈顶指针从资源堆栈中取栈顶节点分配给该活 动,然后栈顶指针指向该节点中下一个节点索引项指示的下一个节点。设置该节点中的各 个域的值为当前OS任务和任务配置的用于通信OS事件。4.启动Alarm,在Alarm定时触发Alarm回调函数时,归还该Alarm所属节点给 Alarm资源堆栈,即设置该节点的下一个节点索引项为栈顶指针的值,并更新栈顶指针值为 该节点在资源数组中的下标,然后根据该节点中的任务和事件值,为其设置事件,进入3。5.在Alarm触发前,通信活动完成,则取消Alarm,归还栈顶节点给Alarm资源堆 栈,进入3。本专利技术不仅限于上述实施例所示的保护范围,所有基于本实施例的专利技术思想,皆 在本专利技术的保护范围内。权利要求1.,其特征在于所述的方法包括如下步骤(1)设置各组件的操作系统(OS)和运行环境(RTE):0S中包括多个OS任务,OS任务可 包括多个通信事件,分配一个用于通信OS事件给需要通信的OS任务,确定多个OS任务中 包括闹钟函数(Alarm) OS任务数量;(2)RTE中包括RTE代码生成器、RET开始函数,所述的RTE代码生成器生成通信的实 现代码、Alarm回调函数、Alarm资源堆栈的实现代码,RTE开始函数初始设置包括Alarm的 OS任务;(3)当有通信事件发生时通信本文档来自技高网...
【技术保护点】
一种基于资源共享的组件间通信方法,其特征在于:所述的方法包括如下步骤:(1)设置各组件的操作系统(OS)和运行环境(RTE):OS中包括多个OS任务,OS任务可包括多个通信事件,分配一个用于通信OS事件给需要通信的OS任务,确定多个OS任务中包括闹钟函数(Alarm)OS任务数量;(2)RTE中包括RTE代码生成器、RET开始函数,所述的RTE代码生成器生成通信的实现代码、Alarm回调函数、Alarm资源堆栈的实现代码,RTE开始函数初始设置包括Alarm的OS任务;(3)当有通信事件发生时:通信事件的发起组件调用RTE 的通信API,所述的通信API从Alarm资源堆栈中摘取栈顶节点并设置栈顶节点对通信OS事件和OS任务的引用,启动Alarm;(4)通信事件结束后,发起组件所在的OS任务收到通信OS事件,根据通信的状态位判断通信事件是否完成,是则进入5,否则启动Alarm,启动Alarm回调函数,进入3;(5)释放Alarm,归还栈顶节点给Alarm资源堆栈,进入3。
【技术特征摘要】
【专利技术属性】
技术研发人员:杨国青,胡博,彭威,刘敏,赵民德,田帅,刘财志,
申请(专利权)人:浙江大学,
类型:发明
国别省市:86
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。