UDS的CAN刷新软件

http://www.gzweix.com/article/sort0253/sort0487/info-260414_3.html

1. UDS相关服务

ISO 14229用于刷新方面的主要诊断服务见表1。

根据ISO 14229协议的诊断服务及ISO 15765-3的通信建议, 刷新通信主要分为3个部分: 刷新前准备工作, 刷新过程, 刷新后的处理过程。 刷新前准备工作和刷新后的处理过程在application软件中,而刷新过程在bootloader中。 刷新的主导过程由上位机根据ISO 14229及ISO 15765标准中规定的流程来进行, 相关通信服务在下文中详细说明。

2. 软件内存映射及跳转

2.1 内存映射

智能前照灯软件设计中, 控制器软件分为两个独立的软件, 即为两个独立的软件部分, 主要为bootloader software启动加载软件 (内含启动加载和刷新功能, 一般简称bootloader软件) 和applicationsoftware应用软件 (也即应用软件 , 简称application软件)。 两个软件之间相互独立, 从软件内容和功能方面来说, bootloader软件主要用于刷新的主流程以及系统总体的启动加载功能, 而application软件侧重于智能前照灯的策略和系统运行, 以及故障诊断和刷新前准备、 刷新后系统恢复工作。 从刷新服务来说, bootloader软件主要使用刷新相关及最为紧要的下载服务, 而应用软件服务大多为准备工作服务。 从CAN驱动以及CAN诊断传输层来说, 两个软件可以共享驱动, 也可以各自设置各自的驱动。

图1为智能前照灯的内存映射 (memory map)及中断跳转 (ISR Jump) 图。 图1中智能前照灯控制器flash内存映射含有两个独立的存储区域, 即bootloader软件区域 (灰色阴影) 和应用软件区域,分别用于存放两个独立的软件。

2.2 软件跳转

两个软件主要通过诊断服务进行跳转, 在设计的软件中通过函数指针来进行跳转。 对于智能前照灯的中断来说, 其跳转如图1所示。 Jump_1为appli-cation软件收到诊断仪器命令后跳入bootloader软件进行刷新的跳转。 Jump_2为bootloader软件复位检查效验区后, 当效验成功也即application应用软件正确后, 跳转到application区域运行。 Jump_3为bootload-er软件进行刷新完毕后复位中断的跳转过程。

3. application中刷新准备的设计

刷新前的准备工作主要用于刷新的各种数据读取和验证, 安全检查工作和各种条件使能工作。 刷新准备工作流程如图2所示, 主要过程为, 用读取诊断信息服务0x22读取当前软件版本和主要信息; 用开始诊断会话服务0x10切换当前诊断模式到扩展模式; 用故障码设置服务0x85禁止设置DTC以便于刷新; 用通信控制服务0x28禁止当前网络管理及通信信息, 以便于刷新可以获得最大的流量, 以及阻止其他网络信号的干扰, 保证刷新的顺利进行。 之后用软件控制服务进行刷新前的条件检查, 如电源电压、 数据和软件稳定等检查。

4. 启动加载设计

bootloader软件有两大功能: 启动加载跳转功能和刷新功能。一般启动加载安排在bootloader软件的死循环前面, 用于上电自启, 并检查应用软件是否正确与完备。 如果应用软件效验成功, 则跳入应用软件区域; 否则留在bootloader中, 等待软件刷新。 boot-loader启动加载流程如图3所示。

bootloader跳入application软件中主要跳转语句如下, 主要用了函数指针功能: if (temp_checksum== CHECK_CRC_16) ((void (code *) (void)) APP_START_ADD) ()。上述C语句中, CHECK_CRC_16值即为magicword效验值 (magic word效验区的映射见图1), 当计算得到的temp_checksum和magic word保持一致,即 可 跳 入 application 软 件 。 APP_START_ADD 为application入口地址, 在应用软件的内存映射入口处。

5 bootloader中刷新部分设计

bootloader 中含有刷新主体部分诊断服务的设计。 而application软件含有刷新准备部分的诊断软件设计。bootloader是一个完整的软件, 它用CAN进行刷新, 底层驱动包括CAN驱动的接收和发送部分, 并含有传输层数据处理部分。 如何处理传输层一直是诊断设计的重点。 本设计中主要采用switch case的分支处理方法来进行传输层的处理, 处理完毕后即可进入诊断服务的通信。 如图4所示, 当收到CAN信息时首先判断信息ID是否为需要ID, 然后对数据进 行 接 收 , 接 收 的 同 时 根 据 ISO 14229 及 ISO15765-2标准对传输层进行处理, 尤其是多帧的处理和管理。

6. bootloaer中刷新通信主要流程

刷新的主要流程如图5所示。 本流程图中, 用开始诊断会话服务切换到刷新模式, 也即从appli-cation软件跳入bootloader软件 ; 用安全加密及算法服务来进行控制器的解密; 用软件控制服务对待更新软件进行存储区域擦除, 之后进入刷新的数据传递过程。 数据传递采用块、 包的形式, 对数据进行整体打包发送, 当本包完成时继续进行下一个包的传递。 主要用请求下载服务, 服务中含有待更新软件的首地址和传输字节数; 传递数据服务含有控制器和诊断设备之间的数据传递; 请求传递数据退出服务, 本服务用于对每块进行效验和的效验, 检查通过后才可以进行下一个数据包的传递。 这3个服务不断地循环进行, 把各个数据块给刷入。 全部数据刷入后, 用软件控制服务对所有的软件区进行CRC_16效验。

7. 刷新后的处理工作

最简单直接的方法为控制器复位。 对于非动力方面的控制器, 在不需要进行写数据如VIN等信息的时候, 可以直接复位, 并建议钥匙断电并重新打到IGN ON , 恢复CAN网络上所有控制器模块的网络管理信息和数据通信功能, 及各控制器故障码设置功能。

UDS的CAN刷新软件相关推荐

  1. 基于CANoe的UDS Bootloader刷写软件

    终于有时间整理下基于CANoe的UDS Bootloader,网上也看到了有其他网友分享的例子,基于OSEK_TP,在新版本的CANoe里面,已经被新的接口取代了. 本刷新软件是基于CANoe 8.5 ...

  2. 王牌流量爆刷器 流量提升工具 网站刷新 增加浏览量 王牌软件

    本软件主要功能是提供网站的快速刷新功能 由于网上所谓的刷新软件都报毒{不排除加壳误报},所以作者开发此软件,方便 大家. 最常见的,刷刷某宝的浏览量.其他用途自己发觉... 如有BUG请邮件给我 cp ...

  3. 汽车软件刷新——当前安全访问策略的缺陷及改进方案

    一.背景: 在汽车ECU软件中,如果需要依靠汽车总线(如CAN)刷新CPU里面的程序时,必须要通过安全访问,从而防止非法刷新操作危及车辆安全(例如,黑客攻击).在车联网以前,车辆总线是一个自封闭的网络 ...

  4. ECU软件UDS刷写概述

    解决故障诊断问题时,经常需要刷写软件,常用的ECU软件刷写有几种方法,包括UDS刷写,XCP刷写和调试工具Lauterbach刷写等.对于非底层软件工程师,一般只会用到前两种,更多的是UDS刷写,即通 ...

  5. UDS学习之:ISO-14229 简介

    前言 由于工作中经常用到ISO-14229,因此决定对该协议做个总体介绍和总结,既是对自己学习的总结,也能够给初次涉及该协议的朋友一个参考. 首先简要介绍什么是ISO-14229,至于可以在网上找到的 ...

  6. suse软件管理程序zypper

    zypper 是 OpenSUSE 命令行下管理软件的程序(类似于Debian/Ubuntu的apt,Fedora/CentOS中的yum),功能十分强大. 添加软件源 zyppr ar URL al ...

  7. SCCM2007 R2统计软件使用频率,SCCM系列之七

    用软件计数统计软件使用频率<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  8. Ubuntu 13.04 软件安装

    来源:http://www.cnblogs.com/vincent-hv/archive/2013/05/23/3094193.html 配置软件源 $ sudo gedit /etc/apt/sou ...

  9. 软件中Undo(撤回)和Redo(重做)的实现

    在一般软件中,都会有Undo和Redo的功能,那么这个功能该怎么实现呢?在此介绍一种实现方法.(以lua语言为例) 1. 操作事件化.将用户的操作转换成一个事件数据,里面包括事件类型.操作目标.目标原 ...

最新文章

  1. 【控制】《自动控制原理》胡寿松老师-第7章-线性离散系统的分析与校正
  2. wifi测试相关(iwconfig,WPA Supplicant用法)
  3. 设计模式之_动态代理_01
  4. 如何退出_农民退出的宅基地如何利用?农村宅基地征收如何补偿?
  5. git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.
  6. php统计在线时长,js统计网站运行时长
  7. 有线网卡驱动_WDS如何为boot.wim或install.wim添加驱动
  8. Python练习:快乐的数字
  9. Django讲课笔记04:Django项目的调试
  10. 联想打印机 linux驱动怎么安装步骤,如何在MAC系统下安装打印机驱动
  11. Mac NVM 配置
  12. linux 单机跨进程通信
  13. SDN(软件定义网络)详解
  14. 联想拯救者y7学计算机可以用吗,2018什么笔记本电脑好 联想拯救者y7000评测
  15. 【侯捷】C++内存管理机制
  16. 前端 psd切片生成html.css,1个将PSD网页模板切片输出为DIV+CSS架构网页教程
  17. 邯郸php,邯郸php程序员培训,邯郸php程序员培训费用,邯郸php程序员培训完工作好找吗...
  18. CocosCreator 2.4.1版本 打包微信抖音小游戏CDN配置问题
  19. 网卡的TSO卸载功能
  20. 图灵停机问题(The Halting Problem)

热门文章

  1. Android毕业设计_基于Android的移动学习平台设计
  2. AI数据分析创企ActionIQ获1300万美元A轮融资,红杉领投
  3. 如何发布开源库到jcenter
  4. 西电上机题——P385-报数游戏
  5. 中国保险业在后金融危机时代的监管思路
  6. 机械专业中计算机的应用情况,CAD技术在机械工程设计中的应用
  7. matlab lmtool,借用许可证 - MATLAB Simulink - MathWorks 中国
  8. 韩顺平php可爱屋源码_韩顺平_php从入门到精通_视频教程_第20讲_仿sohu主页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理...
  9. python编程培训多少钱-python编程语言学费多少钱?python培训费用贵吗
  10. 深入浅出工控机防病毒安全现状