汽车电子笔记:BootLoader升级过程疑难问题解决方式(Bootloader响应10 02 + 刷死拯救机制)

目录

1、概述

2、如何在BootLoader响应10 02

2.1、实现流程图

 2.2、实现方式(代码思路)

3、刷死拯救机制(100%能救活,适配各类控制器的方法)

3.1、强留Boot流程图

3.2、实现方式(代码思路)


1、概述

        BootLoader作为升级APP程序必不可少的一环,作为固件烧录在MCU的固定地址(一般地址的较为考前位置),记录一下在日常工作中遇到的有关BootLoader的疑问点、比较值得记录点、一些使用方法等。

2、如何在BootLoader响应10 02

2.1、实现流程图

        部分客户需求、刷写APP的时候,编程会话10 02 需要响应在BootLoader里面,之前一直对如何响应在BootLoader存疑,毕竟响应是Can发出去的,BootLoader没接收,怎么响应的呢?

        响应流程如下

 2.2、实现方式(代码思路)

        前置条件:已经判断了重刷写标志位置位。

static const uint8 Boot_ReprogrammingResponse[8]=
{0x06u,0x50u,0x02u,ADPT_SESSION_RESPONSE0,ADPT_SESSION_RESPONSE1,ADPT_SESSION_RESPONSE2,ADPT_SESSION_RESPONSE3,CANTP_FRAME_PADDING_VALUE
};(void)Canif_Write(ADPT_UDS_TX_HANDLE, (uint16)sizeof(Boot_ReprogrammingResponse),Boot_ReprogrammingResponse);

伪代码如下

void Fun(void)
{If(Reprogramming  == true){Canif_Write(Handle,size,buff);}
}

3、刷死拯救机制(100%能救活,适配各类控制器的方法)

        目前项目中遇到一个问题,将英飞凌的Hex刷写进了NXP的芯片里面,上电就死机,由于BootLoader做法比较简单,刷错有时候也是不可避免。所以一般需要留一些后门比较好点。

3.1、强留Boot流程图

大概思路如下,软件流程图如下

3.2、实现方式(代码思路)

  1. 每次上电,前50ms不执行跳去初始化与跳APP的操作,执行诊断服务这一层的代码
If((stayinboottime == 0)&&(stayinbootFlag == 0)&&(AppValidFlag == 1))
{X_DeInit();Clear_Ram();Go_App();
}
else
{CanTp();Uds();
}

        在上电前的50ms,诊断服务判断会话模式,检测到10 03 将stayinbootFlag = 1,此时就会一直停留在Boot里面了,实现正常升级其他程序。

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

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

相关文章

【C++进阶】仿函数 模板进阶

目录 前言 1. 仿函数 1.1 什么是仿函数 1.2 仿函数的应用 2. 模板 2.1 非类型模板参数 非类型模板参数的应用 2.2 模板特化 概念 函数模板的特化 类模板特化 全特化 偏特化 3. 模板分离编译问题 解决办法 4. 模板总结 总结 前言 我们已经基本学习完了C的一些基础特性&#x…

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效?

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效? 当大家都在研究大模型(LLM)参数规模达到百亿甚至千亿级别的同时,小巧且兼具高性能的小…

babylonjs入门

基于babylonjs封装的一些功能和插件 ,希望有更多的小伙伴一起玩babylonjs; 欢迎加群:464146715 官方文档 中文文档 Babylonjs案例分享 ​ import React, { FC, useCallback, useEffect, useRef, useState } from react; import TemplateBB…

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 参考博文: 1.C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 2.Linux笔记之LD_LIBRARY_PATH详解 3.qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径 c…

一款.NET下 WPF UI框架介绍

WPF开源的UI框架有很多,如HandyControl、MahApps.Metro、Xceed Extended WPF Toolkit™、Modern UI for WPF (MUI)、Layui-WPF、MaterialDesignInXamlToolkit、等等,今天小编带大家认识一款比较常用的kaiyuanUI---WPF UI,这款ui框架美观现代化,用起来也超级方便, 界面展示…

matlab生成模拟的通信信号

matlab中rand函数生成均匀随机分布的随机数,randn生成正态分布的随机数; matlab来模拟一个通信信号; 通信信号通过信道时,研究时认为它会被叠加上服从正态分布的噪声; 先生成随机信号模拟要传输的信号,s…

【深入理解设计模式】装饰者设计模式

装饰者设计模式 装饰者设计模式(Decorator Design Pattern)是一种结构型设计模式,它允许向现有对象添加新功能而不改变其结构。这种模式通常用于需要动态地为对象添加功能或行为的情况,而且这些功能可以独立于对象本身来进行扩展…

Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。Android studio纯java代码报错

我使用java代码 构建项目,初始代码运行就会报错。我使用的是Android Studio Giraffe(Adroid-studio-2022.3.1.18-windows)。我在网上找的解决办法是删除重复的类,但这操作起来真的太麻烦了。 这是全部报错代码: Dupli…

解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题

解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题 前几天出了教程本地部署gogs,在后期运行时发现两个问题: 第一:邮件明明配置了,后台显示未配置,…

QT之项目经验(windows下的sqlite,c++开发)

目录 一、需要时间去磨练gui的调整和优化 1. 借鉴网上开源项目学习 2. gui的布局及调整是磨人的一件事情 3. gui的布局也是可以用组件复刻的 4. 耗时的设备树 二、多线程异步弹窗 三、定时任务动态变更设定 1.确定按钮触发 2.此处监听定时任务时间的改变 3.此处对改变做出具…

html5盒子模型

1.边框的常用属性 border-color 属性 说明 示例 border-top-color 上边框颜色 border-top-color:#369; border-right-color 右边框颜色 border-right-color:#369; border-bottom-color 下边框颜色 border-bottom-color:#fae45b; border-left-color 左边框颜色…

【GPTs分享】每日GPTs分享之Image Generator Tool

今日GPTs分享:Image Generator Tool。Image Generator Tool是一种基于人工智能的创意辅助工具,专门设计用于根据文字描述生成图像。这款工具结合了专业性与友好性,鼓励用户发挥创造力,同时提供高效且富有成效的交互体验。 主要功能…