【经验】灵动微电子FlexCAN OTA解决方案的使用教程
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”文档,获取源码。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由ll转载自灵动MM32MCU公众号,原文标题为:灵动微课堂 (第244讲)|FlexCAN OTA,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
Keil分散加载文件浅析
分散加载文件(scatter file)是一个文本文件,用于描述 ARM 链接器生成映像文件所需要的信息,在一些应用场景中嵌入式系统可能会使用分散加载。本章节简要介绍了分散加载文件的基本概念和语法,旨在对分散加载文件有初步认识。
设计经验 发布时间 : 2023-12-28
灵动微电子MM32F0160系列MCU FlexCAN-FD通信应用指南
MM32F0160系列MCU具有一个 FlexCAN 模块,该模块遵循 ISO 11898-1 标准、 CAN FD 和 CAN 2.0B 协议规范,不仅兼容传统CAN,还支持CAN FD模式。本章节初步学习使用MM32F0160 FlexCAN-FD接口实现CAN FD通信,相关例程参考灵动官网的LibSamples或在此基础上修改。
设计经验 发布时间 : 2024-01-07
使用灵动MM32F5270 MCU UART配置实现LIN通信
本文主要简述MM32F5270 UART是如何实现LIN通信的。从LIN驱动程序、 主机程序、从机程序和验证等方面来讲代码实现。
设计经验 发布时间 : 2024-02-23
“MindMotion·Star“ Series: Major Member MM32F5260 Officially in Mass Production
At the Shenzhen Elexcon 2024 in late August, MindMotion Microelectronics officially unveiled the “MindMotion·Star” series of high-performance MM32 MCU products, featuring four sub-series: MM32F3, MindMotion Dubhe MM32F5, MindMotion Alioth MM32G5, and MindMotion Phecda MM32H5. MindMotion is excited to announce the formal launch of a key member of the MindMotion Dubhe sub-series: the MM32F5260.
产品 发布时间 : 2024-10-25
HVAC FLAP以MM32SPIN023C为主控设计提供All in one方案
暖通空调 (HVAC) 系统旨在调节、加热、冷却、通风、清洁或除湿车厢内的空气质量 (IAQ)。暖通空调系统由前端的传感器和机械/电子开关、鼓风机电机、执行器(用于新鲜空气循环控制、气流控制和温度控制)以及制冷装置组成,这些装置将空气输送到后端的座舱,以确保驾驶员和乘客的热舒适性。HVAC FLAP以 MM32SPIN023C 为主控。
应用方案 发布时间 : 2024-03-25
MindMotion MM32H5480 Triumphs with “2024 Hardcore MCU Chip Award“
MindMotion Microelectronics, as a frontrunner in the domestic market for general-purpose 32-bit MCU products and solutions, proudly secured the “2024 Hardcore MCU Chip Award“ for its high-performance product, the MM32H5480.
产品 发布时间 : 2024-10-23
MindMotion(灵动微) MCU选型表
32位高性能,高性价比MCU,Core核心有M0、M0+、2XM0、M3、STAR-MC1,Flash存储容量范围 16KB~2048KB,RAM存储容量范围 2KB~128KB,工作电压:1.8~48V,CPU频率(MHz):48~180MHz,GPIO 端口数(个):6~86,LQFP/TSSOP/QFN等多种封装形式。
产品型号
|
品类
|
内核
|
管脚数(个)
|
工作温度(℃)
|
CPU频率(MHz)
|
工作电压(V)
|
GPIO 端口数(个)
|
Flash(KB)
|
SRAM (KB)
|
封装/外壳/尺寸
|
MM32F0163D7PV
|
32位MCU
|
M0
|
64
|
-40℃~105℃
|
96MHz
|
2.0~5.5V
|
57
|
128KB
|
16KB
|
LQFP64
|
选型表 - MindMotion 立即选型
【IC】“灵动·星”系列MM32高性能MCU产品搭载Star-MC1提供强劲内核动力,性能提升20%
“灵动·星”系列 MM32 高性能 MCU 产品,搭载安谋科技(Arm China)Star-MC1 内核性能,其1.5 DMIPS / MHz,提升 20% ,4.02 CoreMark / MHz,提升20% 。目前包含 4 个子系列: MM32F3,灵动·天枢 MM32F5,灵动·玉衡 MM32G5,灵动·天玑 MM32H5,为用户提供灵活、丰富的选择。
产品 发布时间 : 2024-10-23
MindMotion(灵动微)MM32系列32位MCU选型指南
描述- 灵动微电子成立于2011年,是中国本土领先的通用32位MCU产品及解决方案供应商。灵动微电子的 MCU 产品以 MM32 为标识,基于 Arm Cortex-M 系列内核,自主研发软硬件和生态系统。
型号- MM32G0163D4PV,MM32L0XX,MM32F0144C6PM,MM32F5230,MM32SPIN580C,MM32G0020,MM32G0140,MM32L073PF,MM32F0133C4Q,MM32SPIN080GN,MM32SPIN560CM,MM32SPIN023C,MM32F0133C4P,MM32F5287L8PV,MM32SPIN533AM,MM32F0162D7P,MM32F0121C6P,MM32F0163D4Q,MM32SPIN0230,MM32SPIN080C,MM32F0141C1T,MM32L062NT,MM32F0020B1N,MM32F0144C1TV,MM32F5330,MM32G0001,MM32G0120,MM32F0144C1TM,MM32F0163D7P,MM32SPIN030CN,MM32G0121C1TV,MM32F0010A1TV,MM32SPIN07PF,MM32SPIN05PFOP,MM32SPIN0230B1TV,MM32SPIN37PSD,MM32G0001A6T,MM32F3270,MM32F0121C4P,MM32F0121C4Q,MM32F5277E9PV,MM32F5287L9PV,MM32F0163D6P,MM32F5333D6PV,MM32SPIN0280DAPV,MM32F0121C4N,MM32SPIN080G,MM32SPIN560,MM32F0144C4PM,MM32F0144C4PV,MM32F5280,MM32SPIN06NT,MM32F0140,MM32SPIN560C,MM32F0020,MM32G5333D6QV,MM32F0162D4Q,MM32F0050C1TV,MM32F0273D6P,MM32SPIN0230B3NV,MM32SPIN06PF,MM32G0144C4QV,MM32SPIN0280,MM32L052NT,MM32F5270,MM32F0144C4P,MM32F5277E8PV,MM32F031C6T6,MM32F0130,MM32F0010,MM32F0020B1TV,MM32F5333D7PV,MM32G0144C4PV,MM32SPIN080CN,MM32F0144C4Q,MM32SPIN060G,MM32L0136C7P,MM32F0133C7P,MM32SPIN05NW,MM32F5331D3NV,MM32F0040B1T,MM32SPIN05NT,MM32G0001A6T1V,MM32SPIN06PT,MM32F0120,MM32F0162D6P,MM32F5331D3NM,MM32F003NW,MM32G0160,MM32SPIN27NF,MM32F0163D4QM,MM32SPIN05PF,MM32F031,MM32F3273G6P,MM32F0163D4QV,MM32L0136B6P,MM32G0001A1TV,MM32F0133C6P,MM32SPIN0280D7PV,MM32F5277E7PV,MM32F0144C6P,MM32SPIN222C,MM32F0144C6PV,MM32F0010A6T,MM32G0001A1T,MM32F3273G7P,MM32L0130,MM32G0001A1N,MM32SPIN05PT,MM32G0121C4PV,MM32F0010A1T,MM32F5233D7PV,MM32SPIN27PF,MM32F0010A1N,MM32G5330,MM32SPINEBK,MM32SPIN07,MM32F3273G8P,MM32SPIN160C,MM32SPIN06,MM32F0040B1N,MM32SPIN0230B1NV,MM32L0136C6P,MM32SPIN05,MM32L0020,MM32F0050,MM32SPIN0280D6PV,MM32SPIN533,MM32F031K6U6,MM32F3273G9P,MM32F0163D6PM,MM32SPIN040C,MM32G0020B1T,MM32F0163D6PV,MM32F003,MM32SPIN37,MM32G0020B1N,MM32F0273D8P,MM32F0160,MM32L0136C3T,MM32F0040,MM32G0001A1NV,MM32SPIN0280D6QV,MM32F0144C1T,MM32F103CBT6,MM32F5233D6PV,MM32F0144C4QM,MM32F3273E6P,MM32SPIN27PQ,MM32SPIN27PS,MM32SPIN27PT,MM32L0136C4N,MM32SPIN27,MM32F0020B1NV,MM32F0270,MM32G0121C4QV,MM32F031F6U6,MM32F0273D7P,MM32F003TW,MM32G0144C1TV,MM32F3273E7P,MM32F0141B1T,MM32G0163D6PV,MM32F0163D7PM,MM32SPIN030C,MM32F0163D7PV,MM32F0131C7P,MM32F103,MM32SPIN05TW,MM32F031Y6Y6,MM32F0141C4P,MM32F0141C4Q,MM32F0141C4N,MM32F031K6T6,MM32F0010A1NV,MM32F0131C6P,MM32SPIN422C,MM32F0020B1T,MM32SPIN0280D4PV,MM32L0020B1T,MM32F103RBT6,MM32L0020B1N,MM32F031F6P6,MM32F0121C1N,MM32F0050C1NV,MM32F5333D4QM,MM32G0001A6TV,MM32SPIN360C,MM32,MM32F5333D4QV,MM32F0141C6P,MM32F0141B4P,MM32F0131C4P,MM32F0131C4Q,MM32SPIN0230B3TV,MM32SPIN533A,MM32SPIN033A,MM32F5287L7PV,MM32F5233D4QV
【IC】灵动发布全新入门级32位MCU MM32G0001系列,内置时钟全温度范围内偏差不超过±2%
灵动股份推出全新超值型MM32G0001系列MCU。2023年初,灵动首次发布了其主打高性价比的MM32G系列,目前已陆续推出了G0140,G0160和G5330系列产品。为进一步丰富MM32G系列产品组合,灵动和上下游合作伙伴通力合作,打造出全新入门级超值型MM32G0001系列MCU。
新产品 发布时间 : 2023-07-01
【IC】灵动微电子高性能通用32位MCU产品MM32H5480荣获“2024年度硬核MCU芯片奖”
近日,第六届硬核芯生态大会在深圳举办,同期2024年度硬核中国芯获奖榜单正式发布。作为国内领先的本土通用32位MCU产品及解决方案供应商,MindMotion灵动微电子凭借高性能产品MM32H5480斩获“2024年度硬核MCU芯片奖”。
原厂动态 发布时间 : 2024-10-18
【经验】基于MM32F0163D7P的USB Audio Class(UAC)音频设备移植教程
在上一节我们在MM32F0163D7P 平台上成功的移植了TinyUSB,基于这个平台,今天我们来实现一个 uac2_headset 音频设备,这个设备支持基础的录音和放音功能,如果要支持音量调节/静音功能,还需要再添加一个 HID 变成复合设备。
设计经验 发布时间 : 2023-08-05
【IC】灵动新推出32位MCU MM32F0120,主频高达72MHz,提供64KB Flash和8KB RAM
灵动微电子发布的MM32F0120,搭载Cortex M0内核,主频高达72MHz,提供64KB Flash和8KB RAM,最高支持48pin封装。适用于屏显控制、电动玩具、电源管理、马达控制、无线快充等多种应用场合。
产品 发布时间 : 2024-09-11
【IC】灵动微电子发布灵动·天枢子系列新成员:MM32F5260,搭载国产Star-MC1内核,内核动力强劲
在8月底的深圳嵌入式电子展上,灵动微电子正式发布了“灵动星”系列MM32高性能MCU产品,包含4个子系列:MM32F3,灵动·天枢 MM32F5,灵动·玉衡MM32G5,灵动·天玑MM32H5。9月30日灵动微电子正式发布灵动·天枢子系列的重磅成员:MM32F5260。
产品 发布时间 : 2024-10-10
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论