通用型saej1939协议栈的设计方法

文档序号:7887797阅读:346来源:国知局
专利名称:通用型saej1939协议栈的设计方法
技术领域
本发明属于汽车电子现场总线领域,具体涉及一种对CAN总线的应用层协议 SAEJ1939的协议栈的设计实现方法。
背景技术
在当今的中高档汽车中都采用了汽车总线技术。汽车总线为汽车内部各种复杂的电子设备、控制器、测量仪器等提供了统一数据交换渠道。一些汽车专家认为,就像在20世纪70年代引入集成电路、80年代引入微处理器一样,近10年来数据总线技术的引入也将是汽车电子技术发展的一个里程碑。CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(IS011898)。是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。J1939是美国汽车工程协会(SAE)的推荐标准,用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。它由“卡车与大型客车电气与电子委员会”(Track&Bus Electrical&Electronics Committee)下属的“卡车与大型客车控制和通讯网络附属委员会,,(Track&Bus Control and Communications Network Subcommittee)开发编写。J1939基于德国Bosch公司(Robert Bosch GmbH)开发的控制器局域网络(CAN: ControllerAreaNetwork)。它描述了重型车辆现场总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断和网络管理。相关名词解释I. CANController Area Network,即控制器局域网络。2. SAEJ1939美国汽车工程协会(SAE)的推荐标准。

发明内容
本发明所要解决的问题是现有的SAE J1939协议栈代码量大,移植困难及应用可扩展性差。基于上述问题,本发明提供一种通用型SAEJ1939协议栈的设计方法,应用于嵌入式处理器,所述处理器必须包含CAN总线外设,包括以下步骤步骤一、定义通用型SAEJ1939协议栈的架构为分层结构,采用硬件抽象层、中间层和应用层的三层结构;步骤二、定义CAN报文数据结构,即定义包含CAN报文的各项特性参数的数据结构;
步骤三、软定时器调度机制,即通过软定时器实现报文的定时发送、接收与处理。优选的,上述步骤一具体包括四个步骤1.1)硬件抽象层对CAN总线驱动进行标准化;1.2)中间层调用硬件抽象层接口实现CAN报文的发送、接收与解析;1.3)应用层利用带参数宏对CAN报文信号量进行定义、声明,并利用回调函数来实现对CAN信号量数据的处理;I. 4)应用层采用分层结构来实现SAEJ1939协议栈的在线配置与诊断操作。优选的,上述步骤I. I)具体包括两个步骤2. I) CAN总线驱动包括两种CAN类型的总线控制器驱动,即自带硬件缓冲器的CAN 总线控制器和不带硬件缓冲器的CAN总线控制器;2. 2) CAN总线驱动完成CAN总线控制器的初始化、滤波器的设置、CAN报文的发送与接收工作。优选的,上述步骤2. I)中自带硬件缓冲器的CAN控制器通过轮询的方式直接从硬件缓冲区读取数据解析,不带硬件缓冲器的CAN控制器通过中断的方式将CAN报文拷贝到软件缓冲区,再通过轮询的方式从所述软件缓冲区读取数据解析。优选的,上述步骤I. 2)中所述调用硬件抽象层接口采用了通用的调用方式,所述调用方式实现了对CAN报文的发送、接收和解析的操作与具体应用的无关性。优选的,上述步骤I. 3)中回调函数在CAN报文信号量定义时与信号量关联,并在中间层被自动调用,实现对所述信号量的处理。优选的,上述步骤I. 4)中应用层分层结构包括传输层、诊断层、网络管理层、在线配置层和上层应用层。优选的,上述步骤二中CAN报文数据结构需要包含事件类型、周期和丢失时间等参数。优选的,上述步骤二具体包括两个步骤3. I)事件类型包括周期型、事件型和周期事件型;3. 2)丢失时间作为判断报文丢失的时间标准。优选的,上述步骤三具体包括两个步骤4. I)软定时器是通过对硬件定时器封装而实现;4. 2)软定时器具有注册与注销功能,能实现特定周期间隔事件的启动、周期执行和停止操作。本发明提供的一种SAEJ1939协议栈的软件架构实现方法,具有跨平台,存储资源要求低、扩展性强、缩短开发周期等特点。


图I是本发明提供的通用型SAEJ1939协议栈的结构示意图。
具体实施例方式为了便于本领域普通技术人员理解和实施本发明,下面结合附图及具体实施方式
对本发明作进一步的详细描述。
I)定义软件分层如图I所示,将软件分为硬件抽象层、中间层和应用层,并在应用层上也采用分层结构,根据SAEJ1939划分为传输层、诊断层、网络管理层、在线配置层。硬件抽象层实现对CAN总线控制器驱动的标准化,对于自带硬件缓冲器的CAN总线控制器,通过轮询的方式直接读取硬件缓冲区数据进行处理,对于不带硬件缓冲区的CAN 总线控制器,则通过中断将CAN数据拷贝到软件缓冲区,而后通过轮询的方式从缓冲区读取数据并进行处理。中间层实现软定时器调度机制,以及CAN报文的定时发送、接收与解析。应用层实现上层应用和SAEJ1939协议中的诊断、在线配置等功能。2)定义CAN报文数据结构CAN报文信号量数据结构需要包含信号量事件类型、超时时间和执行周期等特性参数。事件类型包括事件型、周期性和周期事件型。对于事件型信号量,需要立即响应, 周期性信号量进行周期响应,周期事件型则要注重及时性和周期性。超时时间则作为CAN报文丢失的时间标准,当没有接收到CAN报文的时间长度超过超时时间时,则认为该报文丢失。执行周期则用于控制报文的周期发送与接收。3)定义软定时器调度机制软定时器是在硬件定时器的基础上封装实现的,通过轮询方式查询定时器数组上的软定时器,如果定时器超时,则执行定时器事件,并更新下次超时时间。该机制需要包含初始化函数,软定时器注册函数,软定时器注销函数以及软定时器触发函数。初始化则是实现对定时器系统的初始化,软定时器注册函数将一个定时器事件与定时器数组进行关联,软定时器注销函数则将一个定时器事件和定时器数组解除关联,软定时器触发函数则以轮询的方式读取硬件定时器值,判断定时器事件是否超时,如果超时则执行定时器事件,更新下次超时时间,否则,对该定时器事件不做处理。定时器事件数据结构如下
typedef struct tagTimerlnfo {
UINTl6 interval; //定时器时间间隔 INT32 timeout; //超时时间 TimerProc proc; //定时器事件处理函数 void *user;//用户自定义数据
}TimerInfO;本发明提供的SAEJ1939协议栈的软件架构实现方法,具有跨平台,存储资源要求低、扩展性强、缩短开发周期等特点。以上所述,仅是用以说明本发明的具体实施案例而已,并非用以限定本发明的可
实施范围,举凡本领域熟练技术人员在未脱离本发明所指示的精神与原理下所完成的一切
等效改变或修饰,仍应由本发明权利要求的范围所覆盖。
权利要求
1.一种通用型SAEJ1939协议栈的设计方法,应用于嵌入式处理器,所述处理器必须包含CAN总线外设,其特征在于包括以下步骤步骤一、定义通用型SAEJ1939协议栈的架构为分层结构,采用硬件抽象层、中间层和应用层的三层结构;步骤二、定义CAN报文数据结构,即定义包含CAN报文的各项特性参数的数据结构;步骤三、软定时器调度机制,即通过软定时器实现报文的定时发送、接收与处理。
2.根据权利要求I所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤一具体包括四个步骤I. D硬件抽象层对CAN总线驱动进行标准化;1.2)中间层调用硬件抽象层接口实现CAN报文的发送、接收与解析;1.3)应用层利用带参数宏对CAN报文信号量进行定义、声明,并利用回调函数来实现对CAN信号量数据的处理;1.4)应用层采用分层结构来实现SAEJ1939协议栈的在线配置与诊断操作。
3.根据权利要求2所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤I. I)具体包括两个步骤2.1)CAN总线驱动包括两种CAN类型的总线控制器驱动,即自带硬件缓冲器的CAN总线控制器和不带硬件缓冲器的CAN总线控制器;2.2) CAN总线驱动完成CAN总线控制器的初始化、滤波器的设置、CAN报文的发送与接收工作。
4.根据权利要求3所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤2. I)中自带硬件缓冲器的CAN控制器通过轮询的方式直接从硬件缓冲区读取数据解析, 不带硬件缓冲器的CAN控制器通过中断的方式将CAN报文拷贝到软件缓冲区,再通过轮询的方式从所述软件缓冲区读取数据解析。
5.根据权利要求2所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤I. 2)中所述调用硬件抽象层接口采用了通用的调用方式,所述调用方式实现了对CAN报文的发送、接收和解析的操作与具体应用的无关性。
6.根据权利要求2所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤I. 3)中回调函数在CAN报文信号量定义时与信号量关联,并在中间层被自动调用,实现对所述信号量的处理。
7.根据权利要求2所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤I. 4)中应用层分层结构包括传输层、诊断层、网络管理层、在线配置层和上层应用层。
8.根据权利要求I所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤二中CAN报文数据结构需要包含事件类型、周期和丢失时间等参数。
9.根据权利要求8所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤二具体包括两个步骤3.I)事件类型包括周期型、事件型和周期事件型;3.2)丢失时间作为判断报文丢失的时间标准。
10.根据权利要求I所述的通用型的SAEJ1939协议栈的设计方法,其特征在于所述步骤三具体包括两个步骤.4.I)软定时器是通过对硬件定时器封装而实现;.4.2)软定时器具有注册与注销功能,能实现特定周期间隔事件的启动、周期执行和停止操作。
全文摘要
本发明提出并实现了一种通用型的SAE J1939协议栈的设计方法,步骤一、定义软件分层结构,即软件上采用硬件抽象层、中间层和应用层的三层结构;步骤二、定义CAN报文数据结构,即定义包含CAN报文的各项特性参数的数据结构;步骤三、软定时器调度机制,即通过软定时器实现报文的定时发送、接收与处理。通过一个重型卡车汽车液晶仪表的开发实例,对该方法实现的SAE J1939协议栈以及跨平台应用的正确性得到了验证。通过该方法,实现了跨平台应用,ECU的研发只需要编写针对应用的代码,大大缩短了汽车ECU产品的开发周期。
文档编号H04L12/40GK102611695SQ20121001707
公开日2012年7月25日 申请日期2012年1月18日 优先权日2012年1月18日
发明者刘传鹏, 龚红波 申请人:武汉光庭科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1