[AutoSar]BSW_Com09 CAN driver 模块FULL(BASIC)CAN、FIFO选择


  

关键词

嵌入式、C语言、autosar、OS、BSW

平台说明

项目Value
OSautosar OS
autosar厂商vector , EB
芯片厂商TI 英飞凌
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1

在这里插入图片描述
>>>>>回到总目录<<<<<<

一、缩写和定义

abbreviations定义
Hardware Object Handle (HOH)HRH 和HTH 的统称
Hardware Receive Handle (HRH)由CAN驱动程序定义和提供。每个HRH通常只代表一个Hardware Object。HRH可用于优化软件过滤。
Hardware Transmit Handle (HTH)由CAN驱动程序定义和提供。每个HTH通常只表示一个或多个Hardware Object,这些对象被配置为硬件传输缓冲
Hardware ObjectCAN硬件对象定义为CAN硬件单元/ CAN控制器的CAN RAM内的PDU缓冲区。可以直接理解为一个Hardware Object 就是一个L-PDU
Data Length Code(DLC)L-PDU中SDU 的长度
Physical Channel物理通道表示从CAN控制器到CAN网络的接口。CAN硬件单元的不同物理通道可以访问不同的网络。可以理解为一个网关
CAN controller一个can TX OR RX 连接的节点
CAN Hardware unit一个或者多个CAN controller + 一个或者多个CAN RAM area

二、Hardware Object、MailBox 定义

  我们可以将Hardware Object 理解为存放CAN L-PDU 的buffer,里面有且只有一个CAN message (包含 PCI( CAN ID + DLC) + SDU(data))[AutoSar]BSW_Com02 PDU详解。而MailBox就是一个 Hardware Object,属于CAN controller 上的物理空间。

三、FIFO 和 Dedicated Buffer

  每个CAN module [AutoSar]BSW_Com08 CAN driver 模块介绍及参数配置说明 (一)都有属于自己的 RAM。在MCAL 中被分为了FIFO buffer 和
Dedicated Buffer。
一般CAN module RAM 如下:
在这里插入图片描述
FIFO 机制如下:
在这里插入图片描述

3.1 使用范围

  Dedicated Buffer 用于FULL CAN ,Hareware Object与HRH/HTH一一对应,FIFO用于 basic can,即一个HRH/HTH对应多个HarewareObject。但是,Dedicated Buffer + FIFO buffer 不能超过芯片硬件的CANTx Buffer(Rx Buffer)。

3.2 在vector 和EB 中的配置

vector:
在这里插入图片描述

EB:
在这里插入图片描述

四、FULL CAN 和Basic CAN

  我们可以通过CanHandleType 来配置为FULL CAN 还是 Basic CAN,其实就是选择HOH 的类型。

区别:
1.功能支持:

Basic CAN: 有一个或者多个Hardware Object(L-PDUs) 与其对应,并且 一个Hardware Object (L-PDUs) 对应某个范围内的 CAN message ID。
Full CAN: 只能有一个Hardware Object (L-PDUs)与其对应,并且 一个Hardware Object (L-PDUs) 对应一个 CAN message ID。

2.性能区别

Basic CAN: 采用硬件滤波,减少不必要的中断,节约CPU负载。L_PDU 到了上层 canif后是软件滤波。
Full CAN: 比较占用CPU负载,但是,如果硬件资源足够,优先选择FULL CAN。

五、Tx Buffer,Tx FIFO,Tx Queue

5.1 Tx Buffer

  与FULL CAN 的 hardware object 一一对应,即为Dedicated Buffer。ID 越小优先级越高。

5.2 FIFO buffer

  FIFO buffer 包括Tx FIFO和Tx Queue

5.2.1 Tx FIFO buffer

  按照“先进先出”的方式来进行发送,忽略CAN ID优先级,一般为了防止出现优先级反转现象,不建议使用FIFO模式。

5.2.2 Tx Queue buffer

  与Tx buffer 一样,ID越小优先级越高。

5.3 混合模式:Tx Buffer + Tx FIFO buffer

在这里插入图片描述
  1.分别取出Tx Buffer中ID最小的message_A和Tx FIFO buffer 中最老的messag_B。
  2.判定message_A和messag_B哪个ID小就优先发哪个。

5.4 混合模式:Tx Buffer + Tx Queue buffer

  1.分别取出Tx Buffer中ID最小的message_A和Tx Queue buffer中ID最小的messag_B。
  2.判定message_A和messag_B哪个ID小就优先发哪个。
在这里插入图片描述

六 Rx Buffer 和Rx FIFO

6.1 Rx Buffer

  和Tx Buffer一样,在FULL CAN 中与单个message ID对应。当老的数据没有处理完,新的数据不会被处理。

6.2Rx FIFO

  遵循先进先出的原理,一般有两个FIFO (Rx FIFO 0 and Rx FIFO 1 can be configured to hold up to 64 elements each).
当FULL 的时候有两种处理模式:
在这里插入图片描述
**Blocking Mode:**如果FIFO满了,只有等到数据处理完成之后才可以放入新的数据,一般推荐使用该方式;
**Overwrite Mode:**表示如果FIFO已经满了,新来的数据可以覆盖掉最老的数据。可能会导致数据丢失。

七、不同报文类型如何选择FULL CAN或者BASIC CAN

7.1 应用报文

  推荐使用FULL CAN,因为一般不需要缓存,使用最新收到的报文就行。但是要注意 需要发送的报文数量必须< hardware object,如果超出,则要考虑部分使用 basic can,形成 basic + full 的组合方式。即 5.3 5.4 章节所述。

7.2 网络管理报文

  因为网络管理报文为一个范围,推荐使用basic can。

7.3 标定报文

  因为标定报文为一个固定ID,推荐使用full can。

7.4 诊断报文

  推荐使用basic CAN。诊断报文对时序和完整性有严格要求,不允许丢失,因此要用FIFO。

八、注意事项

1.在hardware object的配置过程中,建议先将FULL CAN类型的HOH统一配置在前,Basic CAN类型的HOH配置在后,以免造成生成的代码中Maibox使用错乱。
    
    
>>>>>回到总目录<<<<<<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老灰╮(╯-╰)╭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值