[AutoSar]一种ECU间CAN通信的优化方法

目录

  • 关键词
  • 平台说明
  • 一、背景
  • 二、问题现象
  • 三、原因
  • 四、解决办法
  • 五、实现
    • 5.1 配置
    • 5.2 code

关键词

嵌入式、C语言、autosar

平台说明

项目Value
OSautosar OS
autosar厂商EB
芯片厂商英飞凌 TC397
编程语言C,C++
编译器TASKING

在这里插入图片描述

一、背景

  在一个项目中,会从多个外部ECU或者sensor通过can总线接收大量的object,在应用层中对这些object进行处理和使用。

二、问题现象

  CAN 通讯占用了大量的CPU资源。

三、原因

  CAN->CANIF->PDUR->COM->RTE->ASW memory
copy了多次,浪费了大量的cpu资源。
在这里插入图片描述

四、解决办法

  在can if 上层创建一个CDD,对数据进行打包后通过DMA传到ASW使用。
在这里插入图片描述

五、实现

  对external ECU 的can通讯重新调整,依据循环帧ID 越大优先级越低或者其他标志位,判定收到的object完整后进行打包。

5.1 配置

在这里插入图片描述

5.2 code

该代码基于EB工具链生成,Vector工具链生成的代码略有区别,请自行区分。

Sdc_CoreConfigPtr->CanControllerMsgRAMMapConfigPtr[3].CanControllerMsgRAMMap[CAN_17_MCMCAN_RBSA];/*找到canbuffer*/
CONST( CanIf_CbkFctPtrTblType, CANIF_APPL_CONST ) CanIf_CbkFctPtrTbl[] =
{{/* PDUR */&PduR_CanIfRxIndication,&PduR_CanIfTxConfirmation,},{/* CAN_TP */&CanTp_RxIndication,&CanTp_TxConfirmation,},{/* CDD */&Xcp_CanIfRxIndication,&Xcp_CanIfTxConfirmation,},{/* CAN_TSYN */&CanTSyn_RxIndication,&CanTSyn_TxConfirmation,},{/* CAN_NM */&CanNm_RxIndication,&CanNm_TxConfirmation,},{/* uerdefien */&uerdefine_CanRxIndication,/*函数内部用户实现*/NULL_PTR,},
};

用户代码请根据自身需求修改和实现。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习 NVIDIA Omniverse 的最基础概念

无用的前言 近两年关于 Omniverse 的宣传一直很多,可我一直没去了解,连它是个啥都不知道。最近正好有契机需要了解它,于是我今天抽时间看了些它的官方介绍,并按照自己的理解梳理在这里。 官方资料索引 Omniverse 官网主页&…

向IDEA导入SpringBoot项目如何运行

解析项目 拿到项目之后,先分析分析。一般都有.md文件指导你,给你说用什么语言,工具,jdk版本,数据库版本,有没有maven。如果没有就直接将项目导入idea. 1.配置maven,没有maven请看https://blog.csdn.net/m0_…

TTS | emotional-vits情绪语音合成的实现

本文主要介绍了情绪语音合成项目训练自己的数据集的实现过程~ innnky/emotional-vits: 无需情感标注的情感可控语音合成模型,基于VITS (github.com) 目录 0.环境设置 1.数据预处理 2..提取情绪 3.训练 4.推理 过程中遇到的问题与解决【PS】 0.环境设置 因为我…

mysql为什么不推荐使用uuid或者雪花id作为主键

1 前言 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处? 本文我们就来分析这个问题,探讨…

机器视觉 齿轮检测

案例:齿轮内径检测 1.使用模板匹配 2.设置匹配区域 3.使用掩膜不必要的干扰 (保留两个内径的圆形) 1.添加找圆工具 2.添加模板匹配中心坐标 3.给外圈圆添加找圆工具 RunParams.ExpectedCircularArc.CenterX RunParams.ExpectedCircularArc.Cente…

(04730)电路分析基础之正弦交流电路(一)

正弦交流电概述 我们在前面已讨论了直流电路的分析,在直流电路中电压或电流的大小和方向都是不随时间而变化的;但在交流电路中,电压或电流的大小和方向都在随时间而变化,其变化规律多种多样,应用得最普遍的是按正弦规…

全志H6-ARMLinux第1天:全志概述、刷机登陆、官方外设库、蜂鸣器、超声波测距

1. 全志H616课程概述(456.01) 1.1 为什么学 学习目标依然是Linux系统,平台是ARM架构 蜂巢快递柜,配送机器人,这些应用场景用 C51、STM32 单片机无法实现第三方介入库的局限性,比如刷脸支付和公交车收费设…

#HarmonyOS:装饰器UI描述---@Link

装饰器 装饰器(Decorator)是一种语法结构,用来在定义时修改类(class)的行为。 在语法上,装饰器有如下几个特征。 第一个是字符(或者说前缀)是,后面是一个表达式后面的…

vscode eide arm-gcc 编译环境搭建调试

安装cube,vscode 1.安装vscode插件 C/C Extension Pack Chinese (Simplified) (简体中文) Language Pack Cortex-Debug Embedded IDE 工具链设置 2.软件工程生成 调试 3.生成工程,导入工程 4. 配置工程 编译完毕

【LeetCode刷题-树】-- 99.恢复二叉树

99.恢复二叉树 方法: 对二叉搜索树进行中序遍历得到值序列不满足的位置找到对应被错误交换的节点记为x和y交换x和y两个节点 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tre…

一拎即走的轻薄云台投影,极米投影仪Z7X解锁观影新姿势

近年来,随着投影技术的不断提高以及大屏幕带来的加倍快乐,让投影仪成为了一种新的观影潮流。尤其是“去客厅化”的大背景下,年轻人几乎将目光都投向了投影仪,从而实现在家就能享受大屏观影的效果和体验。那么备受当下年轻消费者青…

仿照MyBatis手写一个持久层框架学习

首先数据准备,创建MySQL数据库mybatis,创建表并插入数据。 DROP TABLE IF EXISTS user_t; CREATE TABLE user_t ( id INT PRIMARY KEY, username VARCHAR ( 128 ) ); INSERT INTO user_t VALUES(1,Tom); INSERT INTO user_t VALUES(2,Jerry);JDBC API允…