[AutoSar]BSW_Diagnostic_007 BootLoader 跳转及APP OR boot response 实现

目录

  • 关键词
  • 平台说明
  • 背景
  • 一、Process Jump to Bootloader
  • 二、相关函数和配置
    • 2.1 Dcm_GetProgConditions()
    • 2.2 Dcm_SetProgConditions()
  • 三、如何实现在APP 还是BOOT 中对10 02服务响应
    • 3.1 配置
    • 3.2 code
  • 四、报文
  • 五、小结

  

关键词

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

平台说明

项目Value
OSautosar OS
autosar厂商vector
芯片厂商TI
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1
参考文档TechnicalReference_Dcm.pdf AUTOSAR_SRS_DiagnosticLogAndTrace.pdf AUTOSAR_SWS_DiagnosticCommunicationManager.pdf AUTOSAR_SWS_DiagnosticEventManager.pdf AUTOSAR_SWS_FunctionInhibitionManager.pdf- 【14229-1.2.3】,【15765-1.2.3.4】. 【11898】 《MICROSAR Classic DCM》

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

  
  

缩写描述
DEMDiagnostic Event Manager
DETDevelopment Error Tracer
DDMDiagnostic Data Modifier
DCMDiagnostic Communication Manager
LSBleast significant byte
MSBmost significant byte
DIDData dentifier
DSDDiagostic Service Dispatcher (submodule of the DCM module)
DSLDiagostic Session Layer (submodule of the DCM module)
DSPDiagostic Service Processing (submodule of the DCM module)
ResDataresponse Data
ReqDatarequest Data
HISHersteller Initiative Software
RCR-RPresponse pending

背景

   1.基于vector 工具 的boot 跳转的通用流程及其实现。2.如何实现在在APP还是boot 中对 10 02 的response。

一、Process Jump to Bootloader

  在autosar 标准文档中我们可以看到跳转到boot的流程图如下:
在这里插入图片描述
  一般情况下需要先进入external session(10 03),并且在external session 下进行 解锁(27 01 and 27 02),再通过 10 02 进入 program session 触发上图流程。

二、相关函数和配置

2.1 Dcm_GetProgConditions()

  该函数用于在ECU启动的时候获取配置信息(例如被置位的 bootloader_flag),并根据冷启动或热启动判定结果判定是否对10 服务进行响应。
  使用此函数需要配置DcmFinalResponseToFblEnabled = true.
在这里插入图片描述

2.2 Dcm_SetProgConditions()

  此函数在触发10 02 后被调用,主要实现在跳转到boot 前的信息的存储(如置位 bootloader_flag),硬件配置(如关闭watchdog 检测)等,最后调用软复位 函数对ECU进行复位。

三、如何实现在APP 还是BOOT 中对10 02服务响应

  两种情况:1.在请求 10 02 后 ,先在APP 中 对 10 02 进行 positive response,然后进行ecu复位,复位后进入boot。2.在请求 10 02 后 ,先在APP 中进行ecu复位,诊断响应0x78 pending,复位后进入boot,再在boot中 对 10 02 进行 positive response。

3.1 配置

  要实现此功能需要进行两处配置
1.DcmResetToFblAfterSessionFinalResponseEnabled
该配置决定了是否在APP 中响应10 服务。如果设置为false,则为在BOOT 中响应。
在这里插入图片描述
2.DcmSendRespPendOnRestart
  该配置决定了是否在ECU复位前发送0x78 即RCR-RP 。同时需要合理设置P2 和P2* 时间。
在这里插入图片描述

3.2 code

1.Dcm_SetProgConditions()

Std_ReturnType Dcm_SetProgConditions(Dcm_ProgConditionsPtrType progConditions)
{Std_ReturnType retVal = DCM_E_NOT_OK;Psc_t_Status s_RetVal_Psc = PSC_NOT_OK;if(NULL_PTR != progConditions){if( (progConditions->ReprogrammingRequest == TRUE) &&(progConditions->Sid == 0x10) &&(progConditions->ResponseRequired == FALSE) &&(progConditions->SubFuncId == 0x02) ){bootloader_flag = TRUE;/*设置标志位用于在复位后判定是该进入app还是boot*/close_watchdog() /*关闭喂狗*/Mcu_PerformReset()/*复位,4.0.3之前调用这个函数,新版本会在10 或者 11复位 触发Rte_Switch_DcmEcuReset_DcmEcuReset进行复位*/retVal = DCM_E_OK;}if (progConditions->ReprogrammingRequest == FALSE){retVal = DCM_E_OK;}}else{/* NOK returned */}return retVal;
}

2.Dcm_GetProgConditions()

Dcm_EcuStartModeType Dcm_GetProgConditions(Dcm_ProgConditionsPtrType progConditions)
{Dcm_EcuStartModeType retVal = DCM_COLD_START;if(NULL_PTR != progConditions){/* Check if there was a programming request */if(bootloader_flag == TRUE) /*热启动,从APP跳转而来*/{progConditions->TesterSourceAddr = DIAG_ID;/*DcmDslProtocolRxTesterSourceAddr 配置的值*/progConditions->Sid = 0x10;progConditions->SubFuncId = 0x02;progConditions->ResponseRequired = TRUE;/*TRUE 才能响应*/progConditions->ApplUpdated = FALSE;bootloader_flag == FALSE;/*清除标志位*/retVal = DCM_WARM_START;}}if(retVal == DCM_COLD_START){/* The ECU starts normally */progConditions->TesterSourceAddr = DIAG_ID;/*DcmDslProtocolRxTesterSourceAddr*/progConditions->ProtocolId = 0;progConditions->Sid = 0x10;progConditions->SubFuncId = 0x02;progConditions->ReprogrammingRequest = FALSE;progConditions->ResponseRequired = FALSE;progConditions->ApplUpdated = FALSE;}return retVal;
}

四、报文

  
在这里插入图片描述
  

五、小结

  

在这里插入图片描述

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

  
  

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

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

相关文章

重塑用户体验!快手电商智能巡检平台的实践与探索

导读&#xff1a;随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为推动各行各业创新的重要力量。特别是在用户体验方面&#xff0c;AI 技术的应用不仅解决了许多传统问题&#xff0c;还带来了全新的交互方式和更高的用户满意度。本文将从快手电商B端…

sin函数拟合

目录 一、 目的... 1 二、 模型设计... 1 2.1 输入与输出.... 1 2.2 隐藏层设计.... 1 2.3 优化算法与损失函数.... 1 2.4 神经网络结构.... 1 三、 训练... 1 3.1 数据生成.... 2 3.2 训练过程.... 2 3.3 训练参数与设置.... 2 四、 测试与分析... 2 4.1 选取不同激活函数....…

【鸿蒙】鸿蒙开发过程中this指向问题

文章目录 什么是 this&#xff1f;常见 this 指向问题案例分析&#xff1a;HarmonyOS 组件中的 this 指向问题问题描述问题分析原因 解决方案&#xff1a;绑定 this 的正确方法方法一&#xff1a;使用箭头函数方法二&#xff1a;手动绑定 this 完整代码示例使用箭头函数使用 bi…

【摸鱼】Docker配置主从mysql数据库环境

docker pull mysql拉取docker镜像&#xff0c;国内现在访问不了docker hub&#xff0c;可以去阿里云上镜像加速器地址https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors启动主库docker run -p 3306:3306 --name master-mysql --privilegedtrue -v /app/docker/data…

初试无监督学习 - K均值聚类算法

文章目录 1. K均值聚类算法概述2. k均值聚类算法演示2.1 准备工作2.2 生成聚类用的样本数据集2.3 初始化KMeans模型对象&#xff0c;并指定类别数量2.4 用样本数据训练模型2.5 用训练好的模型生成预测结果2.6 输出预测结果2.7 可视化预测结果 3. 实战小结 1. K均值聚类算法概述…

大数据笔记

第一章、大数据概述 人类的行为及产生的事件的一种记录称之为数据。 1、大数据时代的特征&#xff0c;并结合生活实例谈谈带来的影响。 &#xff08;一&#xff09;特征 1、Volume 规模性&#xff1a;数据量大。 2、Velocity高速性&#xff1a;处理速度快。数据的生成和响…

深度学习实战老照片上色

目录 1.研究背景与意义1. 卷积神经网络&#xff08;CNN&#xff09;在老照片上色中的应用1.1 卷积层与特征提取1.2 颜色空间转换1.3 损失函数与训练优化 2. 生成对抗网络&#xff08;GAN&#xff09;在老照片上色中的应用2.1 生成器与判别器2.2 对抗训练2.3 条件生成对抗网络&a…

C#面向对象,封装、继承、多态、委托与事件实例

一&#xff0e;面向对象封装性编程 创建一个控制台应用程序&#xff0c;要求&#xff1a; 1&#xff0e;定义一个服装类&#xff08;Cloth&#xff09;&#xff0c;具体要求如下 &#xff08;1&#xff09;包含3个字段&#xff1a;服装品牌&#xff08;mark&#xff09;,服装…

养老院、学校用 安科瑞AAFD-40Z单相电能监测故障电弧探测器

安科瑞戴婷 Acrel-Fanny 安科瑞单相电能监测故障电弧探测器对接入线路中的故障电弧&#xff08;包括故障并联电弧、故障串联电弧&#xff09;进行有效的检测&#xff0c;当检测到线路中存在引起火灾的故障电弧时&#xff0c;探测器可以进行现场的声光报警&#xff0c;并将报警…

PAT甲级 1056 Mice and Rice(25)

文章目录 题目题目大意基本思路AC代码总结 题目 原题链接 题目大意 给定参赛的老鼠数量为NP&#xff0c;每NG只老鼠分为一组&#xff0c;组中最胖的老鼠获胜&#xff0c;并进入下一轮&#xff0c;所有在本回合中失败的老鼠排名都相同&#xff0c;获胜的老鼠继续每NG只一组&am…

[SWPUCTF 2021 新生赛]include

参考博客: 文件包含 [SWPUCTF 2021 新生赛]include-CSDN博客 NSSCTF | [SWPUCTF 2021 新生赛]include-CSDN博客 考点:php伪协议和文件包含 PHP伪协议详解-CSDN博客 php://filter php://filter可以获取指定文件源码。当它与包含函数结合时&#xff0c;php://filter流会被当…

spring boot3.3.5 logback-spring.xml 配置

新建 resources/logback-spring.xml 控制台输出颜色有点花 可以自己更改 <?xml version"1.0" encoding"UTF-8"?> <!--关闭文件扫描 scanfalse --> <configuration debug"false" scan"false"><springProperty …

Unity shaderlab 实现LineSDF

实现效果&#xff1a; 实现代码&#xff1a; Shader "Custom/LineSDF" {Properties{}SubShader{Tags { "RenderType""Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{floa…

PHP 去掉特殊不可见字符 “\u200e“

描述 最近在排查网站业务时&#xff0c;发现有数据匹配失败的情况 肉眼上完全看不出问题所在 当把字符串 【M24308/23-14F‎】复制出来发现 末尾有个不可见的字符 使用删除键或左右移动时才会发现 最后测试通过 var_dump 打印 发现这个"空字符"占了三个长度 &#xf…

Web会话安全测试

Web会话安全测试 - 知乎 1、会话ID不可预测性 【要求】 会话ID必须采用安全随机算法&#xff08;如SecureRandom&#xff09;生成&#xff0c;并且强度不得低于256位&#xff08;32字符&#xff09;&#xff0c;如采用Tomcat原生JSESSIONID【描述】 密码与证书等认证手段&…

springboot336社区物资交易互助平台pf(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 社区物资交易互助平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff…

富文本编辑器图片上传并回显

1.概述 在代码业务需求中&#xff0c;我们会经常涉及到文件上传的功能&#xff0c;通常来说&#xff0c;我们存储文件是不能直接存储到数 据库中的&#xff0c;而是以文件路径存储到数据库中&#xff1b;但是存储文件的路径到数据库中又会有一定的问题&#xff0c;就是 浏览…

结构体详解+代码展示

系列文章目录 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…

学习ASP.NET Core的身份认证(基于Session的身份认证1)

ASP.NET Core使用Session也可以实现身份认证&#xff0c;关于Session的介绍请见参考文献5。基于Session的身份认证大致原理就是用户验证成功后将用户信息保存到Session中&#xff0c;然后在其它控制器中从Session中获取用户信息&#xff0c;用户退出时清空Session数据。百度基于…

题目 3209: 蓝桥杯2024年第十五届省赛真题-好数

一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &#xff09;上的数字是偶数&#xff0c;我们就称之为“好数”。给定一个正整数 N&#xff0c;请计算从…