[AutoSar]BSW_Com018 COM模块介绍(二)

2024-03-23 06:28

本文主要是介绍[AutoSar]BSW_Com018 COM模块介绍(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 关键词
  • 平台说明
  • 三、Functional Specification
    • 3.23 Com Optimizations
      • 3.23.1 Critical Sections
      • 3.23.2 Critical section threshold loop strategy
      • 3.23.3 Rx Notification caching
      • 3.23.4 Deferred Event Caching
      • 3.23.5 Handle ID
      • 3.23.6 Strict Repetition Period
      • 3.23.7 Mixed Mode Periodic Suppression
    • 3.24 Main Functions
  • 四、States
    • 4.1 Module States
    • 4.2 I-PDU States
    • 4.3 Reception Deadline Monitoring States

  

关键词

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

平台说明

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

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

缩写描述
MDTMinimum Delay Timer
TMSTransmission Mode Selector

续上
[AutoSar]BSW_Com017 COM模块介绍(一)

三、Functional Specification

3.23 Com Optimizations

3.23.1 Critical Sections

  进入和离开临界区的处理由RTE提供。Vector MICROSAR COM提供了几组关键段来优化运行时消耗.详情见
TechnicalReference MICROSAR RTE,或者后续更新内容。
  提供了以下critical sections:
COM_EXCLUSIVE_AREA_BOTH :这个Critical Sections保护在Com_MainFunctionRouteSignals上下文中访问的Rx和Tx资源,这些资源用于信号网关路由或配置了延迟描述源的描述路由。因此,COM_EXCLUSIVE_AREA_BOTH包围的临界区不应该被任何访问Tx或Rx资源的Com API中断。
COM_EXCLUSIVE_AREA_TX :这个Critical Sections保护可以从各种上下文中访问的Tx资源。因此,COM_EXCLUSIVE_AREA_TX包围的临界区不应该被任何访问Tx资源的Com API中断。
COM_EXCLUSIVE_AREA_RX:这个Critical Sections保护可以从各种上下文中访问的Rx资源。因此COM_EXCLUSIVE_AREA_RX包围的临界区不应该被任何访问Rx资源的Com API中断。

3.23.2 Critical section threshold loop strategy

  在使用共享资源时,可以使用临界区来避免并发/数据一致性问题。然而,切换临界区的状态可能是一项非常消耗资源的操作。为了优化具有锁定中断的运行时与进入和退出独占区域所引入的成本之间的关系,在一个循环中处理多个元素时应用阈值策略
  该策略在进入循环之前锁定所需的独占区域,并在处理完所有元素后退出该区域。此外,在每个迭代步骤结束时,增加计数器并将其与配置的阈值进行比较。如果计数器超过阈值,将暂时打开独占区域,以允许重新调度等待任务,如下所示:

Com_EnterExclusiveArea();
for(; idx < tableSize; idx++)
{
exclusiveAreaCounter++;
/* Do processing */
if(exclusiveAreaCounter >= exclusiveAreaThreshold)
{
exclusiveAreaCounter = 0;
Com_ExitExclusiveArea();
Com_EnterExclusiveArea();
}
}
Com_ExitExclusiveArea();

可配置的阈值如下:
在这里插入图片描述

3.23.3 Rx Notification caching

  RTE/应用程序回调必须总是在打开中断锁的情况下调用,因此可能需要暂时退出先前进入的独占区域。为了减少切换独占区域状态的成本,在接收到信号和信号组后解包时,将通知回调和无效通知回调缓存在可配置的通知缓存中。这种策略背后的想法是,在处理完所有接收到的信号/信号组之后,立即调用所有缓存的通知,而不是多次退出和重新进入Rx独占区域。但是缓存需要一定数量的内存,因此用户可以配置缓存大小。无论何时,缓存已满,独占区域将暂时退出,所有缓存的通知和无效通知回调将被调用。
  根据配置的I-PDU的信号处理属性,回调将在立即或延迟通知缓存中调用:
  Immediate notification cache:回调将被缓存在Com_RxIndication的上下文中。只要收到一个即时的I-PDU,缓存就会保留在堆栈上。因此,缓存对每个收到的即时I-PDU都有一个本地作用域。
  Deferred notification cache: 回调函数将被缓存在各自的Com_MainFunctionRx的任务上下文中。在堆上保留一个共享缓存,因此对所有延迟的i - pdu具有全局作用域。所有延迟i - pdu的信号/信号组回调将在回调被调用之前被缓存。

3.23.4 Deferred Event Caching

  这个特性描述了一种减少延迟i - pdu处理时间的优化策略。该特性背后的主要思想是缓存应该以延迟方式处理的接收到的rx - i - pdu的ID,从而避免处理所有配置延迟I-PDUs。可选参数comxdeferredeventcachesize描述了用于存储延迟i - pdu数量的缓存大小。缓存的最大大小为限制配置i - pdu的数量。如果延迟事件的数量超过缓存大小,延迟的i - pdu将以正常方式处理,并进行配置如果有新的事件发生,需要检查I-PDU。此功能可以通过启用ComDeferredEventCacheSupport开关激活。

在这里插入图片描述
在这里插入图片描述

3.23.5 Handle ID

   所有数据单元元素(Signal, SignalGroup, GroupSignal, I-PDU, I-PDU Group)都包含一个数字ID,该数字ID对于数据单元的类型是唯一的。通过各自的API调用访问这些元素需要这个Handle ID。
  但是,Signals、SignalGroups和GroupSignals可以在不被外部访问的情况下定义。在这种情况下,handle ID的分配已经过时,可以删除以减少计算开销和代码大小。虽然这些单元元素不能被访问,但是它们被考虑用于计算包含它们的I-PDU的初始值。Handle ID的分配与ComSignalAccessComSignalGroupAccess参数的值耦合。这些参数决定是否需要Handle ID:
在这里插入图片描述
在这里插入图片描述

3.23.6 Strict Repetition Period

   如果MDT(Minimum Delay Timer)由于先前的传输而仍然处于活动状态,则传输将延迟到后面的main function。这个延迟不适用于跟踪重复的计时器,因为它总是在直接触发后的主函数中启动。这可能导致两个PduR_ComTransmit之间的实际距离小于配置的距离重复周期。这种行为(下图用蓝色表示)。

在这里插入图片描述

在这里插入图片描述

3.23.7 Mixed Mode Periodic Suppression

   在混合传输模式下,周期传输和直接传输可以重叠。通过激活通用开关ComMixedModePeriodicSuppression,周期部分的传输在直接触发后被暂停。一旦包括重复在内的直接传输完成,周期部分就重新开始。

在这里插入图片描述
在这里插入图片描述

3.24 Main Functions

   支持多个Rx和Tx主函数的配置,每个主函数都有自己的时基。Rx和Tx主函数的名称取决于配置中各自容器的短名称。有一个Com_MainFunctionRx_< shortname >;每个已配置的comainfunctionrx容器和一个Com_MainFunctionTx_< shortname >;每个已配置的commfunctiontx容器。只支持一个MainFunctionRouteSignals。

四、States

4.1 Module States

   COM_UNINIT和COM_INIT两种状态。
在这里插入图片描述

4.2 I-PDU States

  每个I-PDU 都有Activated和Deactivated 两种状态切换。
  当且仅当至少一个I-PDU组处于Activated时,该I-PDU group 才 为Activated状态。因此,为了能够被激活,IPDU 必须至少属于一个I-PDU组。
  如果该I-PDU所属的所有I-PDU组都Deactivated ,则表示该I-PDU去激活。
  没有指定I-PDU group 的I-PDU被认为总是处于Activated。这些I-PDU的状态不受Com_IPduGroupStart/ Stop api的控制

4.3 Reception Deadline Monitoring States

  当且仅当该I-PDU位于已启用接收截止日期监控的I-PDU组中时,该I-PDU才启用接收截止日期监控。否则,I-PDU的Reception Deadline Monitoring 是被关闭的。
在这里插入图片描述
  因为没有指定I-PDU组的I-PDU被认为总是处于活动状态,因此与上图相反,只要为其包含的信号或信号组配置了至少一个超时,Rx I-PDU的接收截止时间监控初始是启用的。这些I-PDU的Reception Deadline Monitoring States不能由Com_EnableReceptionDM/ Com_DisableReceptionDM api控制。

>>>>>回到总目录<<<<<<

这篇关于[AutoSar]BSW_Com018 COM模块介绍(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系