汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
汽车电子 ECU BootLoader 开发之基于 CAN 总线
通信的 MPC57xx 系列 MCU bootloader 开发详
解(以 MPC574xP 为例介绍)
作者: 胡恩伟 NXP 汽车电子现场应用工程师(FAE)
☞欢迎大家关注我的微信公众号--汽车电子 expert 成长之路.(直接微信扫描下方二
维码即可),阅读更多关于嵌入式系统软硬件设计和汽车电子的原创性精彩文章。
如果你觉得我的文章对你的学习/工作有所帮助,也请你帮忙转发到你的朋友圈、微
信群和 QQ 同学群等,让更多的人能够看到我的文章,大家一起学习,一起进步!
Tips:本微信公众号完全是我个人维护,坚持原创,保证文章品质--通过分享我个
人作为 FAE 在支持客户进行嵌入式汽车电子产品开发过程中遇到的各种问题和解决方案以
及项目设计/开发/l 量产的实战经验,透析汽车电子嵌入式系统软硬件技术开发难点和痛
点,帮助大家学习/了解/掌握 Freescale/NXP 汽车电子产品/解决方案,提高产品开发效率,
缩短开发周期。
由于工作时间原因,本公众号每周不定时更新个人原创文章:2~3 篇/周。坚持原创,
保证质量;不断总结经验才能提高。(胡恩伟)
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 1 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
内容提要
引言 ................................................................................................................................................ 3
1. MPC5744P 的 bootloader 和应用程序存储器地址分配 ............................................... 4
1.1 MPC574xP 系列 MCU 的 SRAM 资源 ................................................................... 4
1.2 MPC574xP 系列 MCU 的 Flash 资源 ..................................................................... 6
1.3 MPC5744P CAN 总线 bootloader 和应用程序存储器地址分配 ................... 13
2. Flash 驱动开发(下载安装和使用 C55 Flash SSD) ......................................................... 17
3. FlexCAN 驱动开发 ............................................................................................................... 21
3. 1 DEVKIT-MPC5744P CAN 总线硬件设计 ........................................................... 21
3.2 Qorivva MPC57xx 系列 MCU FlexCAN 模块功能简介 ................................... 22
3.3 FlexCAN 模块通信波特率配置 ................................................................................ 25
3.4 FlexCAN 模块 RX ID 滤波器设置,中断设置以及驱动程序 API 介绍 ............ 27
4. 上位机软件及 CAN 总线通信协议介绍 ............................................................................ 31
5. bootloader 程序流程介绍(解析 S19 文件、调用 Flash SSD 编程应用程序以及跳转
方法) ............................................................................................................................................. 32
6. 使用本文介绍的 bootloader ............................................................................................. 43
6.1 基于 DEVKIT-MPC5744P 的测试硬件连接 ......................................................... 43
6.2 在 DEVKIT-MPC5744P 上测试本例 bootloader ............................................... 44
总结 .............................................................................................................................................. 49
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 2 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
引言
Qorivva MPC57xx 系列汽车级 MCU 至 21015 年底开始产量到现在,被
广泛使用于各种汽车电子 ECU 产品中,而汽车电子 ECU 中,越来越多的要求
开发基于 CAN 总线通信的 bootloader 功能,以实现在线升级应用程序的功能,
或者对接未来基于车联网的 FOTA--Firmware Over-The-Air 功能。
而 Qorivva MPC57xx 系列汽车级 MCU 相对来说,其外设功能模块更加复
杂,片上集成的存储器--SRAM 和 Flas 模块较之前的 S12(X)系列 MCU 尺寸更
大而且更加复杂,另外,其软件开发环境--S32DS for Power V1.0/1/2 也是一
个推出不到两年的新环境,用户相对不是和熟悉,这些因素都导致 Qorivva
MPC57xx 系列汽车级 MCU 的 bootloader 具有一定的挑战。
基于以上考虑,作者基于 Qorivva MPC57xx 系列的 C55 Flash SSD 和
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 3 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
S32DS for Power V1.2 开发完成了 MPC5744P 的 CAN 总线 bootloader,
并在 DEVKIT-MPC5744P 上测试 OK。
本文旨在以 MPC574xP 为例介绍 MPC57xx 系列 MCU 的 bootloader 开
发流程和注意事项,希望对大家有所帮助。
Tips:关于汽车电子 ECU bootloader 开发的一般原理和注意事项,请参
考本公众号之前的文章《汽车电子ECU bootloader开发要点详解》(直接点击
跳转阅读);
1. MPC5744P 的 bootloader 和应用程序存储器地址分配
1.1 MPC574xP 系列 MCU 的 SRAM 资源
MPC574xP 系列 MCU 的 SRAM 包含系统 RAM(Syetem RAM)和内核局
部存储器(Local memory)两种,在 CPU 内核寻址地址空间中的地址映射分配
如下:
Syetem RAM: 地址 0x4000_0000 ~ 0x4005_FFFF,最多 384KB 不同的
part number 大小不同;
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 4 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
Local momory:地址 0x5080_0000 ~ 0x5080_FFFF, 全部 part number
均为 64KB;
Tips:
A. 同一个系列的 MCU,不同的 part number 其 System RAM 的大小有
所不同,MPC574xP 系列 MCU 的具体 SRAM 地址映射如下:
B. CPU 内核访问局部存储器(Local memory)比系统 RAM 更加高效,而且
在多核 MCU 中,每个内核的局部存储器(Local memory)只有其自身可以访
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 5 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
问,所以一般将运行在该内核上的应用工程的堆栈分配到其局部存储器(Local
memory)上,这样不仅提高了内核的运行效率,以避免了多核最存储器资源的
访问冲突,当然,其也可以分配给应用工程的其他数据段使用,比如.data 段
或者.bss 段等;
以下为多核 MCU--MPC574xR 系列的 SRAM 地址映射,其中多核 CPU
的 Local Memory 地址是分开独立的:
1.2 MPC574xP 系列 MCU 的 Flash 资源
MPC57xP 系列 MCU 的片上 Flash 包括 16KB UTest Flash、96KB 的
Data Flash 和多达 2464KB 的 Code Flash 以及相应的 Mirror Flash:
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 6 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
UTest Flash:地址 0x0040_0000 ~ 0x0040_3FFF,总共 16KB,系统保
留区,用户存放 Flash 和芯片配置信息等,比如 UDF 记录、ADC trim 参数以
及 IRC trim 值等;
Data Flash:地址 0x0080_0000 ~ 0x0081_7FFF,总共 96KB, 4 个
Block,占 3 个 RWW 分区,一般用作模拟 EEPROM,当然不做模拟
EEPROM 使用时,也可以用于存放用户应用程序代码和数据;
Code Flash:包括 416KB 的 Small and medium Flash 块,地址
0x00A0_0000 ~ 0x00A5_FFFF 和最多 2MB 的 Large Flash 块,地址
0x0100_0000 ~ 0x011F_FFFF,其默认用于存储用户应用程序代码和数据,如
果需要,也可以将其用于模拟 EEPROM。
Mirror Flash:该区域由地址 0x08A0_0000 ~ 0x08A5_FFFF 的 384KB
Small and medium code Flash 的镜像 Flash 和地址 0x9100_0000 ~
0x911F_FFFF,最多 2MB 的 Large Flash 的镜像 Flash 块组成。其为系统保留
区,用户不可编程;
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 7 页
汽车电子 ECU BootLoader 开发之基于 CAN 总线通信的 MPC57xx 系列 MCU bootloader
开发详解(以 MPC574xP 为例介绍)
MPC5744P 总共有 2.5MB 片上 Flash 存储器,包括 4 个 16KB 的 Low
Flash Block(4*16KB = 64KB)、2 个 32KB 的 Mid Flash Block(2*32KB =
64KB)和 6 个 64KB 的 High Flash Block(6*64KB = 384KB)以及 8 个
256KB 的 256KB Flash Block(8*256KB = 2MB):
64KB + 64KB + 384KB + 2MB = 2.5MB
MPC5744P 具体映射地址和 Flash Block 分配以及 RWW 分区和 Block 大
小如下表:
☞更多汽车电子软硬件开发原创技术文章分享,请微信搜索关注公众号“汽
车电子 expert 成长之路”阅读,欢迎转发分享!
第 8 页