IMXRT1052 FlexRAM配置与空间分配

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

NXP IMXRT架构其实挺异类的,下面是我的一点经验分析。


一、存储器架构

1.整体存储空间架构

IMXRT1052内置512KB SRAM,(ITCM,DTCM,OCRAM)共享,是可配置的FlexRAM,可以通过代码动态灵活分配ITCM,DTCM,OCRAM的空间。
在这里插入图片描述

2.FlexRAM空间分配

在这里插入图片描述

2.FlexRAM配置

在这里插入图片描述

3.FlexRAM地址空间映射

在这里插入图片描述

Code区地址映射
在这里插入图片描述

SRAM区地址映射
在这里插入图片描述

ITCM,DTCM,OCRAM地址映射
在这里插入图片描述

二、代码区域分布分析

1.众所周知,代码经编译链接后生成的文件分为5个部分

在这里插入图片描述

2.在ROM还是在RAM,加载域和执行域

  • flash 和 ram 都是内存,只不过flash是ROM具有掉电保存作用,RAM没有这个功能,其他区别百度;
  • 首先程序是需要保存的,也就是必须要有掉电保存的功能,所以ROM自然而然成了保存程序的存储器;
  • 程序里有一部分代码,需要在程序执行的过程中动态改变,而且需要很高的刷新频率,这里RAM自然而然的去完成这部分工作;
  • 所以ROM和RAM各自各司其职;
  • 然而FLASH又分NorFlash,NandFlash,有何区别?Nor速度快成本高,但是有一个特性就是可以XIP,Nand容易出错,写入性能好,适合做存储;
  • 大部分MCU内置的Flash都是Nor,这样MCU就直接可以XIP,什么意思?就是指令可以直接通过Nor执行!这里不要理解错了,首先你的代码肯定是放在Nor里面,Nor可以XIP,也就是MCU给出地址,Nor可以直接返回指令交给MCU去执行,这样我们就可以不用把指令拷贝到RAM里去执行了;
  • 这个特性使得大部分MCU使用Nor作为存储设备,或者启动设备;
  • 我们就以IMXRT为例,来说明一下,1052是外挂SPI Nor,首先上电后,内核的boot(固化)就直接读取Nor的前4K,来初始化flash的频率等等,如果是外接SDRAM,还需要再读4K DCD数据来初始化SDRAM;
  • 接下来,code段里的数据一直存在Nor里,等待内核读取即可,接着需要手动把data段的数据从Nor拷贝到RAM里,为什么要拷贝?应为data段里存放的是已经初始化的全局变量和静态变量,首先这些初始化了的值原来肯定保存在Nor里,现在这些变量又需要进行快速读写,所以我们最好把他拷贝到RAM里来,接下来就是bss段了,bss段存放的是未初始化和全部变量和初始化为零的全部变量,既然变量是未初始化和初始化为零的数据,那么我们完全没有必要把他放在Nor里,这样简直就是浪费宝贵的空间,我们可以在启动后,手动去初始化这些变量,完成这些工作后你就可以愉快的起飞了;
  • 为什么不code拷贝到RAM里去,原因很简单,RAM的空间有限!如果你有外扩SDRAM,那么你可以这样做?回到当初出那个问题,你都外扩SDRAM了,为啥不直接上MPU呢;

3.分析域的执行逻辑

  • 嵌入式MCU处理器架构,一般是芯片上集成了FLASH和RAM,比如STM32家族的产品,基本上都是内置Flash和RAM,当然Flash和RAM的空间很小,而且价格太贵;

  • 而在NXP新的IMXRT架构下的处理器被称为是跨界处理器,意思是在MCU和MPU之间做一个折中处理,既保留了MCU的实时性,也兼容了MPU的高频和大容量存储的优势;

  • 比如说IMX1052,主频可达600MHz,同时外置Flash,可以部署更多的应用代码,同时可以外接SDRAM实现一些视频应用;

  • 不过这种不伦不类的号称跨界处理器,在实际应用中表现的其实很鸡肋,一个最直接的问题:如果你的代码很小,那么你为什么还要外置FLASH呢?直接用STM32的内置FLASH照样跑的很欢乐,如果你的代码很大,有好几兆,那么你选个外置FLASH,将严重影响程序的运行效率,除非你搬到SDRAM里去运行,那么问题来了,既然你都这样了,为什么不直接用MPU呢?而且1052的SDRAM,频率很低,如果强行接入SDRAM,那么SDRAM占用IO数高达40几个,这些下来,号称的那些丰富外设,纯属摆设;

4.程序是如何在flash和ram里运行的

  • 说到程序结构,先了解哈佛结构和冯诺依曼结构
  • 嵌入式MCU的总线结构都是哈佛结构,哈佛结构是一种将程序指令存储和数据存储分开的存储器结构
  • 两个关键组成,指令数据

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值