【MPC5744P】Flash 结构、启动原理以及内存映射
与大部分的MCU相同,MPC5744P的Flash、RAM以及外设都映射到内存地址中了。以下为映射地址范围:
MPC5744P Flash结构如下: | |||||||||
0x00000000-0x003FFFFF | -- | reserved | |||||||
0x00400000-0x00403FFF | -- | 16KB,UTest NVM block | |||||||
0x00404000-0x007FFFFF | -- | Reserved | |||||||
0x00800000-0x00817FFF | -- | 96KB,Data flash memory block | |||||||
0x00800000-0x00803FFF | 16KB,EEPROM-low block0,RWW_P:0,BlockSize:16 KB | ||||||||
0x00804000-0x00807FFF | 16KB,EEPROM-low block1,RWW_P:0,BlockSize:16 KB | ||||||||
0x00808000-0x0080FFFF | 32KB,EEPROM-mid block0,RWW_P:2,BlockSize:32 KB | ||||||||
0x00810000-0x00817FFF | 32KB,EEPROM-mid block1,RWW_P:3,BlockSize:32 KB | ||||||||
0x00818000-0x00FFFFFF | -- | 6MB,Used 416KB,Small and medium flash memory blocks | |||||||
Small: | |||||||||
0x00F98000-0x00F9BFFF | 16KB,low flash memory block 2(boot location 0),RWW_P:1,BlockSize:16KB | ||||||||
0x00F9C000-0x00F9FFFF | 16KB,low flash memory block 3(boot location 1),RWW_P:1,BlockSize:16KB | ||||||||
Medium: | |||||||||
0x00FA0000-0x00FAFFFF | 64KB,high flash memory block 0(boot location 2),RWW_P:4 BlockSize:64KB | ||||||||
0x00FB0000-0x00FBFFFF | 64KB,high flash memory block 1(boot location 3),RWW_P:4 BlockSize:64KB | ||||||||
0x00FC0000-0x00FCFFFF | 64KB,high flash memory block 2 ,RWW_P:4,BlockSize:64KB | ||||||||
0x00FD0000-0x00FDFFFF | 64KB,high flash memory block 3 ,RWW_P:5,BlockSize:64KB | ||||||||
0x00FE0000-0x00FEFFFF | 64KB,high flash memory block 4 ,RWW_P:5,BlockSize:64KB | ||||||||
0x00FF0000-0x00FFFFFF | 64KB,high flash memory block 5 ,RWW_P:5,BlockSize:64KB | ||||||||
0x01000000-0x01FFFFFF | -- | 16MB,Used 2048KB,Large flash memory blocks | |||||||
Large: | |||||||||
0x01000000-0x0103FFFF | 256KB,flash memory block 0(boot location 4),RWW_P:6,BlockSize:256 KB | ||||||||
0x01040000-0x0107FFFF | 256KB,flash memory block 1(boot location 5),RWW_P:6 BlockSize:256 KB | ||||||||
0x01080000-0x010BFFFF | 256KB,flash memory block 2(boot location 6),RWW_P:6 BlockSize:256 KB | ||||||||
0x010C0000-0x010FFFFF | 256KB,flash memory block 3(boot location 7),RWW_P:6 BlockSize:256 KB | ||||||||
0x01100000-0x0113FFFF | 256KB,flash memory block 4,RWW_P:7 BlockSize:256 KB | ||||||||
0x01140000-0x0117FFFF | 256KB,flash memory block 5,RWW_P:7 BlockSize:256 KB | ||||||||
0x01180000-0x011BFFFF | 256KB,flash memory block 6,RWW_P:7 BlockSize:256 KB | ||||||||
0x011C0000-0x011FFFFF | 256KB,flash memory block 7,RWW_P:7 BlockSize:256 KB | ||||||||
0x02000000-0x089FFFFF | -- | 106MB,Reserved | |||||||
0x08A00000-0x08FFFFFF | -- | 6MB,Used 416KB,Mirror Small and medium flash memory blocks | |||||||
0x09000000-0x09FFFFFF | -- | 16MB,Used 2048KB,Mirror Large flash memory blocks | |||||||
0x0A000000-0x3FFFFFFF | -- | Reserved | |||||||
MPC5744P RAM结构如下: | |||||||||
0x40000000-0x4005FFFF | -- | 384KB,System RAM | |||||||
0x40060000-0x4007FFFF | -- | Reserved System RAM | |||||||
0x40080000-0x4FFFFFFF | -- | Reserved | |||||||
MPC5744P Local Memory结构如下 | |||||||||
0x50000000-0x5000FFFF | -- | Reserved | |||||||
0x50010000-0x507FFFFF | -- | Reserved | |||||||
0x50800000-0x5080FFFF | -- | 64KB,Used 64KB,D-MEM CPU0 | |||||||
0x50810000-0xF7FFFFFF | -- | Reserved | |||||||
其它外设: | |||||||||
0xF8000000-0xFFFFBFFF | -- | other | |||||||
0xFFFFC000-0xFFFFFFFF | -- | 16KB,Boot Assist Module(BAM) |
Flash有几种分类方式。
方式一:EEPROM、Small、Medium、Large Flash。
方式二:Low、Medium、High、First256K、Second256K。
其中上述方式二涉及到Lock与Select,关系到Flash的擦除和编程。
MPC5744P Flash编程:
MPC5744P数据存储为字节模式,即32位数据存储会占用4个地址。
对Flash编程时,需要多个步骤:
1、解锁对应的Block
2、选择对应的Block
3、擦除对应的Block
4、编程对应的Block
5、加锁对应的Block
Block对应列表如下:
LOW--not program, partition 0 and 1 | ||||||||
0x00800000-0x00803FFF | -- | 16KB,EEPROM-low block0, RWW_P:0 | ||||||
0x00804000-0x00807FFF | -- | 16KB,EEPROM-low block1, RWW_P:0 | ||||||
0x00F98000-0x00F9BFFF | -- | 16KB,low flash memory block2, RWW_P:1 | ||||||
0x00F9C000-0x00F9FFFF | -- | 16KB,low flash memory block3, RWW_P:1 | ||||||
MID , partition 2 and 3 | ||||||||
0x00808000-0x0080FFFF | -- | 32KB,EEPROM-mid block0, RWW_P:2 | ||||||
0x00810000-0x00817FFF | -- | 32KB,EEPROM-mid block1, RWW_P:3 | ||||||
HIGH, , partition 4 and 5 | ||||||||
0x00FA0000-0x00FAFFFF | -- | 64KB,high flash memory block0, RWW_P:4 | ||||||
0x00FB0000-0x00FBFFFF | -- | 64KB,high flash memory block1, RWW_P:4 | ||||||
0x00FC0000-0x00FCFFFF | -- | 64KB,high flash memory block2, RWW_P:4 | ||||||
0x00FD0000-0x00FDFFFF | -- | 64KB,high flash memory block3, RWW_P:5 | ||||||
0x00FE0000-0x00FEFFFF | -- | 64KB,high flash memory block4, RWW_P:5 | ||||||
0x00FF0000-0x00FFFFFF | -- | 64KB,high flash memory block5, RWW_P:5 | ||||||
256K--all used | ||||||||
0x01000000-0x0103FFFF | -- | 256KB,256k flash memory block0, RWW_P:6 | ||||||
0x01040000-0x0107FFFF | -- | 256KB,256k flash memory block1, RWW_P:6 | ||||||
0x01080000-0x010BFFFF | -- | 256KB,256k flash memory block2, RWW_P:6 | ||||||
0x010C0000-0x010FFFFF | -- | 256KB,256k flash memory block3, RWW_P:6 | ||||||
0x01100000-0x0113FFFF | -- | 256KB,256k flash memory block4, RWW_P:7 | ||||||
0x01140000-0x0117FFFF | -- | 256KB,256k flash memory block5, RWW_P:7 | ||||||
0x01180000-0x011BFFFF | -- | 256KB,256k flash memory block6, RWW_P:7 | ||||||
0x011C0000-0x011FFFFF | -- | 256KB,256k flash memory block7, RWW_P:7 |
具体编程实例下一篇再讲述。
MPC5744P启动原理:
首先介绍以下MCU启动原理,为Bootloader打基础。
MPC5744P启动方式比较奇特,支持2类方式启动:
1、Single Chip(SC)-从第一个可启动flash块启动
2、Serial Boot(SBL)-从SCI或CAN下载启动代码,然后运行,也就是BAM启动
BAM启动:
通过BAM启动(单芯片启动模式由硬件管理,BAM不参与),BAM在以下情况运行:
1、Force Alternate Boot(FAB)引脚选择为串行启动
2、硬件在所有flash中的启动块中没有找到一个合法的Boot ID
以上有一个以上条件成立,则芯片在0xFFFF_C000处抓取代码进而BAM启动。
FAB引脚 配合 ABS(Aletrnate Boot Selector)引脚使用
FAB |
ABS 2,0 |
Boot ID | Boot Mode |
1 | 0 0 | -- | Serial Boot SCI |
1 | 0 1 | -- | Serial Boot CAN |
0 | -- | Valid | SC |
0 | -- | Not Found | Static Mode |
SC启动:
单芯片启动时,会先从低到高搜索每一个Boot location,每一个Boot Location第一个地址为RCHW(Reset Configuration Half-Word),若RCHW的BOOT_ID区域包含0x5A,则此块可作为启动分区,第一个Boot Location起始处为启动地址偏移4个地址(每4个地址为一个32bits数据)。
例如代码从0x00FA0000处,Boot location0处启动,则对应RCHW为,0x00FA0000:0x005A0000,实际会从0x00FA0004处执行第一个代码,例如下面执行了跳转指令,跳转到了0x01000000。
具体设置flash地址方法为修改xxx_flash.ld文件.
【MPC5744P】Flash 结构、启动原理以及内存映射相关推荐
- 【Linux内核】内存映射原理
[Linux内核]内存映射原理 物理地址空间 物理地址是处理器在总线上能看到的地址,使用RISC(Reduced Instruction Set Computing精简指令集)的处理器通常只实现一个物 ...
- (整理)用户空间_内核空间以及内存映射
内核空间和用户空间 现代操作系统采用虚拟存储器,对于32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也 ...
- mmap 内存映射详解
目录 mmap基础概念 mmap内存映射原理 mmap示例代码 mmap和常规文件操作的区别 mmap使用的细节 前言 原文对 mmap 内存映射已经表述的很清楚了,我只是在原文的基础上,附上了 mm ...
- Java 中的内存映射Mmap
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 mmap 前言 一.mmap基础概念? 二.mmap 内存映射原理 (一)进程启动映射过程,并在虚拟地址空间中为映射创建虚拟映射区域 ...
- 一文搞懂内存映射原理及使用方法
a. 内存映射原理 内存映射即在进程的虚拟地址空间中创建一个映射,分为两种: 文件映射:文件支持的内存映射,把文件的一个区间映射到进程的虚拟地址空间,数据源是存储设备上的文件. 匿名映射:没有文件支持 ...
- CGB2005 JT-1(jt概述 SqlYog 物理模型图PD 表结构 pom文件标签说明 jt环境搭建 创建项目2种,创建各种文件 idea导入,打包,删除项目,启动原理)
注意事项: 1.京淘项目概述和动吧项目缺点描述 2.把sql文件导入数据库:通过SqlYog可视化工具或者Dos命令窗口. 3.SqlYog说明,和制作物理模型图的工具pd用发. 4.表结构学习 5. ...
- [架构之路-25]:目标系统 - 系统软件 - bootloader uboot内存映射与启动流程
目录 第1章 uboot概述 1.1 概述 1.2 内存映射(案例) 1.3 uboot在嵌入式系统启动中的位置 第2章 uboot启动流程(源码分析) 2.1 入口函数:_start 2.3 执行流 ...
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine ,既然是虚拟机, ...
- S3C6410设备时钟源选择、启动方式选择和内存映射
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
最新文章
- xml转换为mysql_如何将存储在XML文件中的数据转换为关系数据库(MySQL)?
- android ui秘笈,看图说话 – Android UI 设计秘笈 :Part I
- Omad群组部署、依赖部署一键解决
- Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)
- ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT
- Oracle分组函数
- java 判断是linux系统_java判断是window系统还是Linux系统,并获取其IP地址及文件上传 | 学步园...
- HTML5 表单元素
- Shiro——从零开始进行详解官方入门案例
- java 华氏度_在Java中将华氏度转换为摄氏温度[重复] - java
- 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm
- Activiti7使用
- wcdma系统随机接入过程的流程图_随机接入过程
- SIM900A模块与PC如何连接?
- lol全队消息怎么发_英雄联盟如何发全部消息,LOL怎样发送消息给全部
- linux中搭建邮件服务器
- Oracle前期准备
- 给定一个数组,求数组的最大连续子数组,使得该子数组的和最大
- 如何计算DDR存储容量
- busybox制作的rootfs,启动脚本修改定制