该上位机目前已经进行过单件、台架和实车的多轮测试验证,稳定运行,有需要的同仁可以加微信:ys15528121925。

BootLoader简介

在汽车行业,bootloader用来给汽车ECU升级程序,在整车电子电器架构中,所有的控制器都是连接在CAN总线上的,控制器之间通过CAN报文进行信息的交互,而BootLoader正是通过传输一组特定的CAN总线报文,将程序更新到ECU里面,这组特定的CAN总线报文以ISO14229和ISO15765为基础,在加上主机厂自定义的一些内容,构成了这组特殊的报文。

BootLoader流程

ECU在上电或复位后,会首先执行 Bootloader 代码。Bootloader 首先执行一些基本的初始化,然后检查外部重编程请求标志位是否为有效,如果重编程请求标志位为有效,即使应用程序是有效的,Bootloader 也会继续运行。如果当前没有重编程请求,即重编程请求标志位为无效,则检查应用软件的状态:如果应用程序是有效的,则应用程序代码将被执行;如果应用程序是无效的,则继续执行 Bootloader 代码。

重编程分为三个编程阶段,预编程阶段、主编程阶段、后编程阶段。

预编程阶段用来为要下载的 ECU 做重编程前的 CAN 网络准备,此阶段的请求报文采用的是物理寻址和功能寻址。流程见图1,此阶段的主要步骤如下:

(A) 诊断会话控制10 03:使ECU首先进入扩展会话模式。

(B) 例程控制--检查编程预条件31 01 AF 01:通过此例程来检查 ECU 编程条件,从而确保系统安全,如果有任何不安全的因素,ECU 应该拒绝编程,一般来说,ECU回复05 71 01 xx xx 00就表示编程条件通过。

(C) 控制 DTC 设置85 82:诊断工具通过功能寻址发送该请求给同一网段所有的 ECU,将 DTC 设置为关闭,确保在刷写过程中,ECU不再记录故障码。

(D) 通信控制28 83:诊断工具通过通信控制服务请求,禁止非诊断报文的发送和接收,以降低总线负载率,确保刷写流程的正常进行。

图1 预编程流程

主编程阶段是对单个 ECU 进行编程,用来将需要更新的软件传输到ECU内部存储器,如图2所示,此阶段的请求都使用物理寻址,主要步骤如下:

(A) 诊断会话控制 10 02:使ECU进入编程会话模式。

(B) 安全访问 27 01和27 02:编程前必须通过安全访问,确保只有合法的诊断工具才能对 ECU 进行编程操作。

(C) 驱动下载 34和36:当 ECU 的ROM中没有FlashDriver时,将执行FlashDriver的下载,FlashDriver用来对ECU的ROM空间进行擦除。

(D) 写入指纹数据:在擦除内存之前,首先将指纹数据写到 ECU 内存中。指纹数据标识了是哪个诊断工具对 ECU 内存做了修改。

(E) 例程控制--擦除内存:为保证应用软件和数据能够正常下载,需要擦除ECU 的内存,通过例程控制服务来执行擦除内存,同时应用软件的标志位将被置为无效。

(F) 下载过程:将应用软件或者数据的每一个数据块下载到 ECU 的ROM中,首先执行请求下载的命令,告知ECU将要下载的数据地址和长度,然后使用数据传输服务,传输下载的数据,最后,使用结束传输命令结束数据传输过程。

(G) 例程控制--检查编程完整性:所有的数据传输完成后,此例程用CRC32校验算法来校验传输数据的完整性。

(H) 例程控制--检查编程依赖性:当完成所有的应用软件或数据的下载后,诊断工具启动一个例程来触发 ECU 检查重编程的依赖性,以确保所有逻辑块的兼容性和一致性。

图2 主编程流程

后编程阶段主要是用来重启ECU,恢复总线通信和故障码记录,此阶段的请求报文采用

的是物理寻址和功能寻址,流程如图3所示。

(A) ECU复位11 01:通过请求ECU 复位服务使 ECU 结束重编程过程,并返回到正常的工作模式。

(B) 诊断会话控制10 03:将ECU的会话模式切换到扩展会话模式。

(C) 控制 DTC 设置85 81:诊断工具通过将 DTC 设置类型设为开启,使能所有的ECU重新开始记录故障码。

(D) 通信控制28 80:诊断工具通过通信控制服务请求,启动所有ECU的非诊断报文的发送和接收,以恢复正常总线通讯。

图3 后编程流程

上位机软件开发

上位机软件在Visual Studio 2015平台,使用C#语言开发,采用分层的设计方法,将软件分为应用层、中间层和驱动层,使得软件具有清晰的层次结构,如图4所示,同时集成了Kvaser、USBCAN、Vector1600和ValueCAN4的硬件驱动,实现了对多种总线设备的支持,同时预留API接口,使得上位机能够扩展,从而支持更多的设备,并且能够设置波特率,支持两路软件通道,大大增加其使用范围。

图4 软件刷写流程

上位机可以支持S19、Hex和Bin类型的文件刷写,通过对这些文件的解析,将地址连续的数据构造成一个数据块对象,保存文件中各段数据的起始地址、数据长度和数据内容,再将所有的数据块按地址排序,构造一个数据块列表。利用34h请求传输服务,将数据的地址和长度发送给ECU,然后用36h数据传输服务将数据传输到ECU中,每块数据传输完后,用37h请求传输退出服务来结束本块数据的传输,数据传输流程如图6所示。

图5 数据传输过程

总结

该上位机集成Kvaser、USBCAN、Vector VN1600和ValueCAN4等设备的驱动程序,支持多种CAN总线接收设备,具有很强的通用性,同时遵循标准的UDS协议,网络层利用ISO 15765-2进行数据传输,应用层使用ISO 15765-3定义的服务,从而能够对各类ECU进行软件更新。

mfc上位机网络接收图片并显示_基于UDS on CAN的BootLoader上位机相关推荐

  1. mfc上位机网络接收图片并显示_工控机上位机软件的开发历程

    微信号 :thinger_swj微博:@新阁程序园扫码关注 上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚开始使用的是组态软件(用以显示流程图),然后再开发了报表软件. ...

  2. android网络下载图片并且显示在图库中

    1:网络下载图片 主要是练习网络编程,获取网络数据.不能使用网络资源的软件是很难有长足的发展和进步的,个人觉得,所以最近在学习网络相关的编程.这里就把我做的demo发在这里,同时我也梳理一下知识点.废 ...

  3. html画布图片不显示_如何在HTML5画布上显示图像

    html画布图片不显示 by Nash Vail 由Nash Vail Ok, so here's a question: "Why do we need an article for th ...

  4. vue base64图片不显示_技巧 | word中插入的图片显示不完整怎么办?

    已经好久没有更新了,都快忘记有这个公众号存在了~ 这几个月发生了很多事情,工作上的任务也迟迟没有减轻,之前保持的日记也已经很久没有写了.但是觉得要是没有什么用什么方式将脑袋中时不时飘过的念头记录下来的 ...

  5. rs485与modbus流程图_基于Modbus协议的RS485总线通讯机设计原理及应用

    摘要:该文详细论述了基于Modbus协议的RS485总线通讯机设计原理及应用.物理结构上包括上位机.主站.和多个从站节点.在上位机与各从站节点间增加主站,承担上位机的轮询工作,使上位机从繁忙的通信工作 ...

  6. 小程序真机预览图片不显示

    在微信开发者工具当中可以显示,在手机无法显示, 问题:static的图片文件路径当中不能携带中文 解决方案:去掉中文

  7. android加载网络gif图片不显示不出来的,android显示网络gif图片

    这功能源自负责app中要加一个显示gif广告图功能. android自带控件不支持gif图片,网上很多通过扩展ImageView或View来实现支持gif图片,但在android4.0后,需要关闭硬件 ...

  8. wkwebview加载h5图片不显示_埋点 13 :App 与 H5 打通

    1.原理概述 iOS 混合开发越来越流行,App 与 H5 的打通需求,也越来越迫切! 那什么是 App 与 H5 打通呢? 所谓打通,是指 H5 集成 JavaScript 数据采集 SDK 后,H ...

  9. java 浏览器访问图片不显示_[Java教程]重新上传图片后 地址不变 浏览器加载不到的问题...

    [Java教程]重新上传图片后 地址不变 浏览器加载不到的问题 0 2016-05-27 07:00:50 做项目的时候遇到一个问题: 上传文件以后,相同的地址,第一次加载没有问题,当你操作次数过快, ...

最新文章

  1. 解决用C#在visual studio编程中,console一闪而过
  2. Resources$NotFoundException Resource is not a Drawable (color or path) 问题解决
  3. CODE[VS] 2824 盗窃-大海的奇迹
  4. Python isdigit() isalnum()
  5. 专注是最好的修行,一个80后IT从业者14年的成长与感悟
  6. session的创建方式
  7. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 130: invalid continuat
  8. 资源 | 有了这些字体,你的设计也立即“高大上”起来。
  9. 用电脑上的计算器计算反三角函数
  10. 单片机炫彩灯实训报告_单片机实验报告一-流水灯实验
  11. ZigBee模块——从新冠、癌症防治看物联网智慧医疗的应用
  12. 以色列宣布启动“创世纪2”号登月计划;我国粮食生产实现“十七连丰”丨科技新闻...
  13. Linux 快速搭建免费邮件服务器
  14. Map Coloring
  15. 服务器如何装系统和数据库,中软系统服务器及数据库安装规范(含维护).pdf
  16. 有高度的数据分析,这样做
  17. XiunoBBS ax_date 插件 日期显示不正确 修复
  18. OpenCV常用函数极简简介
  19. Android录制桌面视频screenrecord
  20. docker images 保存导入导出、容器导入导出

热门文章

  1. 腾讯云-视频直播(android集成)
  2. 人,羊,狼,菜过河问题的计算机编程实现的matlab程序,人狼羊菜渡河问题(含Matlab程序)...
  3. 编译原理复习四:编译器结构 消除左递归、左公因子 最右推导 寻找句柄讲解(附题目和答案)
  4. 在python中使用matplotlib画简单折线图
  5. GeographicLib安装
  6. 网站备案 服务器不在一个地方,域名和服务器不在一个 如何备案
  7. 软件的生命周期SDLC
  8. 机器学习——聚类分析
  9. 【无标题】虚拟机上火狐浏览器无法访问百度 怎么破?
  10. xc7z030有多少个quad_XC7Z030-2FBG676I;XCZ7030-2FFG676I ZYNQ7系列专营