与大部分的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 结构、启动原理以及内存映射相关推荐

  1. 【Linux内核】内存映射原理

    [Linux内核]内存映射原理 物理地址空间 物理地址是处理器在总线上能看到的地址,使用RISC(Reduced Instruction Set Computing精简指令集)的处理器通常只实现一个物 ...

  2. (整理)用户空间_内核空间以及内存映射

    内核空间和用户空间   现代操作系统采用虚拟存储器,对于32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也 ...

  3. mmap 内存映射详解

    目录 mmap基础概念 mmap内存映射原理 mmap示例代码 mmap和常规文件操作的区别 mmap使用的细节 前言 原文对 mmap 内存映射已经表述的很清楚了,我只是在原文的基础上,附上了 mm ...

  4. Java 中的内存映射Mmap

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 mmap 前言 一.mmap基础概念? 二.mmap 内存映射原理 (一)进程启动映射过程,并在虚拟地址空间中为映射创建虚拟映射区域 ...

  5. 一文搞懂内存映射原理及使用方法

    a. 内存映射原理 内存映射即在进程的虚拟地址空间中创建一个映射,分为两种: 文件映射:文件支持的内存映射,把文件的一个区间映射到进程的虚拟地址空间,数据源是存储设备上的文件. 匿名映射:没有文件支持 ...

  6. CGB2005 JT-1(jt概述 SqlYog 物理模型图PD 表结构 pom文件标签说明 jt环境搭建 创建项目2种,创建各种文件 idea导入,打包,删除项目,启动原理)

    注意事项: 1.京淘项目概述和动吧项目缺点描述 2.把sql文件导入数据库:通过SqlYog可视化工具或者Dos命令窗口. 3.SqlYog说明,和制作物理模型图的工具pd用发. 4.表结构学习 5. ...

  7. [架构之路-25]:目标系统 - 系统软件 - bootloader uboot内存映射与启动流程

    目录 第1章 uboot概述 1.1 概述 1.2 内存映射(案例) 1.3 uboot在嵌入式系统启动中的位置 第2章 uboot启动流程(源码分析) 2.1 入口函数:_start 2.3 执行流 ...

  8. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

  9. S3C6410设备时钟源选择、启动方式选择和内存映射

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

最新文章

  1. xml转换为mysql_如何将存储在XML文件中的数据转换为关系数据库(MySQL)?
  2. android ui秘笈,看图说话 – Android UI 设计秘笈 :Part I
  3. Omad群组部署、依赖部署一键解决
  4. Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)
  5. ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT
  6. Oracle分组函数
  7. java 判断是linux系统_java判断是window系统还是Linux系统,并获取其IP地址及文件上传 | 学步园...
  8. HTML5 表单元素
  9. Shiro——从零开始进行详解官方入门案例
  10. java 华氏度_在Java中将华氏度转换为摄氏温度[重复] - java
  11. 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm
  12. Activiti7使用
  13. wcdma系统随机接入过程的流程图_随机接入过程
  14. SIM900A模块与PC如何连接?
  15. lol全队消息怎么发_英雄联盟如何发全部消息,LOL怎样发送消息给全部
  16. linux中搭建邮件服务器
  17. Oracle前期准备
  18. 给定一个数组,求数组的最大连续子数组,使得该子数组的和最大
  19. 如何计算DDR存储容量
  20. busybox制作的rootfs,启动脚本修改定制

热门文章

  1. 大数据环境下,征信,真的那么美好吗?
  2. T解 湖南师大附中集训 模拟考试1
  3. 整理大厂高频核心前端面试题,五万多字,面试必考
  4. 工业生产ERP系统常见的五大统计分析功能
  5. 2020年三月计算机二级甘肃报名官网,2020年3月甘肃计算机二级考试报名时间
  6. 【机器翻译】《Nearest Neighbor Knowledge Distillation for Neural Machine Translation》论文总结
  7. 团队作业(三):项目分工
  8. Python去水印操作
  9. 数据挖掘-泰坦尼克号生存数据分析
  10. 【Cadence17.2】Padstack Editor制作焊盘和过孔