汽车Bootloader流程
根据ISO14229-1 写的汽车行业 Bootloader流程
- 1 编程前
→ 先读取软硬件版本号
22 F1 XX 软件信息
22 F1 XX 硬件信息
→ 进入扩展会话extend diagnostic sessions 功能寻址
10 03
→ 编程条件检测routine control :ECU升级条件的判断,如车速,检测车的型号
31 01 02 03
→ 关闭DTC检测,(由于很多节点收不到其它节点的报文后会记录DTC故障)功能寻址
85 02
→ 关闭诊断通讯(禁止各个节点的应用报文发送,网络管理报文发送)功能寻址
28 03 01
- 2:编程中
→ 进入编程会话
10 02 单片机重启(进入Boot),重启后相应 50 20
→ 解锁 安全访问
27 11 等级11 (seed)
27 12 发送KEY
→ 写入指纹信息
2E F1 84 XX XX XX(写入的参数 年月日)
⇒ 下载内存驱动 Flashdrive
1,请求下载 34 大小 内存地址
2,发送数据 36
3,请求退出 37
4,CRC校验 31 01 CRC
→ 擦除单片机内存 31 01 FF 00
→ 请求下载 34 大小 内存地址
→ 发送数据 36
→ 请求退出 37
→ 一致性校验 31 01 FF 01
在“编程”阶段,首先进入编程会话模式,然后进行安全访问,下载应用程序对应的指令数据。
通过执行被复制到指定RAM空间中的Flash驱动程序,擦除并烧写应用程序Flash数据。
应用程序数据下载并烧写完成后,对数据进行校验,校验通过后,在数据Flash中存储“应用程
序有效标志”
- 3 编程后
→11 01 硬件复位
→28 00 01 使能通讯 功能寻址
→85 01 使能DTC 功能寻址
在“编程后”阶段,首先进入扩展会话模式,然后通过功能寻址的UDS服务恢复各个节点的
应用报文发送、网络管理报文发送,然后恢复各个节点的DTC检测
- Boot 前的准备 ---- MCU中具体的处理
接收到10 02 进入编程会话
MCU 关闭外狗(防止单片机重启),在RAM的固定地址写 bootflag=1;
MCU 关闭所有中断,
MCU 重启(可以门狗复位,但看门狗复位 RAM是没有擦除的)
-----------------------------------------------------------------------------------------
MCU 重启后 ----- main函数,3种情况
1> 进入Bootloader程序
if bootflag == 1 外部请求进入Boot段,响应 10 02 的报文
g_u8StayInBootFlag = (*(__far uint8_t*)(0xffe19)); // 读取RAM中的值
if(g_u8StayInBootFlag == PROGRAM_REQUESTED_FLAG)
{DiagnosticInit();Diagnostic_1002_Response();BootLoaderLoop();
}
Boot完成后, 在Flash中写 AA 55 AA 55 说明擦写成功 写bootflag =0;
2> Bootloader 擦写不成功
若 读取固定地址 ROM数据,若没有 AA 55 AA 55 ,证明APP段刷写不成功,需要重新刷写
EEProm_Read(APP_VALID_ADDRESS, FLAG_SIZE, AppValid);
if(AppValid != APP_VALID)
{DiagnosticInit();BootLoaderLoop();
}
3> Bootloader 成功
if bootflag == 0 ,直接跳到APP段,执行程序
JumpAppFunc = *((void(*)(void))(0X04000));//程序跳到4000的位置
汽车Bootloader流程相关推荐
- NGK与Captain technology合作 推出贷款体验用于简化汽车经销商流程
据外媒报导,近日,NGK.IO正在与Captain technology恰谈合作事宜,以简化购车体验,包括简化购车流程.NGK的CTO Stephen Litan表示:"NGK宣布与Capt ...
- 关于ST公司的BootLoader流程的总结
最近在公司处理关于BootLoader的一些升级细节,使用了一个星期左右,使用了官方的flash down load的软件. 当时看了A2602和AN3155有关于botlooder的描述,但是在编程 ...
- mfc上位机网络接收图片并显示_基于UDS on CAN的BootLoader上位机
该上位机目前已经进行过单件.台架和实车的多轮测试验证,稳定运行,有需要的同仁可以加微信:ys15528121925. BootLoader简介 在汽车行业,bootloader用来给汽车ECU升级程序 ...
- 浅谈基于UDS的ECU刷写方案(Bootloader刷新)
好长时间没有站在代码开发的第一线了,最近独立搞了一个工程,感觉技术工程师附体,恢复了往日对技术的热情. 在软件定义汽车的时代,ECU软件的更新非常重要.这样就要求ECU具备BootLoader功能. ...
- eplan如何导入access_EPLAN如何助力汽车行业的智能制造转型?
本文从汽车行业智能制造建设需求出发,结合EPLAN服务全球汽车行业企业实现智能制造的最佳实践,介绍了EPLAN在汽车行业智能制造建设过程中所能提供的完整.成熟的电气设计解决方案. 作者:Eplan 王 ...
- android 恢复出厂设置代码流程(Good!)
android的恢复出厂设置 文章问多一般都是从完整的recover mode讲起,恢复出厂设置只是 recovery mode下一个小部分. recovery mode流程分析的文章很多,比较完整的 ...
- STM32的BootLoader 从SD卡更新固件
目 录 1. 前言 2. 初识BootLoader 2.1 百度百科的BootLoader 2.2 BootLoader的简单理解 2.3 BootLoader的作用 ...
- 共享汽车一种新型的交通方式
随着社会经济的发展,我国人民的消费思想也在发生着改变,目前买车的人越来越多.但随着我国汽车销量的上涨,汽车保有量的不断上涨,特别是在一线城市,汽车使用成本越来越高,加上停车难.政府出台的限行政策.交通 ...
- Android factory reset 流程
http://blog.csdn.net/yahoozhuo/article/details/6403140 ===== 应用流程 ===== ====>frameworks/base/serv ...
- Unity和Autodesk:通过更高效的工作流程提供沉浸式体验
If you're creating real-time 3D experiences with Unity and Autodesk products, here's some great news ...
最新文章
- vuecli3的svgicon_vue-cli3引入svg图标全过程以及遇到的坑
- python——函数 11、命名空间
- LeetCode 2110. 股票平滑下跌阶段的数目(滑动窗口)
- Good Bye 2021: 2022 is NEAR A-Integer Diversity(水题)
- Suse11开启SSH密码登录
- 微信小程序添加icon图标教程
- 测试面试/笔试题 大集合
- regester正则用法_Regester(正则表达式测试器)
- mapper扫描问题(Invalid bound statement (not found))
- Excel VBA批注
- android客户端同php服务端进行XML/JSON通信
- null和undefined的区别
- 关于中小学编程教育的一些看法
- 软件智能:aaas系统 基于本体论的AI通用框架
- mybatis入门笔记(一)
- 区块链技术将引爆金融深层价值|筱静观察2019第7期
- oracle的固定值
- python--pyecharts地图、地图标记可视化实现《四》--地图可视化[视觉盛宴]
- c语言黑白棋程序设计报告,C语言游戏编程 黑白棋游戏
- 万向节死锁的简易理解