【CAN】Mailbox/Hardware Object/HRH/HTH概念介绍

2024-01-14 10:36

本文主要是介绍【CAN】Mailbox/Hardware Object/HRH/HTH概念介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 前言
  • 2. MCMCAN硬件RAM缓存区
    • 2.1 RAM缓存区分配
    • 2.2 发送缓存区
    • 2.3 接收缓存区
  • 3. MailBox,HWObject,HRH,HTH概念
    • 1. MailBox
    • 2. HWObject
    • 3. HRH
    • 4. HTH
    • 5. 对应关系


>>返回总目录<<

1. 前言

Aurix TC3xx系列MCU中的MCMCAN模块是基于Bosch的M_CAN的IP实现的,本文主要介绍MCMCAN的一些基本信息。如下图,每个MCU有3个MCMCAN模块,每个模块有4个Can nodes,也就是4个CAN控制器,总共有12个CAN控制器。
在这里插入图片描述

2. MCMCAN硬件RAM缓存区

2.1 RAM缓存区分配

MCMCAN硬件单元中有一段RAM区域来作为发送和接收报文数据的缓存区,下面是每个Controller的RAM区地址空间分配图。
在这里插入图片描述

2.2 发送缓存区

发送缓存区每个element支持3种模式:Tx Dedicated Buffer,Tx FIFO Buffer和Tx Queue Buffer,只支持一个Tx FIFO。每个CAN Controller最大支持32个Tx Buffers,这些缓冲区可支持下面5中配置方式:

  1. Dedicated Tx Buffers (发送优先级:CAN ID最小的优先发送)
  2. Tx FIFO (发送优先级:最早缓存的优先发送)
  3. Tx Queue (发送优先级:CAN ID小的优先发送)
  4. Dedicated Tx Buffers 和 Tx FIFO结合使用 (发送优先级:Tx FIFO中最早缓存buffer,Dedicated Buffer中CANID最小buffer,CANID小的优先发送)
  5. Dedicated Tx Buffers 和 Tx Queue结合使用 (发送优先级:Tx Queue中CAN ID最小buffer,Dedicated Buffer中CANID最小buffer,CAN ID小的优先发送)。

2.3 接收缓存区

接收缓存区每个element支持2种模式:Rx FIFO和Dedicated Rx Buffer,最多支持两个Rx FIFO。

3. MailBox,HWObject,HRH,HTH概念

1. MailBox

邮箱。软件与硬件信息交互的接口,在Autosar规范中,定义为一个struct数据类型,Can_HwType,包含CanId,Hoh,ControllerId三个信息。
在这里插入图片描述
在Autosar的架构中,为了实现软硬件之间的解耦,一般来说,CanIf层不直接访问驱动层,而是抽象出一个struct数据类型,用于软件与底层驱动信息的交互。MailBox会用在CanIf-RxIndication接口中,第一个参数就是MailBox,CanIf通过MailBox->Hoh把接收到的数据传递给上层模块。
在这里插入图片描述

2. HWObject

硬件对象。一个HW object可以理解是CAN硬件单元的RAM区中的一个PDU缓存区。
在这里插入图片描述

3. HRH

硬件接受句柄。一般来说,每个HRH表示一个Hardware Object,由驱动层CanDrv定义。通俗来说,HRH就是一个指向某个Hardware Receive Object的一个变量,通过这个变量可以直接访问到关联Hardware Object。

4. HTH

硬件发送句柄。HTH同样由CanDrv定义。一般来说,每个HTH表示一个或多个Hardware Object,具体使用几个Hardware Object,取决于RAM区域的配置。
HTH常用于Can_Write()接口中,将要发送数据传递给驱动层,HTH作为接口的第一个参数,指定使用哪一个HTH来缓存发送数据。同样,HTH也可以理解成指向某个Hardware Transmit Object的一个变量。

5. 对应关系

在这里插入图片描述

这篇关于【CAN】Mailbox/Hardware Object/HRH/HTH概念介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604864

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1