本文属于ADAS控制器开发系列。以智能前视摄像头模块为基础。

前言

引导加载程序,即Bootloader(简称BL),是ECU的基本模块,实现方式也很多。

本文介绍的Bootloader刷写功能的下载协议是通过UDS诊断服务实现的。

一、Bootloader简介:

Boot Loader在嵌入式系统里,一般分为两部分:PBL(Primary Bootloader,第一引导加载程序)和SBL(Second Bootloader,第二引导加载程序)。

PBL一般固化在程序Flash存储空间中,地址一般在CodeFlash(类似于PC程序或手机APP程序中的代码区)的最开始位置,例如0x0000到0x7FFF。FBL本身一般无法通过车辆CAN网络进行刷写。需要刷写FBL一般有两种方式:1.将ECU拆开,利用ECU刷写夹具进行刷写(如图1)。2. 利用CCP或XCP协议,通过SBL来刷写PBL。

PBL中一般会存储重置(reset)和中断(interrupt)的向量地址。换句话说,PBL中唯一的中断处理任务就是reset。PBL一般只用来引导SBL加载到RAM中,真正刷写任务是由SBL完成的,在内存中keep alive的SBL,还可以反过来刷写PBL。

图1 ECU刷写夹具

SBL一般存在于RAM(内存)中,一般是由PBL将SBL代码加载到RAM中,每次使用过后会从RAM中删除。SBL可以认为是PBL的超集。大部分Bootloader既有PBL,也有SBL。SBL可以刷写CodeFlash和外挂Flash等等。但是有些要求较低的OEM,也会允许只有PBL的情况。下文以只有PBL为例,进行简单说明:

2. FBL的入口:

产品正常情况下,是运行在APP模式中的;想要进入Bootloader模式中,必须要Reset后才能进入。在Bootloader刷写完程序后,需要自行退出Bootloader模式,并触发Reset后,再次进入APP模式中。

Reset有Hard Reset(硬重启)和Soft Reset(软重启)之分,一般情况下,我们要求进入Bootloader模式中的重启必须是硬重启。除非OEM主机厂要求支持软重启。

PBL使用UDS服务实现的,因此在BL模式中需要支持的UDS服务展示如下:

3. BL模式需要支持的一些DID汇总

a. 判断目前ECU在哪个模式下运行的DID,例如是在APP模式,还是BL模式;

b. 计数刷写成功次数的DID,且在APP模式下,只能读;在BL模式下,能读能写;

c. 计数尝试刷写次数的DID,且在APP模式下只能读;在BL模式下,能读能写;

d. CRC计算的起始地址的DID,可读可写;

e. CRC计算大小的DID,可读可写;

f. 最大允许刷写时间的DID,可以通过配置模块来更改数值,如果超过时间还没刷写完成,就强制退出,刷写失败;如果设置为0,相当于不限制刷写时间。

4. BL模式需要支持的一些RID汇总

在BL进行刷写过程中,需要调用几种Routine Control UDS服务,

a. 擦除Flash存储空间的RID;该RID只能用于BL模式;

b. 检查刷写相关项,若只有单一应用软件镜像在使用,则总是返回ture;只允许在BL模式中运行;

c. 检查刷写前置条件的RID,用于实施刷写前,检查外部环境条件是否满足要求;只允许在APP模式下运行,检查通过,就会Reset ECU,进入BL模式;

d. 检查Flash驱动内部锁完整性的RID,用于检查Flash驱动加载到RAM后,是否无效;只允许在BL模式中运行;

e. 检查应用软件数据有效性的RID,用于检查应用程序在加载到ECU的flash后,程序和数据影像是否有效;只能在BL模式中运行;

f. 保持Bootloader始终在BL模式,尽管有效的应用程序已经找到;只能在BL模式运行。

二、Bootloader程序一般刷写流程(基于PBL):

cwyw不是有效的加载项_ADAS/AD开发09 - UDS与引导加载程序相关推荐

  1. 为此计算机所有用户安装加载项,此网站需要运行以下加载项……如果您信任该网站和该加载项并允许运行该加载项...

    什么是浏览器加载项 加载项是指为浏览器添加扩展功能的特殊软件.提到加载项一般涉及插件.扩展组件.工具栏等,通常是由非微软的第三方厂商编写.有些加载项可以在浏览器中直观地看见.有些则以静默的方式运行于后 ...

  2. Excel催化剂开源第3波-修复ExcelCom加载项失效问题及WPS可调用Com加载项的方法

    为了还原一个干净无侵扰的网络世界,本文将不进行大规模地分发,若您觉得此文有用,不妨小范围地分享到真正有需要的人手中 功能概述 修复ExcelCom加载项常见问题,如每次需重新勾选COM加载项或COM加 ...

  3. unity 通过resouce加载图片_Unity游戏开发笔记-资源管理之资源加载

    资源加载是游戏中非常重要也非常繁琐的的一部分,不合理的资源管理,必定回给游戏的内存带来非常大的压力,尤其是一些重度游戏,不但资源特别多,引用关系特别复杂.维护一个不会内存泄漏而且加载效率高的资源加载框 ...

  4. 关闭打开Excel弹出要安装“Microsoft.VisualStudio.QualityTools.LoadTestExcelAddIn.vsto”加载项

    每次打开时都弹出如下提示加载项,关闭方法如下:        文件>>选项>>加载项>>COM加载项>>转到,找到对应的加载项(位置处显示的路径和提示的 ...

  5. python加载项向导_什么是 Python 加载项?

    加载项是一种自定义项,它可以插入到 ArcGIS for Desktop 应用程序(即 ArcMap.ArcCatalog.ArcGlobe 和 ArcScene)中以便提供补充功能以完成自定义任务, ...

  6. 利用Office加载项进行持久化控制的6种姿势

    本文讲的是利用Office加载项进行持久化控制的6种姿势,现在,几乎所有用户都会使用Microsoft Office,它的普及率这么高,以至于攻击者经常会用它来实施大规模攻击. 本文就将为大家介绍通过 ...

  7. WPS加载项系列(3)WPS项目部署

    一.部署方式 wps加载项目有两种部署模式,publish模式和jsplugins.xml模式,可以参考实际情况自己选择部署模式. 二.publish模式 1. 原理 通过访问 publish自动安装 ...

  8. vb wps 链接单元格_使用VB快速制作WPS的COM加载项

    使用VB快速制作WPS的COM加载项 2018-09-14 1.新建工程,选择ActiveX Dll. 2.工程.引用.选择Kingsoft Add-In Designer.Kingsoft Offi ...

  9. 管理 Office com 加载项

    1. 启动 Office 产品 (Word, Excel, Outlook ...). 2. 在"工具"菜单上,单击"选项". 3. 在"其他&quo ...

最新文章

  1. java两个线程同时运行_java如何几乎同时结束两个线程
  2. k8s master节点参与调度(去除NoSchedule污点)
  3. Git 下载很慢问题解决方案
  4. Python 线程队列 LifoQueue – LIFO - Python零基础入门教程
  5. sql decimal 转string_音频怎么转文字?这个软件带你体验飞一般的感觉
  6. 大数据_Flink_流式处理_简介_Flink的特点---Flink工作笔记0006
  7. 数据库不可重复读和幻读的区别
  8. 推荐一款ORM工具 FOR ADOBE AIR
  9. 使用Photoshop+960 Grid System模板进行网页设计
  10. 关于Chrome浏览器(Chrome Stable、 Chrome Canary 、Chromium)
  11. STC15F2K60S2单片机笔记
  12. 中国十大芯片企业排名
  13. POJ 1035 拼写检查
  14. 英文版的pdf文件怎么翻译成中文-免费的自动翻译器
  15. Adobe After Effect的 安装 教程
  16. 获取的字段值是空值或者为null,而你自己的需求就是想要获取的字段为一个 * 默认的值
  17. 小程序传值对象数值到另一个页面大小限制
  18. c语言数字转化为字母表,c语言字符串 数字转换函数大全
  19. Java将数字金额转为大写
  20. Google搜索引擎原理

热门文章

  1. Android开发学习之TabView选项卡具体解释 -- 基于Android4.4
  2. 每个开发者都应该懂一点单元测试
  3. 服务器屏蔽非法app请求
  4. 迭代式客户端-服务系模型
  5. 传智播客 Html基础知识学习笔记
  6. hdu 2034 - 集合操作
  7. ubuntu chmsee出现乱码的解决方法
  8. CLR via C# 3 读书笔记(4):第1章 CLR执行模型 — 1.4 执行程序集代码
  9. 《江南》、乌镇、《似水年华》
  10. Flutter 底部弹框 showModalBottomSheet 使用Demo