1、简介
flexcan ota 是由灵动提供的一种基于 uds 协议使用 can 总线实现对 mcu 的 app 固件更新的解决方案。该解决方案的软件部分主要由:bootloader、app和pc tool三部分构成,硬件部分如图 1 所示。
图 1 mcu 与 pc 机交互示意图
1.1 关键特性
基于 uds(iso14229) 标准
基于 can(iso11891-1) 标准
具备对 app 固件 crc 完整性校验功能
使用主机上传 flash driver 到 mcu
在 bootloader 中进行 app 有效性检查
提供用于验证 app 固件更新的 pc 端上位机工具
1.2 什么是 flexcan ?
can 是控制器域网 (controller area network, can) 的简称,是一种功能丰富的车用总线标准,被设计用于在不需要主机(host)的情况下,允许网络上的单芯片和仪器相互通信。是由研发和生产汽车电子产品著称的德国 bosch 公司开发,并最终成为国际标准(iso11898),是国际上应用最广泛的现场总线之一。
flexcan 是 can 协议的一个高完成度版本。以灵动 mm32f0140 系列 mcu 内嵌的 flexcan 为例,其符合 iso 11898-1 标准,支持 can 2.0b 版本协议,位速率高达 1 mbps,具有非常灵活的用于传输和接收的邮箱系统,可以接收和发送 11 位标识符的标准帧,也可以接收和发送 29 位标识符的扩展帧,主要被设计用作车载串行总线,可满足实时处理、车辆在电磁干扰环境下的可靠操作、成本效益、带宽等要求。
1.3 什么是 uds ?
uds(unified diagnostic services,统一诊断服务)是一种用于汽车电子控制器 ecu (electronic control units) 环境下的一种诊断通信协议,可实现诊断、固件更新、日常测试等功能,在 iso 14229 中规定了其实现标准。
在本实例中,uds 通信是在客户端-服务端关系中执行的。客户端是上位机下载软件运行于 pc 机,服务端是带有flexcan ip模块的 mm32 mcu。例如,将 can 总线接口连接到 mcu,并将 uds 请求发送到 mcu。当 mcu 支持 uds 服务时,它将根据客户端发出的请求做出相应的响应。
1.4 为什么用 bootloader ?
对于 mcu 而言,如果程序内置有基于flexcan 的 bootloader,则每次更新 mcu 的固件则不需要拆开外壳也不必再使用烧录器进行烧录,而可直接通过 can 总线来更新程序,这样更方便也更安全,而且随着智能化的普及,甚至可以对 mcu 进行远程升级。bootloader 程序结构对比如图 2 所示:
图 2 程序结构对比框图
1.5 为什么基于 uds ?
为了规范 bootloader 的全过程,通过使用成熟的平台进而提供高质量 bootloader。因 uds 在设计时考虑了 bootloader 的需求,并为 bootloader 提供了相关服务以供使用,比如诊断会话控制、ecu 重置、读取数据、请求下载、传输数据、请求传输退出等,可以实现更高效和可靠的刷写功能。故主机厂普遍会要求在 uds 规范的基础上完成 bootloader 功能。
1.6 用到了哪些 uds 服务?
在 bootloader 中,使用到 uds 的 $10、$11、$27 和 $3e 基础诊断服务,$22、$2e 读写 did 服务,$31、$34、$36 和 $37 固件数据传输相关服务。uds 服务概览如表 1-1 所示:
表 1-1
2、bootloader
bootloader 是一段允许在不使用烧录器的情况下更新app固件的代码,基于灵动 mindsdk 实现的 bootloader 样例工程支持 mdk、iar 和 armgcc 三种工具链进行开发。在实际的使用过程中只需要在第一次使用时通过烧录器将 bootloader 烧录进 mcu,后续的 app 都可以通过使用基于 can 总线的 uds协议完成固件更新。
2.1 bootloader 功能特性
支持 service 27,用户可根据自身需求添加安全访问算法。
支持 service 22 和 service 2e,用户可以根据自身需求添加策略,进行信息读出与存储。
外置 flash driver,使用时通过外部 pc 或后台将 flash driver 加载到 mcu 的 ram 中进行安全的 flash 擦写操作。
提供看门狗监控功能,用户可根据自身需求选择性开启看门狗监控程序。
2.2 客制化修改说明
修改诊断 id
可在样例工程的 board/fblhalcan.h 中修改诊断 id 的值。
指定数据填充值
当需要发送的数据长度不满足 8 字节长度时,通过宏定义可以更改填充,用户可以在样例工程的 board/fblhalcan.h 中指定填充值。
使能看门狗
用户可以在样例工程的 board/fblmacros.h 中打开宏开关 wdg_enable 使能看门狗服务,并且实现 resetwdg 操作。
安全访问算法接口
bootloader中支持 27 service,用户可在样例工程的 board/fblmacros.h 中使能宏开关 enable_security_algorithm_verification 根据自身需求添加安全访问算法。
2.3 flash driver 介绍
什么是flash driver?
在ota程序升级过程中,发送app可执行文件之前,向底层先发送一段二进制文件,这段代码实现了对mcu片内 flash 的擦写功能,称为 flash driver。
flash driver存在的意义
在车载ecu控制器中,为了安全考虑,会尽可能的避免在代码中固化有对flash进行擦写操作,主要为了避免在程序跑飞时误调用该部分代码,使软件代码部分受到破坏。
flash driver的实现方式
a. 将flash driver固化在底层flash中,在运行的时候将flash中的flash driver拷贝到ram中来运行,这是比较传统的方式,但是避免不了提到的安全性问题。
b. 将flash driver这段代码保存在pc端或后台,在每次执行ota升级前,将这段代码先发送给mcu,这样可以避免方式 a 中提到的安全性问题。
3、app
基于灵动 mindsdk 提供的 flexcan_ota_app 样例工程进行开发和生成用于更新的 hex 格式 app 固件生成,无需任何适配操作即可生成用于 ota 升级的 app 固件。
3.1 使用说明
将 bootloader 通过下载器下载到 mcu 中后,可通过提供的 pc tool 来刷写生成的固件,通过 pc tool 下载成功后,一方面 pc 终端会有下载成功提示,另一方面也可以查看开发板上对应固件实现的功能是否开始执行。
关于 app 固件可从提供的 flexcan_ota_app 样例工程编译源码并将生成“.hex”格式的 app 固件进行加载。
3.2 app 设计规范
app 与 bootloader 存放在 mcu 的同一块 flash 的两个不同区域中,为保证两个软件的正常使用,app 设计遵循表 2-1 和表 2-2 所述规范。
表 2-1
表 2-2
4、pc tool
flexcan ota pc tool 是用于验证灵动 mindsdk 中提供的 flexcan ota 解决方案的简易 pc 端上位机工具。
4.1 功能特性
支持 can 通信速率自定义
支持 win10 操作系统下运行
支持默认参数直接运行和命令行下带参数运行
支持直接加载 mdk 和 iar 工具链下生成的 hex 格式文件
基于 python 使用 python-udsoncan 开发,可根据不同需求灵活进行二次开发
4.2 开发环境
本工具在 win10 平台使用 python 进行开发,基于 uds 使用 can 协议,支持 peak can卡与 mcu 进行通讯。
4.3 使用说明
请按照如下步骤进行操作:
a、下载 bootloader 到 mcu
将提供的 flexcan_ota_bootloader 样例工程编译并下载到开发板中。
b、安装 can 卡驱动并连接 mcu
在这里我们用到的是pcan-usb,下载并安装驱动(https://peak-system.com.cn/driver/) ,并将 pcan-usb 和开发板上的 can 收发器通过双绞线连接以及通过 usb 和 pc 机连接。
c、运行 flexcan ota pc tool
方式一:按照默认参数直接运行
直接双击 flexcan_ota_pc_tool_v1.0.exe,如图 3 所示,默认将按照 500kbps 的比特率进行 can 通信,flash_driver 文件的加载地址为当前路径下的文件(./flash_driver.hex), app 文件的加载路径为当前路径下文件(./app.hex)。
图 3
方式二:按照指定参数运行
在 win10 平台下启动命令行窗口并切换到当前路径下,获取帮助如图4所示,输入如下指令并按回车键:
flexcan_ota_pc_tool_v1.0.exe -h
图 4
按照指定参数运行如图 5 所示,输入如下指令并按回车键:flexcan_ota_pc_tool_v1.0.exe -b 500000 -f ./flash_driver.hex -a ./app.hex
其中 flash_driver.hex 文件为用于安全地擦写片内 flash 的代码,在每次 ota 更新中复用即可。
图 5
d、结束
等待 flexcan ota 固件更新流程结束,并按任意按键退出。
5、注意事项
flexcan ota tool 为用于验证基于 uds 使用 can 协议进行 app 固件更新的上位机工具,pc 端使用 peak-can 与 mcu 通讯,仅支持在 win 10 操作系统下运行, 且用于功能性验证,若遇到软件闪退等问题请重启该软件并复位 mcu。该工具可根据开发者项目需求进行二次开发。
以上介绍是基于mm32f0140 系列 mcu 进行介绍和示例演示,相关源码请访问灵动官网进行获取:
01)进入灵动官网(www.mm32mcu.com)
02)打开“产品”菜单下 mm32f0140 页面,浏览“文档”列表。
03)在“应用笔记”中下载“an0035_flexcan_ota”文档,获取源码。
6、参考文献
《iso11898-1》
《iso14229》
来源:灵动mm32mcu
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理
共源共栅电流镜电路设计
MAX15054 最新的高边FET驱动器,简化了降压和升降压
HTCOneX9评测 精湛的做工和几乎无缺陷的配置
经科投影幕保养小常识
黑芝麻智能联合BlackBerry QNX打造高性能自动驾驶平台
一文浅谈FlexCAN OTA
国家电网陕北—湖北±800千伏特高压直流工程开工动员大会召开
不同设备如何统一语言编程平台高效开发?本文为你揭秘
新能源汽车都去了哪里(消费群体)_新能源汽车进入普通家庭还需努力
新晋企业六氟磷酸锂扩建项目投产率不足15%
国六电脑板传感器及控制策略详解
LDO线性调节器电路在StrataFlash嵌入式存储器中的
Parker机电产品(运动控制/伺服电机/直线电机)在FPD行业应用
差压变送器怎么调零点
信号隔离器在加热炉控制系统的应用
CYB6300单晶硅压力变送器:工业应用的重要利器
苹果明年推出5G手机产品但任然无法解决热量的问题
什么是增距镜头
数字IC设计中的几个方面
Redmi Note7 Pro/魅族Note9详细测评,对比荣耀V20、小米9