1、内燃机与配件 w w w.n r j p j.c n基于A U T O S A R的C A N通讯协议栈通用性研究及应用潘文卿,鞠 敏,任 飞,付雨鑫(潍柴动力股份有限公司,山东 潍坊 2 6 1 0 6 1)摘 要:AUT O S AR(汽车开发系统架构-A u t o m o t i v eO p e nS y s t e m A r c h i t e c t u r e),是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立的,致力于为汽车工业开发一个开放的、标准化的架构。C AN通讯协议栈是汽车电控系统中非常重要的一部分,它功能强大,实现复杂,由于技术实现的水平不一
2、,不同的芯片MC A L对于C AN d r i v e r的配置方式又不统一,导致通讯协议栈受限于不同的芯片,复用率低。本文主要是基于AUT O S A R标准架构下,通过两款不同的芯片,进行通讯协议栈的通用性的研究和实现,为C AN通讯协议栈的全平台化应用提供技术支持。关键词:AUT O S AR;C AN通讯协议栈 中图分类号:U 4 6 文献标识码:A 文章编号:1 6 7 4-9 5 7 X(2 0 2 3)0 9-0 0 8 5-0 3R e s e a r c ha n dA p p l i c a t i o no fC A NC o m m u n i c a t i o n
3、P r o t o c o l S t a c kB a s e do nA U T O S A RP a nW e n-q i n g,J uM i n,R e nF e i,F uY u-x i n(W e i c h a iP o w e rC o,L t d,W e i f a n g2 6 1 0 6 1,C h i n a)A b s t r a c t:AUT O S AR(A u t o m o t i v eO p e nS y s t e mA r c h i t e c t u r e)i sac o n s o r t i u mo fg l o b a lA u t
4、o m o t i v em a n u-f a c t u r e r s,c o m p o n e n t s u p p l i e r s,a n do t h e r e l e c t r o n i c s,s e m i c o n d u c t o r,a n ds o f t w a r e s y s t e m s c o m p a n i e s t od e v e l-o pa nO p e n,s t a n d a r d i z e dA r c h i t e c t u r e f o r t h eA u t o m o t i v e i n
5、d u s t r y.C ANc o mm u n i c a t i o np r o t o c o l s t a c k i s av e r yi m p o r t a n tp a r to f a u t o m o t i v ee l e c t r o n i cc o n t r o l s y s t e m.I th a sp o w e r f u l f u n c t i o n sa n dc o m p l e xi m p l e m e n t a t i o n.D u e t od i f f e r e n t t e c h n i c a
6、l i m p l e m e n t a t i o n l e v e l sa n dd i f f e r e n t c h i pMC A L sc o n f i g u r a t i o nm e t h o d s f o rC AN d r i v e ra r en o tu n i f o r m,t h ec o mm u n i c a t i o np r o t o c o l s t a c ki s l i m i t e db yd i f f e r e n t c h i p sa n dt h er e u s er a t e i s l o w
7、.B a s e do nAUT O S A Rs t a n d a r da r c h i t e c t u r e,t h i sp a p e rm a i n l ys t u d i e sa n dr e a l i z e st h eu n i v e r s a l i t yo fc o mm u n i c a t i o np r o t o c o l s t a c kt h r o u g ht w od i f f e r e n tc h i p s,a n dp r o v i d e st e c h n i c a ls u p p o r tf
8、o rt h ef u l lp l a t f o r ma p p l i c a t i o no fC ANc o mm u n i c a t i o np r o t o c o l s t a c k.K e yw o r d s:AUT O S AR;C ANC o mm u n i c a t i o np r o t o c o l s t a c k作者简介:潘文卿(1 9 8 7),女,山东潍坊人,硕士,高级工程师,主要研究方向为电控系统开发。1 A U T O S A R简介1.1 A U T O S A R的具体架构AUT O S A R会将嵌入式电控系统软件分为标
9、准的三个 大 层 级1,分 别 为 应 用 层,R T E(R u n t i m e E n v i r o n-m e n t),基础软件层。应用软件主要是完成汽车功能相关的软件,基础软件主要是完成MC U以及其外围设备驱动功能、通讯功能以及为应用层提供接口服务的服务层,R T E主要完成基础软件与应用软件之间的交互接口。针对应用层的逻辑可以采用MA T L A B实现比较容易进行模块化,平台化设计。关键是基础软件的功能,基础软件的代码会基于不同的芯片有不同的设计和改动,所以AUT O S A R大部分是解决基础软件的解耦以及差异化处理。基础软件再进一步细分,还可以分为微处理器抽象层,E
10、C U抽象层,服务层以及复杂驱动2。微处理器抽象层也叫MC A L,将微控制器的各功能模块和各种外围接口映射到该层中。对每个外设模块的操作进行寄存器操作的封装,比如数字输入,只需要读取一个带有形参的函数就可以获取某个针脚的状态,不需要考虑是怎么实现的。E C U抽象层相比MC A L多了一些硬件资源的驱动,负责提供统一的访问接口,从而实现对E C U内存、通讯和I/O等资源的访问,而不必考虑这些资源是又微控制器还是外围设备提供。该层使得上层软件与E C U硬件配置相剥离。服务层将各种基础软件的功能以服务的形式封装起来,供应用层调用。1.2 A U T O S A R架构的C A N通讯协议栈基
11、于AUT O S AR标准架构,C AN通讯协议栈的架构,C AN通讯的核心 模 块 有 四 个,分 别 为:C OM模 块,P DUR o u t e r模 块,C ANI n t e r f a c e模 块,C AN D r i v e r模块。C AN D r i v e r为最底层,收 到 总 线 上 的 数 据,并 将 数据传递给C ANI n t e r f a c e层,进行信号判断根 据 不 同 的协议 进 行 路 由 传 递 给P DUR o u t e r模 块,此 处 包 含 了C ANT P和J 1 9 3 9 T P,C ANT P主 要 是I S O诊 断 协 议
12、,J 1 9 3 9 T P是J 1 9 3 9诊 断 协 议。P DUR o u t e r根 据 不 同 的地址信息分配到不同的目标地址,C OM模块对不同改的目标地址里的数据进行解析,通过R T E传输给应用层6。本文的目的是将C ANI n t e r f a c e模块及以上的模块打包一个具有通用性的C AN通讯协议栈,基于不同的芯片,使 用 不 同 芯 片 厂 商 提 供 的C AN D r i v e r的 配 置工具进行基于芯片的C AN驱动配置管理,让后将C AN通讯协议 栈 嫁 接 到C AN D r i v e r上,实 现 报 文 的 正 常 收发 功 能,打 破C A
13、N通 讯 协 议 栈 要 基 于 特 定 芯 片 的垄断。58DOI:10.19475/ki.issn1674-957x.2023.09.0262 0 2 3年第9期2 A U T O S A R对C A N收发报文的设计2.1 C A N接收报文如图1所 示:C AN接 收 报 文 的 流 程3中 主 要 分 为5步:第一,基础软件周期任务中周期调用C AND r i v e r模块的C a n_M a i n F u n c t i o n_R e a d函数。第二,C AN D r i v e r模块的C a n_M a i n F u n c t i o n_R e a d函数将会读取
14、硬件对应C AN接收寄存器中的数据,包含报文长度,报文地址,报文数据,收到此报文的控制器等数据。第三,读取数据后,调用C ANI n t e r f a c e模块的C a n I f_R x I n d i c a t i o n函 数,将 数 据 从C AN D r i v e r模 块 传 递 给C ANI n t e r f a c e模块。第四,C ANI n t e r f a c e模块经过T P层的处理根据不同协议再调用P d u R_R x I n d i c a t i o n函数,将数据传到P d u R模块。第五,P d u R模块将数据路由到C OM模块,调用C o
15、m_R x I n d i c a t i o n函数,将数据传递到C o m模块,C o m模块将报文数据,地址,长度等信息通过R T E传递给应用层。图1 接收报文流程2.2 C A N发送报文相较于C AN接收报文的流程,C AN发送报文要复杂一些,一条报文发送成功包含了发送请求和发送确认,因为C AN电路设计的是半双工的模式,采用总线仲裁机制发送报文,同一时刻只能有一条报文发送到总线上,根据报文的优先级进行仲裁,同等优先级的报文,看谁先出现显性电平谁就有优先发送的权利,其余的报文需要等待。一条报文成功发送需要先从上而下的进行发送请求的传输,然后再自下而上的进行发往完成的确认,具体发送流
16、程如图2所示:发送请求的传输过程3:第一,周期任务中周期性调用C o m模块的C o m_M a-i n F u n c t i o n_T x函数,C o m模块将从其缓存器中读取需发送的数据。第二,C o m模块的C o m_M a i n F u n c t i o n_T x函数将调用P d u R模块的P d u R_C o mT r a n s m i t函数,将数 据 传 给P d u R模块。第三,P d u R模 块 根 据 不 同 协 议 经 过T P层 路 由 到C ANI n t e r f a c e模块,调用C a n I f_T r a n s m i t函数,这样数据从P d u R模块传给了下层的C ANI n t e r f a c e模块。第四,C ANI n t e r f a c e模块再调用C a nD r i v e r模块的C a n_W r i t e函数,将数据写入相应的寄存器。第五,与C AN接收功能一样,C a n_W r i t e函数将访问仲裁,数据长度和数据寄存器,将数据写入。发送确认的传输过程3:第一,周期任务中周期性 调