汽车电子学习笔记---基于UDS的Bootloader

汽车电子学习笔记—基于UDS的Bootloader

Bootloader 又称引导加载程序,是系统上电之后运行的第一段代码,其主要用于软件更新。在每次上电/复位后,ECU首先执行Bootloader代码,Bootloader会执行一些基本的初始化,然后再检查刷新请求标志位是否为有效,如果刷新请求标志位有效,则停留在bootloader模式中进行软件升级操作。如果当前没有刷新请求,即刷新请求标志位为无效,则检查应用软件的状态。如果应用软件是有效的,则执行APP应用程序代码,如果应用软件无效,则继续执行Bootloader代码,停留在Bootloader模式中。
在这里插入图片描述

Bootloader与App关系:
1)Bootloader和App分别是两个完整的MCU软件工程,各自都由自己的启动代码、main()函数、链接文件、外设驱动程序和中断向量表。
2)bootloader和App NvM的地址空间分配必须分开独立,不能重叠。
3)bootloader必须使用MCU默认的中断向量表,因为每次复位后MCU都是从其默认中断向量表的复位向量取地址执行的;应用程序的中断向量必须进行偏移。
在这里插入图片描述

Bootloader 需支持功能点:
1、通信
与上位机下载端建立可靠的总线通信以获取要更新应用程序:CAN驱动,CAN Driver模块实现CAN报文的收发。
2、Flash Driver
用于操作Flash的擦除、写入和读取功能。主要包括Flash硬件初始化,Flash block块的读写操作及擦除功能。基于软件运行安全性考虑,Flash diver一般不会存在放在flash中,避免正常程序在发生错误时可能的非法修改。在需要执行应用程序或应用数据需要时,首先将Flash diver下载至ram中,然后执行相应的更新。
3、协议
1)传输协议:ISO 15765-2,
传输层主要是提供数据的组包和拆包功能服务,能够实现报文的分段传输及数据传输过程中的错误检测和超时处理。
2)UDS协议:ISO 14229-1,协议中定义的Bootloader程序刷写流程,包括:诊断会话切换、安全状态切换、标识符读写、程序刷写和ECU复位等。
在这里插入图片描述

4、Watch Dog
监控Bootloader超时或者死机,对ECU复位。
5、NvM驱动
包括对NvM的读写操作支持。

Bootloader升级过程:
ISO 14229-1 规范中定义编程升级阶段分为两个阶段:
1)Programming phase #1 — download of application software and/or application data
2)Programming phase #2 — Server configuration (optional)
而Programming phase #1又细分为两个阶段:Optional Pre-Programming step — Setup of vehicle network for programming(预编程阶段)和 Server Programming step — Download of application software and application data(主编程阶段)

预编程阶段:
在这里插入图片描述

1、进入extendedDiagnosticSession扩展会话模式:$10 03
2、一般接着会执行31服务,对刷写条件进行检查,例如低压电是否在正常范围内,档位是否为P档,车速是否为零等;(此部可选)
3、关闭DTC:$85 02,为了防止刷写过程中其他ECU节点误触发DTC,通过85服务关闭所有DTC。
4、禁止非诊断报文的发送和接收:$28 03 03,为了提高刷写速度,降低刷写程序时总线负载率,通过28服务关闭无关报文,比如应用报文和网络管理报文;
5、设置波特率:$87 01,为了减少刷写的时间,可以通过87服务提高CAN总线的波特率。

主编程阶段:
在这里插入图片描述

1、进入编程会话模式:$10 02
2、安全访问检查:$27 XX,进行安全解锁,确保只有合法的诊断仪能对ECU进行下载操作。
3、写入数据:$2E XX,将指纹信息和软件刷新日期写入到ECU中。
4、擦除Memory:$31 01,启动31例程控制服务,执行擦除ECU内存。
5、下载数据:请求下载($34)、传输数据($36)、请求退出传输($37),应用软件或者数据的每一个连续的数据块下载都遵循请求下载->传输数据->请求退出的顺序,单个应用软件或数据块可能需要多个数据传输($36)请求报文来完成传输。
6、检查一致性和数据完整性:$31,执行31服务检查逻辑块的完整性和一致性。
7、若有更多块需要下载,重新执行31(擦除内存)再执行34-36-37-31(校验)服务。
8、复位:$11 01,通过ECU复位服务请求将使ECU结束重编程过程,返回到正常的操作模式。

后编程阶段-Programming phase #2
1、10服务切换到03扩展会话。
2、执行28服务和85服务,使能非诊断报文和DTC。这是对整车网络进行操作的,一般都是以功能寻址的方式来发送。注意先执行28,后执行85,避免DTC误报。
3、清除诊断信息:$14 FF FF FF。
4、10服务切换到01默认会话模式或者11 01 执行服务。
在这里插入图片描述
在这里插入图片描述

  • 12
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uds-server是一种基于Unix域套接字的服务器,用于实现进程间通信。Unix域套接字是一种在同一台主机上的进程间进行通信的机制,相比于网络套接字具有更高的效率和安全性。 uds-server可以充当服务器角色,接收客户端的连接请求,并处理客户端发来的数据。它可以用于实现各种不同的功能,例如文件传输、共享内存、管道等。通过uds-server,不同的进程可以在同一台机器上进行有效的数据交换,提高了程序的灵活性和性能。 uds-server的工作方式包括以下几个步骤。首先,uds-server需要创建一个Unix域套接字,以便客户端可以通过该套接字与之建立连接。然后,uds-server会监听该套接字,等待客户端的连接请求。一旦有客户端请求连接,uds-server就会接受该连接,并创建一个新的套接字,用于与该客户端进行通信。 接下来,uds-server可以根据具体的需求,对客户端发送过来的数据进行处理。例如,可以将客户端发送的数据写入文件,或者进行一些计算操作。在完成后,uds-server可以将处理结果发送给客户端。 uds-server的优点在于它能够在同一台主机上进行进程间通信,不需要经过网络传输,因此速度更快、效率更高。另外,由于使用Unix域套接字进行通信,所以通信过程更加安全可靠。 总而言之,uds-server是一种基于Unix域套接字的服务器,可以在同一台主机上实现进程间的高效通信。它的应用范围广泛,可以满足不同的需求,并提供更快速和安全的数据交换解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值