logo资料库

MPC5744P的bootloader详讲.doc

第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
资料共47页,剩余部分请下载后查看
目录: 引言 1. MPC5744P 的 bootloader 和应用程序存储器地址分配 1.1 MPC574xP 系列 MCU 的 SRAM 资源 1.2 MPC574xP 系列 MCU 的 Flash 资源 1.3 MPC5744P CAN 总线 bootloader 和应用程序存储器地址分配 2. Flash 驱动开发(下载安装和使用 C55 Flash SSD) 3. FlexCAN 驱动开发 3. 1 DEVKIT-MPC5744P CAN 总线硬件设计 3.2 Qorivva MPC57xx 系列 MCU FlexCAN 模块功能简介 Qorivva MPC57xx 系列 MCU 使用 FlexCAN 模块进行 CAN 总线通信,其具有如下特性: 3.3 FlexCAN 模块通信波特率配置 3.4 FlexCAN 模块 RX ID 滤波器设置,中断设置以及驱动程序 API 介绍 4. 上位机软件及 CAN 总线通信协议介绍 5. bootloader 程序流程介绍(解析 S19 文件、调用 Flash SSD 编程应用程序以及跳转方法) 6. 使用本文介绍的 bootloader 6.1 基于 DEVKIT-MPC5744P 的测试硬件连接 6.2 在 DEVKIT-MPC5744P 上测试本例 bootloader 总结
引言 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 和 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 大小不 同; 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)只有其自身可以访问,所以一般将运行在该内核上的应 用工程的堆栈分配到其局部存储器(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: 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 块组成。其为系统保留区,用户不可编程;
MPC5744P 总共有 2.5MB 片上 Flash 存储器,包括 4 个 16KB 的 Low Flash Block(4*16KB = (6*64KB = 384KB)以及 8 个 256KB 的 256KB Flash Block(8*256KB = 2MB): 64KB)、2 个 32KB 的 Mid Flash Block(2*32KB = 64KB)和 6 个 64KB 的 High Flash Block 64KB 64KB 384KB 2MB = 2.5MB MPC5744P 具体映射地址和 Flash Block 分配以及 RWW 分区和 Block 大小如下表:
属于不同 RWW 分区的 Flash Block 间支持 Read-While-Read 操作,即允许在 A Flash Block 的 Flash 驱动可以操作 B Flash Block;地址 0x80000~0x817FFF 的 96KB Flash 空间包含 LowFlash Block0~1 和 Mid Flash Block0~1 总共 4 个 Flash Block 被分配作为模拟 EEPROM 使用,在整个 2.5MB 的 Flash 地址空间中,只有 Low Flash Block2~3, High Flash Block0~1 和和 256KB Flash Block0~3 四个 Flash Block 可以作为启动位置(boot location0~7)。 所谓 boot location 就是每次 MCU 复位后运行 BAM 时寻找合法启动半字和复位向量的区域。 复位后 CPU 将从 boot location0~7 依次查找由正取 boot_ID--0x5A 组成的合法复位配置半 字(RCHW)(高 16-bit 为 RCHW,低 16-bit 保留,位于所在 Flash block 的起始地址)和应 用程序开始地址(32-bit 复位向量,位于所在 Flash block 的起始地址偏移 0x4 的地址):
分享到:
收藏