【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. 对应关系

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319046.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gitlab中的CICD的使用方法

一、CI/CD执行机制 二、离线安装gitlab-runner 下载相应版本的gitlab-runner &#xff08;下载地址&#xff1a;https://packages.gitlab.com/runner/gitlab-runner&#xff09; dpkg -i gitlab-runner_12.8.0_amd64.debgitlab-runner register第3步中需要的信息可从下图所示…

网页设计与网站建设作业html+css+js,一个简易的游戏官网网页

一个简易的游戏网页 浏览器查看 目录结构 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

隧道应用1-netsh端口映射内网

测试环境信息 物理机内网 IP &#xff1a;192.168.249.1 win7 虚拟机 IP &#xff1a; 192.168.249.131 win10 虚拟机 IP &#xff1a;192.168.249.129 我们在 win7 上配置 netsh 端口映射&#xff0c;将 win7 作为跳板机&#xff0c;进而访问到 win10 的服务。 端口映射与…

算法每日一题: 删除排序列表中的重复元素 | 链表的删除

大家好&#xff0c;我是星恒 今天给大家带来的是一道简单的链表删除题&#xff0c;题目很简单&#xff0c;不过可以帮助我们很好的复习链表的删除&#xff0c;尤其适合基础薄弱的友友们学习 ~ 题目&#xff1a;leetcode 83 给定一个已排序的链表的头 head &#xff0c; 删除所有…

【每日一题】删除排序链表中的重复元素

文章目录 Tag题目来源解题思路方法一&#xff1a;比较相邻两节点 写在最后 Tag 【遍历】【链表】【2024-01-14】 题目来源 83. 删除排序链表中的重复元素 解题思路 方法一&#xff1a;比较相邻两节点 思路 比较两个相邻的节点&#xff0c;如果下一个节点值和当前节点值一样…

数据库练习题

素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NO…

Dockerfile的ADD和COPY

文章目录 环境ADD规则校验远程文件checksum添加Git仓库添加私有Git仓库ADD --link COPYCOPY --parent 使用ADD还是COPY&#xff1f;参考 环境 RHEL 9.3Docker Community 24.0.7 ADD ADD 指令把 <src> 的文件、目录、或URL链接的文件复制到 <dest> 。 ADD 有两种…

Makefile编译原理 make和makefile

一.什么是makefile 如图所示&#xff0c;一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c; Makefile 文件定义了一系列的规则来指定哪些文件需要先编译&#xff0c;哪些文件需要后编译&#xff0c;哪些文件需要重新编译&#xff…

Python中如何简化if...else...语句

一、引言 我们通常在Python中采用if...else..语句对结果进行判断&#xff0c;根据条件来返回不同的结果&#xff0c;如下面的例子。这段代码是一个简单的Python代码片段&#xff0c;让用户输入姓名并将其赋值给变量user_input。我们能不能把这几行代码进行简化&#xff0c;优化…

JS数组函数 reduce() 的用法—包含基础、进阶、高阶用法

目录 一、语法剖析 二、实例讲解 1. 求数组项之和 2. 求数组项最大值 3. 数组去重 三、其他相关方法 1. reduceRight() 2. forEach()、map()、every()、some()和filter() 四、重点总结 先看w3c语法 ✔ 常见用法 数组求和 数组最大值 ✔ 进阶用法 数组对象中的用…

vmware和ubuntu镜像下载地址

这里有vmware16和ubuntu20.0下载 链接&#xff1a;https://pan.baidu.com/s/1i9IC-KnJlrVDbl6SJ5SIKQ?pwdy2dd 提取码&#xff1a;y2dd 链接&#xff1a;https://pan.baidu.com/s/1imqJVD2dLE1TB6jIrq1-Fg?pwd690f 提取码&#xff1a;690f 这个是我本人下的vmware17 密钥可…

关于tex中的表格设置

文章目录 控制表格列宽和行高控制表格列宽的同时实现居中tex中多表格排列单元格的合并与分割对单个单元格进行操作 控制表格列宽和行高 将下面的代码放在table环境内&#xff0c;放在tabular环境外 调整表格宽度和高度&#xff1a; \resizebox{\textwidth}{2cm}{%第一个{}是表…

【计算机二级考试C语言】C数据类型

C 数据类型 在 C 语言中&#xff0c;数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。 C 中的类型可分为以下几种&#xff1a; 序号类型与描述1基本数据类型 它们是算术类型&#x…

如何使用WinDiff浏览和对比Windows源代码中的符号和系统调用信息

关于WinDiff WinDiff是一款功能强大的Windows二进制源代码安全分析与调试工具&#xff0c;该工具完全开源&#xff0c;基于Web实现其功能&#xff0c;可以帮助广大研究人员在不同版本的操作系统中浏览和对比Microsoft Windows二进制文件的符号、类型和系统调用信息。其中&…

alibaba学习笔记03(小滴课堂)

自定义Ribbon负载均衡策略实战 启动3个视频服务和一个订单服务&#xff1a; 我们可以看到它是随机调用的。 也可以使用其他负载均衡策略。 讲解新一代负载均衡组件feign介绍 这种方式去写死接口肯定是不妥当的。 于是我们使用feign负载均衡组件&#xff1a; 改造微服务 集成F…

S1-07 事件组

事件组 在 FreeRTOS 中&#xff0c;事件组&#xff08;Event Group&#xff09;是一种用于任务间通信的机制&#xff0c;用于在多个任务之间同步和传递事件。 事件组主要包含一下两个概念&#xff1a; 事件标志位&#xff08;Event Flags&#xff09;&#xff1a;每个事件标志…

【漏洞复现】优卡特脸爱云一脸通智慧管理平台权限绕过漏洞CVE-2023-6099(1day)

漏洞描述 脸爱云一脸通智慧管理平台1.0.55.0.0.1及其以下版本SystemMng.ashx接口处存在权限绕过漏洞,通过输入00操纵参数operatorRole,导致特权管理不当,未经身份认证的攻击者可以通过此漏洞创建超级管理员账户。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当…

HTTP协议请求详解

✏️✏️✏️今天给大家分享的是 HTTP 请求部分的基础知识。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; ✈️✈️✈️动动你们发财的小…

【教程】华为数据恢复的5个简单方法

您刚刚不小心从华为手机中删除了一些重要文件&#xff0c;现在您迫切希望将它们找回来。如果是这样&#xff0c;那么您现在可能会感到沮丧和无助。您可能已向您的朋友寻求帮助或在互联网上搜索答案&#xff0c;但似乎无济于事。 华为数据恢复的5个简单方法 好吧&#xff0c;别…

windows下如何搭建Yapi环境

今天使用YApi时发现原网址无法访问。这下只能本地部署了&#xff08;官方文档&#xff09;。 第一步&#xff1a;安装node.js 获取资源 nodejs: https://nodejs.org/en/downloadLinux安装yum install -y nodejs查看node版本node -v查看npm版本npm -v第二步&#xff1a;安装mo…
最新文章