[AutoSar]状态管理(二)单核 ECUM wakeup 流程——Can唤醒流程(TJA1043)

news/2024/9/12 16:09:37/

目录

  • 关键词
  • 平台说明
  • 一 、前言
  • 二、wakeup
    • 2.1 wakeup source和Check-Wakeup Validation
    • 2.2Can唤醒流程(TJA1043)
      • 2.2.1 相关配置
        • 2.2.1.1 EcuM
        • 2.2.1.2 CanIF
      • 2.2.2 序列图
      • 2.2.3流程和code

  

关键词

嵌入式、C语言、autosar、EcuM、wakeup、flex

平台说明

项目Value
OSautosar OS
autosar厂商vector
芯片厂商TI
编程语言C,C++
编译器HighTec (GCC)

在这里插入图片描述

一 、前言

  接上一篇笔记[AutoSar]状态管理(一)单核 ECUM,这里主要为wakeup 的流程。以Can唤醒流程(TJA1043)为例。

二、wakeup

2.1 wakeup source和Check-Wakeup Validation

  当Validation Timeout没有被配置为0的时候,通过调用EcuM_ValidateWakeupEvent()进行验证。如果在此期间未验证唤醒事件,EcuM将此事件设置为“过期”,并向BswM报告。该配置主要为了避免误唤醒,例如外部IO或者CAN总线上的电压脉冲唤醒。

ECUM_WKSOURCE_POWER
ECUM_WKSOURCE_RESET
ECUM_WKSOURCE_INTERNAL_RESET
ECUM_WKSOURCE_INTERNAL_WDG
ECUM_WKSOURCE_EXTERNAL_WDG
这五种标准的唤醒源不需要校验。

唤醒源分为四种状态:
NONE —— 无唤醒事件或唤醒事件被清除;
PENDING —— 唤醒事件等待验证;
VALIDATED —— 唤醒事件验证通过;
EXPIRED —— 唤醒事件验证失败
这四种状态的切换状态机如下图:
在这里插入图片描述

2.2Can唤醒流程(TJA1043)

  ECU系统休眠后TJA1043的INH脚处于floating高阻态,外部电路为下拉到低电平。在配置中将TJA1043的INH引脚配置为唤醒源,在休眠中如果收到任意报文该引脚会被拉高,产生一个CAN硬件唤醒事件。如果系统为KL15系统,INH引脚会关联到SBC,INH被触发拉高后ECU会被启动。如果系统为常电系统,INH关联到ECU中断唤醒引脚,通过检测INH唤醒事件激活MCU。

2.2.1 相关配置

2.2.1.1 EcuM

配置网络唤醒源和校验功能。
在这里插入图片描述

2.2.1.2 CanIF

配置唤醒帧过滤
在这里插入图片描述

2.2.2 序列图

在这里插入图片描述

2.2.3流程和code

1.中断触发EcuM_CheckWakeup(EcuM_WakeupSourceType)

FUNC(void, ECUM_CODE) EcuM_CheckWakeup(EcuM_WakeupSourceType wakeupSource)
{
if((wakeupSource & ECUM_WKSOURCE_CAN0) != 0){
CanIf_CheckWakeup(ECUM_WKSOURCE_CAN0);}
}

2.EcuM_Callout中CanIf_CheckWakeup(EcuM_WakeupSourceType)
3.CanIf调用EcuM_SetWakeupEvent(EcuM_WakeupSourceType)设置唤醒事件
4. EcuM_StartWakeupSources(EcuM_WakeupSourceType)

FUNC(void, ECUM_CODE) EcuM_StartWakeupSources(EcuM_WakeupSourceType
wakeupSource)
{
if ((wakeupSource & ECUM_WKSOURCE_CAN0) != 0){ /* CanSM needs the corresponding Network Handle */if (CanSM_StartWakeupSources(0x00) == E_NOT_OK){/* place ECU depended error handling here */}}
}
  1. CanSM_StartWakeupSources(EcuM_WakeupSourceType)设置CanTrancv和driver到NORMAL/START模式用于接收CAN报文。
  2. EcuM_CheckValidation(EcuM_WakeupSourceType)
FUNC(void, ECUM_CODE) EcuM_CheckValidation(EcuM_WakeupSourceType wakeupSource)
{if ((wakeupSource & ECUM_WKSOURCE_CAN0) != 0){/* Query the driver if the wake-up event was valid */CanIf_CheckValidation(ECUM_WKSOURCE_CAN0);}
}
  1. CanIf_CheckValidation(EcuM_WakupSourceType)校验唤醒源
  2. 校验成功则调用ComM_WakeUpIndication()请求通信,ComMCommunicationAlllowed后就会调转到Full Com状态开启网络。
  3. 校验失败则调用EcuM_StopWakeupSources()CanSM_StopWakeupSources()
void EcuM_StopWakeupSources(EcuM_WakeupSourceType wakeupSource)
{if ((wakeupSource & ECUM_WKSOURCE_CAN0) != 0){ /* CanSM needs the corresponding Network Handle */if (CanSM_StopWakeupSources(0x00, wakeupSource) == E_NOT_OK){/* place ECU depended error handling here */}}
}

http://www.ppmy.cn/news/1267026.html

相关文章

组合总和类题目汇总

刷leetcode时遇到好几个组合总和类题目,在这里汇总归纳一下 leetcode算法题–组合总和 Ⅳ零钱兑换 IIleetcode算法题–组合总和 一般这类题目有两种做法,动态规划或者是dfs。一般如果题目只要求一个组合数,那么一般就使用动态规划做&#x…

深入浅出接口测试原理及步骤

那么接口是什么? 软件开发,既要做前端,也要做后端,并且后端是整个业务的核心,用于处理业务请求,实现具体的功能;而前端只是提供一个页面给用户看结果以及提供页面给用户做输入。所以整个业务的…

图文教程:stable-diffusion的基本使用教程 txt2img(多图)

之前我介绍了SD的安装过程,那么这篇将介绍怎么使用SD 使用模型 SD安装好之后,我们只有一个默认的模型。这个模型很难满足我们的绘图需求,那么有2种方法。 1是自己训练一个模型(有门槛)2是去网站上找一个别人练好的模…

分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载

1、功能概述? 1、当用户登录的时候,将用户的信息通过JWT进行加密和签名,并将JWT产生了token信息保存到当前浏览器的localStoragee中,即本地存储中。 2、当用户登录成功后,访问其他资源的时候,程序从localStorage中获…

PHP是什么?

PHP(Hypertext Preprocessor)是一种广泛用于服务器端Web开发的开源脚本语言。最初由Rasmus Lerdorf于1994年创建,并于1995年发布了第一个版本。PHP语言的设计初衷是用于处理动态网页,尤其是用于构建Web应用程序。 PHP脚本通过嵌入…

物联网安全芯片ACL16 采用 32 位内核,片内集成多种安全密码模块 且低成本、低功耗

ACL16 芯片是研制的一款32 位的安全芯片,专门面向低成本、低功耗的应用领域, 特别针对各类 USB KEY 和安全 SE 等市场提供完善而有竞争力的解决方案。芯片采用 32 位内核,片内集成多种安全密码模块,包括SM1、 SM2、SM3、 SM4 算法…

Windows 11安装xray

需要先安装python,我这里已经安装好了,在命令行里边使用python --version可以看到自己的python版本。 xray的下载网址为https://github.com/chaitin/xray/releases,我根据自己的笔记本电脑配置,选择下载xray_windows_amd64.exe.…

算法基础之分解质因数

分解质因数 核心思想&#xff1a;试除法(从小到大枚举所有数) #include<iostream>#include<algorithm>using namespace std;void div(int n){for(int i2;i<n/i;i){if(n%i 0) //找到最小质数i{int s0;while(n%i 0){n/i;s; //记录指数}cout<<i<<&…

三天精通Selenium Web 自动化 - 项目实战环境准备

1 部署TestNG 返回 TestNG&#xff0c;即Testing Next Generation&#xff0c;下一代测试技术&#xff0c;是一套根据JUnit和NUnit思想而构建的利用注释来强化测试功能的一个测试框架&#xff0c;即可以用来做单元测试&#xff0c;也可以用来做集成测试。更多细节可以到官网去…

随机梯度下降的代码实现

在单变量线性回归的机器学习代码中&#xff0c;我们讨论了批量梯度下降代码的实现&#xff0c;本篇将进行随机梯度下降的代码实现&#xff0c;整体和批量梯度下降代码类似&#xff0c;仅梯度下降部分不同&#xff1a; import numpy as np import pandas as pd import matplotl…

记录每日LeetCode 72.编辑距离 Java实现

题目描述&#xff1a; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 初始代码&#xff1a; class Solution {public int minDistan…

mysql 快捷登陆

要将 MySQL 的登录命令添加到环境变量中并为其创建别名&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 打开终端并编辑 /etc/profile 文件&#xff08;使用所有用户的全局设置&#xff09; vim /etc/profile 2. 在文件的末尾添加以下行来设置环境变量和别名 # 将 &q…

软件开发流程分析

软件开发流程分析 相关概念1 原型设计2 产品设计3 交互设计4 代码实现详细步骤 相关概念 前端&#xff1a;自研API&#xff0c;调用第三放API 后端&#xff1a;自研API&#xff0c;第三方API 数据库&#xff1a;Mysql&#xff0c;数据采集&#xff0c;数据迁移 服务器&#xf…

计算机网络(第二章)——物理层

本文来自b站计算机网络课程&#xff0c;是对该课程的总结学习。 全文是作者精心打造&#xff0c;可能有些地方会有些出入&#xff0c;目前初次学习也许了解浅显&#xff0c;往各位可留言指正。 2.1物理层的基本概念 计算机网络的物理层就是要解决在各种传输媒介上传输比特0和1…

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发&#xff0c;可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

编程语言的演进历程与未来发展趋势

第一代 编程语言的发展历程起源于早期的机器语言阶段&#xff0c;这是一种由二进制代码构成的计算机能够直接解读并执行的语言。然而&#xff0c;鉴于其过于复杂且难以理解&#xff0c;故这一时代的语言并不常为人类所采纳。 第二代 紧接着产生的第二代语言旨在简化编程过程…

【上海大学数字逻辑实验报告】六、时序电路

一、 实验目的 掌握同步二进制计数器和移位寄存器的原理。学会用分立元件构成2位同步二进制加计数器。学会在Quartus II上设计单向移位寄存器。学会在Quartus II上设计环形计数器。 二、 实验原理 同步计数器是指计数器中的各触发器的时钟脉冲输入端连接在一起&#xff0c;接…

如何通过上下滑动实现亮度和音量调节(ArkUI)

场景说明 在音视频应用中通常可以通过上下滑动来调节屏幕亮度和音量大小&#xff0c;本例即为大家介绍如何实现上述UI效果。 说明&#xff1a; 由于当前亮度和音量调节功能仅对系统应用开发&#xff0c;所以本例仅讲解UI效果的实现。 效果呈现 本例效果如下&#xff1a; 当在…

mybatis 的快速入门以及基于spring boot整合mybatis(一)

MyBatis基础 MyBatis是一款非常优秀的持久层框架&#xff0c;用于简化JDBC的开发 准备工作&#xff1a; 1&#xff0c;创建sprong boot工程&#xff0c;引入mybatis相关依赖2&#xff0c;准备数据库表User&#xff0c;实体类User3&#xff0c; 配置MyBatis&#xff08;在applic…

分层自动化测试的实战思考!

自动化测试的分层模型 自动化测试的分层模型&#xff0c;我们应该已经很熟悉了&#xff0c;按照分层测试理念&#xff0c;自动化测试的投入产出应该是一个金字塔模型。越是向下&#xff0c;投入/产出比就越高&#xff0c;但开展的难易程度/成本和技术要求就越高&#xff0c;但…