ETAS-AUTOSAR学习-0.1Task配置思考

2023-05-16

TASK(OsTask_BSW)
{
   /* Box: Implicit Buffer Initialization begin */
   /* Box: Implicit Buffer Initialization end */
   /* Box: Implicit Buffer Fill begin */
   /* Box: Implicit Buffer Fill end */
   /* Box: BSWImpl1_Xcp begin */
   if ( Rte_RECount_OsTask_BSW_divby500_0 == ((VAR(uint16, AUTOMATIC))0U) )
   {
      Xcp_EventChannel_500msRstr();
   }
   /* Box: BSWImpl1_Xcp end */
   {
      /* Box: BSWImpl4_BSWIMPL_Can begin */
      Can_MainFunction_Write();
      /* Box: BSWImpl4_BSWIMPL_Can end */
   }
   {
      /* Box: BSWImpl4_BSWIMPL_Can begin */
      Can_MainFunction_Read();
      /* Box: BSWImpl4_BSWIMPL_Can end */
   }
   /* Box: BSWImpl14_CanSM begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      CanSM_MainFunction();
   }
   /* Box: BSWImpl14_CanSM end */
   /* Box: BSWImpl3_Com begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      Com_MainFunctionTx();
   }
   /* Box: BSWImpl3_Com end */
   {
      /* Box: BSWImpl4_BSWIMPL_Can begin */
      Can_MainFunction_BusOff();
      /* Box: BSWImpl4_BSWIMPL_Can end */
   }
   {
      /* Box: BSWImpl13_CanTp begin */
      CanTp_MainFunction();
      /* Box: BSWImpl13_CanTp end */
   }
   /* Box: BSWImpl12_MemIf begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      MemIf_Rb_MainFunction();
   }
   /* Box: BSWImpl12_MemIf end */
   /* Box: BSWImpl1_Xcp begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      Xcp_MainFunction();
   }
   /* Box: BSWImpl1_Xcp end */
   /* Box: BSWImpl10_BSWIMPL_BswM begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      BswM_MainFunction();
   }
   /* Box: BSWImpl10_BSWIMPL_BswM end */
   /* Box: BSWImpl11_EcuM begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      EcuM_MainFunction();
   }
   /* Box: BSWImpl11_EcuM end */
   /* Box: BSWImpl9_CanNm begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      CanNm_MainFunction();
   }
   /* Box: BSWImpl9_CanNm end */
   {
      /* Box: BSWImpl8_Dcm begin */
      Dcm_MainFunction();
      /* Box: BSWImpl8_Dcm end */
   }
   /* Box: BSWImpl1_Xcp begin */
   if ( Rte_RECount_OsTask_BSW_divby250_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      Xcp_EventChannel_250msRstr();
   }
   /* Box: BSWImpl1_Xcp end */
   {
      /* Box: BSWImpl7_Dem begin */
      Dem_MainFunction();
      /* Box: BSWImpl7_Dem end */
   }
   /* Box: BSWImpl6_NvM begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      NvM_MainFunction();
   }
   /* Box: BSWImpl6_NvM end */
   /* Box: BSWImpl1_Xcp begin */
   if ( Rte_RECount_OsTask_BSW_divby100_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      Xcp_EventChannel_100msRstr();
   }
   /* Box: BSWImpl1_Xcp end */
   /* Box: BSWImpl5_BSWIMPL_FiM begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      FiM_MainFunction();
   }
   /* Box: BSWImpl5_BSWIMPL_FiM end */
   {
      /* Box: BSWImpl4_BSWIMPL_Can begin */
      Can_MainFunction_Mode();
      /* Box: BSWImpl4_BSWIMPL_Can end */
   }
   /* Box: BSWImpl3_Com begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      Com_MainFunctionRx();
   }
   /* Box: BSWImpl3_Com end */
   /* Box: BSWImpl2_ComM begin */
   if ( Rte_RECount_OsTask_BSW_divby10_0 == ((VAR(uint8, AUTOMATIC))0U) )
   {
      ComM_MainFunction_ComMChannel_Can_Network_Channel();
   }
   /* Box: BSWImpl2_ComM end */
   /* Box: BSWImpl1_Xcp begin */
   if ( Rte_RECount_OsTask_BSW_divby1000_0 == ((VAR(uint16, AUTOMATIC))0U) )
   {
      Xcp_EventChannel_1kmsRstr();
   }
   /* Box: BSWImpl1_Xcp end */
   /* Box: Implicit Buffer Flush begin */
   /* Box: Implicit Buffer Flush end */
   if ( Rte_RECount_OsTask_BSW_divby10_0 != ((VAR(uint8, AUTOMATIC))0U) )
   {
      Rte_RECount_OsTask_BSW_divby10_0--;
   }
   else
   {
      Rte_RECount_OsTask_BSW_divby10_0 = ((VAR(uint8, AUTOMATIC))9);
   }
   if ( Rte_RECount_OsTask_BSW_divby100_0 != ((VAR(uint8, AUTOMATIC))0U) )
   {
      Rte_RECount_OsTask_BSW_divby100_0--;
   }
   else
   {
      Rte_RECount_OsTask_BSW_divby100_0 = ((VAR(uint8, AUTOMATIC))99);
   }
   if ( Rte_RECount_OsTask_BSW_divby250_0 != ((VAR(uint8, AUTOMATIC))0U) )
   {
      Rte_RECount_OsTask_BSW_divby250_0--;
   }
   else
   {
      Rte_RECount_OsTask_BSW_divby250_0 = ((VAR(uint8, AUTOMATIC))249);
   }
   if ( Rte_RECount_OsTask_BSW_divby500_0 != ((VAR(uint16, AUTOMATIC))0U) )
   {
      Rte_RECount_OsTask_BSW_divby500_0--;
   }
   else
   {
      Rte_RECount_OsTask_BSW_divby500_0 = ((VAR(uint16, AUTOMATIC))499);
   }
   if ( Rte_RECount_OsTask_BSW_divby1000_0 != ((VAR(uint16, AUTOMATIC))0U) )
   {
      Rte_RECount_OsTask_BSW_divby1000_0--;
   }
   else
   {
      Rte_RECount_OsTask_BSW_divby1000_0 = ((VAR(uint16, AUTOMATIC))999);
   }
   TerminateTask();
} /* OsTask_BSW */

假如我把很多Runable放到同一个Task中去调度, 虽然它们确实可以按不同周期调度, 但是这样做有什么缺点?

  • 它们是需要按顺序执行的,比如EcuM_MainFunction();
    和CanNm_MainFunction()执行周期都是10ms, 那么Rte_RECount_OsTask_BSW_divby10_0-- == 0时
    EcuM_MainFunction()先于CanNm_MainFunction()执行,如果EcuM_MainFunction()中有的步骤依赖于CanNm_MainFunction(),需要CanNm_MainFunction()先执行呢?所以这些Runable放置的positon需要仔细考虑。

  • 如果CanNm_MainFunction()中在等待某个状态或者返回结果, 或者说比如获取互斥量(需要等待时间或者需要阻塞), 那么整个Task就被阻塞了(等待N个ticks或者直接从就绪链表中移除, 不再参与调度),后面的Runable不能继续执行。这样的话就不能发挥RTOS的优势之一,即多任务切换, 合理利用CPU。
    比如CanNm_MainFunction()中有类似
    freertos - xSemphrWait(&sem, MAX_DELAY)这种操作,
    如果这步没有获取到信号量, TASK将永远阻塞, 让出CPU使用权, 其他TASK仍然可以被调度,只有其他TASK或中断调用xSemphrSend(&sem)就会将这个阻塞的TASK重新加入就绪链表(如果它优先级高于当前正在运行的TASK,它会立即被调度),
    所以从合理利用CPU使用率的角度,也不太应该把多个Runables放到同一个TASK。
    当然也可在一个TASK中所有Runable中没有需要阻塞和等待的操作(如CanNm_MainFunction()等等),那么上述第二点就不存在。但总归来说还是应仔细考虑Runables和TASK的mapping

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ETAS-AUTOSAR学习-0.1Task配置思考 的相关文章

  • 7、AUTOSAR MCAL入门-实战:I/O驱动组

    7 AUTOSAR MCAL入门 实战 xff1a I O驱动组 在第三节中有介绍AUTOSAR 把MCAL 抽象分为4个驱动组 xff0c 分别为 xff1a 微控制器驱动组 xff0c 存储器驱动组 xff0c 通信驱动组 输入 输出驱
  • Adaptive AUTOSAR——Cryptography (VRTE3.0 R21-11)

    Cryptography模块是用于自适应汽车软件架构的密码学模块 xff0c 主要用于实现各种安全功能 xff0c 包括加密 解密 签名和验证 等操作 它的主要作用包括 xff1a 安全通信 xff1a 使用各种算法对数据进行加密和解密 x
  • 3.Adaptive AUTOSAR 架构详解

    3 1 逻辑层架构 下面显示了AP的逻辑架构 xff0e AA xff08 adaptive application 在ARA AUTOSAR Runtime for Adaptive Applications 上运行 ARA包含了所有功能
  • AUTOSAR —— S32K144 的 Fls 和 Fee 模块配置

    本文来简要介绍一下如何在EB中配置AUTOSAR Fls和Fee模块 Fls模块是Flash的驱动 xff0c 执行具体的Flash擦写读取等操作 Fee模块的全称是FlashEEPROMEmulation xff0c 即Flash模拟EE
  • 【AUTOSAR】【信息安全】CSM

    目录 一 概述 二 依赖模块 三 功能描述 3 1 基本体系结构 3 2 通用行为 3 2 1 正常操作 3 2 2 设计说明 3 3 错误分类 3 3 1 开发错误 3 3 2 运行时错误 四 API接口 4 1 通用接口 4 2 加密接
  • 老板说项目要上AUTOSAR,我慌得一批

    莫慌 xff0c 淡定 xff0c 先来看看AUTOSAR是个什么鬼 AUTOSAR是什么 AUTOSAR AUTomotive Open System ARchitecture xff0c 中文是 汽车开放系统架构 xff0c 是一家致力
  • 基于PREEvision的AUTOSAR Adaptive设计

    导读 xff1a 为适应汽车智能化 网联化等的发展趋势 xff0c 应对汽车E E系统开发面临的高性能处理器的应用 自动驾驶的软件实现 高带宽通信需求 车与外界的互联互通等的挑战 xff0c AUTOSAR组织推出了AUTOSAR Adap
  • AUTOSAR_DCM&DEM(UDS&OBD)

    1 术语与缩写 术语 DCM Diagnostic Communication Manager DEM Diagnostic Event Manager UDS Unified diagnostic services OBD On Boar
  • CP AUTOSAR 通信

    现在汽车中 xff0c 车内网络普遍采用CAN LIN FlexRay总线 xff0c CAN FD和车载以太网也将在未来得到更多应用 作为汽车电子软件的主要标准 xff0c AUTOSAR在总线网络通信方面提供了完整的架构 AUTOSAR
  • AUTOSAR和ROS有哪些联系和区别

    AUTOSAR和ROS有哪些联系和区别 xff1f AUTOSAR和ROS有哪些联系和区别 xff1f 用ROS可以实现AUTOSAR的功能吗 xff1f 从Linux和Ros系统转向AP该如何转 xff1f 为什么需要转 xff1f AP
  • ETAS Adaptive AUTOSAR 自适应平台示例视频教程

    ETAS AP AUTOSAR自适应平台示例视频教程 本系列文章旨在提供一个详细的操作指南 xff0c 以构建ETAS AP AUTOSAR自适应平台的示例 实践练习的目标是加强AUTOSAR自适应平台中的理论概念 xff0c 并更好地理解
  • Adaptive AUTOSAR 简介 (2021版)

    目录 1 Adaptive AUTOSAR 简介 Adaptive平台 一种新的 AUTOSAR 1 1 Adaptive的案例 1 2 经典平台与适应性平台的比较 1 3 单一系统 1 4 架构 逻辑架构 1 5 软件架构 本文图片来源
  • 从Adaptive AUTOSAR的角度看SOA

    前言 身处汽车行业的我们深知 xff0c 新技术的应用或者新概念的提出 xff0c 一定是事出有因的 通常是为了抢夺新技术高地 xff0c 让汽车更好地满足未来的需求 那么 xff0c 汽车电子电气架构领域掀起的这股SOA热潮是由什么导致的
  • 一文搞懂AUTOSAR的DEM模块

    Dem全称为Diagnostic Event Manager xff0c 负责故障事件的处理 故障数据的存储和管理 简单说其功能是故障事件确认前的故障debounce xff0c 故障事件确认时的故障数据存储 xff0c 故障发生后的故障老
  • Adaptive AUTOSAR——Update and Configuration Management(VRTE 3.0 R21-11)

    16 1 What is Update and Configuration Management 更新和配置管理 xff08 UCM xff09 是自适应平台服务中的一个功能集群 作为一种自适应平台服务 xff0c UCM实现了自适应平台的
  • 什么是AUTOSAR?为什么汽车公司开始采用AUTOSAR来开发新产品?

    越来越多的车企开始应用ATUOSAR xff0c 也有很多公司在招聘时会在JD里注明 xff0c 应聘者需要熟练掌握AUTOSAR xff0c 那么什么是AUTOSAR xff1f 为什么从奔驰 宝马等传统豪华汽车巨头 xff0c 到新势力
  • Autosar Xcp移植

    前言 xff1a 可能有兄弟胸中有点疑问 Vector ETAS等软件包都有XCP xff0c 你移植个吊 xff0c 但是我的MICORSAR BSW中没发现XCP静态代码 xff0c 倒是在CFG中发现了XCP配置选项 xff0c 难道
  • AutoSar之微控制器抽象层MCAL

    微控制器抽象层位于AUTOSAR BSW的最底层 xff0c 包含内部驱动 xff0c 可直接访问微控制器和外设芯片 从具体应用来看 xff0c MCAL主要包括微控制器驱动 存储器驱动 通信驱动和输入输出驱动四个部分 xff0c 各部分又
  • 【AUTOSAR】【通信安全】CRC

    目录 一 概述 二 功能说明 2 1 通用行为 2 2 8位CRC计算 2 2 1 8位SAE J1850 CRC计算 2 2 2 8位0x2F多项式CRC计算 2 3 16位CRC计算 2 3 1 16位CCITT FALSE CRC16
  • AutoSAR 学习笔记2:AutoSAR架构

    1 应用层 ASW 2 运行时环境层 RTE RTE 是专门为应用软件 AutoSAR 软件组件和 或 AutoSAR 传感器 执行器组件 提供通信服务的层 在 RTE 之上 软件架构风格从 分层 转变为 组件风格 AutoSAR 软件组件

随机推荐

  • Ubuntu18.04安装Ceres1.14

    Ubuntu18 04安装Ceres1 14 1 下载Ceres2 安装依赖项3 编译4 安装 1 下载Ceres 链接Github下载地址 2 安装依赖项 sudo apt get install liblapack dev libsui
  • SSH登录出现REMOTE HOST IDENTIFICATION HAS CHANGED故障的解决办法

    今天登录一台交换机 xff0c 出现如图错误 xff1a 原因 该IP分配给过另一台交换机 xff0c 在knows hosts文件中保留了当时的rsa信息 xff0c 将这个IP有分配给新设备 xff0c SSH登录时会提示RSA key
  • 外贸函电常用词汇

    外贸函电常用词汇 xff1a xff08 1 xff09 贵函 Your letter Your favour your esteemed letter Your esteemed favour Your valued letter You
  • 匿名拓空者Pro开源飞控使用介绍-1-飞控特点

    匿名团队 是一个爱好技术 xff0c 爱好创新的团队 做自己 xff0c 发现兴趣 xff0c 追随兴趣 xff0c 分享兴趣 非常欢迎大家关注我们匿名 xff0c 交流群 xff1a 190169595 匿名拓空者Pro 飞控 xff0c
  • 匿名拓空者Pro开源飞控使用介绍-2-硬件配置及拓展接口

    硬件配置 主控 STM32F407 xff1a 1M FLASH xff0c 192K RAM xff0c 运行频率168MHz xff1b 惯性传感器 icm20602 xff1a 3轴陀螺 43 3轴加速度 43 恒温设计 xff08
  • 匿名拓空者Pro开源飞控使用介绍-3-连接上位机及基本测试

    飞控连接上位机方法 飞控可以通过底板上的USB端口连接上位机 xff0c 使用USB线连接飞控和电脑 xff0c 飞控买家版程序会将USB端口初始化成HID设备 xff0c 免安装驱动程序 xff0c 只要打开匿名上位机 xff0c 打开程
  • 匿名拓空者Pro开源飞控使用介绍-4-飞控安装及坐标系定义

    飞控安装 将机架组装好 xff0c 电机安装于机架上 xff0c 飞控安装于机架重心位置 xff08 一般为机架中心板中心位置 xff0c 也就是两条电机对角线交点 注意 xff0c 飞控尽量水平安装于机架上 xff0c 飞行效果最好 xf
  • 匿名拓空者Pro开源飞控使用介绍-5-接收机连接

    确定使用何种接收机连接方式 匿名拓空者PRO飞控支持SBUS PPM PWM型接收机 xff0c 根据推荐程度依次为SBUS gt PPM gt PWM SBUS PPM均可以实现1根信号线传输多通道遥控数据的功能 xff0c SBUS为串
  • 匿名科创--匿名拓空者PRO—TI版全开源飞控使用入门—TM4C123

    1 飞控介绍 匿名团队针对TI芯片的强烈学习需求 xff0c 推出了匿名拓空者PRO飞控的TI版 使用TI公司的 TM4C123G 主控芯片 xff0c 打造了一款完全开源的飞控产品 xff0c 提供完全开源的飞控整体工程文件 xff0c
  • 匿名科创--ANO_OPENMV视觉开发板介绍

    1 ANO OPENMV介绍 官方OPENMV体积大 xff1f 在飞行器上不方便安装 xff1f 串口通过杜邦线容易接触不良 xff1f 不可否认 xff0c OPENMV为大家提供了一个非常方便 易用的视觉开发环境 xff0c 但是在实
  • 匿名科创--匿名拓空者PRO--开源光流融合算法使用教程

    1 总体介绍 为了更好的支持匿名TI飞控买家 xff0c 匿名团队开源了基于优象光流模块的飞控算法 xff0c 光流传感器直接连接至匿名拓空者PRO TI版飞控 xff0c 由飞控读取原始光流传感器的光流数据 xff0c 结合高度传感器以及
  • Linux 设备驱动开发实例

    编译和运行 驱动编译要用到kernel的Makefile文件 也就是源码树的编译系统 因此 xff0c 源码需要被配置和编译 xff0c 以ubuntu自带的源码为例 xff1a 编译外部模块 ko 的编译命令是 xff1a make C
  • 匿名科创-匿名光流V3版对天安装介绍

    安装介绍 光流模块对天安装时 xff0c 方向参考上图 注意 xff0c 只有光流模块对上安装 xff0c 激光或超声波测距模块仍然对地安装 配置介绍 如需使用对天模式 xff0c 硬件安装好后 xff0c USB线连接光流模块至上位机 x
  • 从 C51+uCos-II 近距离了解操作系统任务切换原理

    前言 从 C51 43 uCos II 简单介绍下任务切换的原理 方便大家更形象的理解多任务怎么切换 为后续写 x86 43 Linux 任务切换做铺垫练手吧 参考资料如下 xff1a uCos II 源码 单片机原理与应用及 C51 编程
  • Keil+Simulink生成Xcp标定协议A2L文件

    Keil 43 Simulink生成Xcp标定协议A2L文件 由于最近要为ECU移植XCP协议 xff0c 所以记录一下 xff0c 我使用的MCU为NXP S32K144 IDE选用MDK 官方IDE S32DS无代码联想功能 xff0c
  • 记录一下关于MPC5744P CAN总线学习

    记录一下关于MPC5744P CAN总线学习 主要是针对开发出BUSOFF管理 xff0c NXP感觉都是一个套路 xff0c 无论powerpc xff0c 还是arm m status t span class token functi
  • 通过.map文件填写XCP标定需要的A2L文件

    首先你得有一个模板 xff0c 通过python脚本打开编译后的 map文件自动填写到A2L文件对应位置 xff0c 目前只实现了填写Mesurement 区域 xff0c 但是这个填写主要是更新变量名和对应的ECU ADRRESS 因为
  • Autosar Xcp移植

    前言 xff1a 可能有兄弟胸中有点疑问 Vector ETAS等软件包都有XCP xff0c 你移植个吊 xff0c 但是我的MICORSAR BSW中没发现XCP静态代码 xff0c 倒是在CFG中发现了XCP配置选项 xff0c 难道
  • Tricore学习-芯片启动流程

    第一次接触Tricore 学习下从芯片上电到运行到main函数的过程 xff0c 本文以TC36X为例 xff0c 具体可参考英飞凌官方的Infineon AURIX TC3xx Part1 UserManual v02 00 EN 首先T
  • ETAS-AUTOSAR学习-0.1Task配置思考

    span class token function TASK span span class token punctuation span OsTask BSW span class token punctuation span span