目录
01.Flash存储器介绍
NOR和NAND是现在市场上两种主要的非易失闪存技术。两种 FLASH 具有相同的存储单元,工作原理也一样,为了缩短存取时间并不是对每个单元行单独的存取操作,而是对一定数量的存取单元进行集体操作, NAND 型 FLASH 各存储单元之间是串联的,而 NOR 型 FLASH 各单元之间是并联的;为了对全部的存储单元有效管理,必须对存储单元进行统一编址。
NAND 的全部存储单元分为若干个块,每个块又分为若干个页,每个页是 512byte,就是 512 个 8 位数,就是说每个页有 512 条位线,每条位线下有8个存储单元;那么每页存储的数 据正好跟硬盘的一个扇区存储的数据相同,这是设计时为了方便与磁盘进行数据交换而特意安排的,那么块就类似硬盘的簇;容量不同,块的数量不同,组成块的页的数量也不同。在读取数据时,当字线和位线锁定某个晶体管时,该晶体管的控制极不加偏置电压,其它的 7个都加上偏置电压而导通,如果这个晶体管的浮栅中有电荷就会导通使位线为低电平,读出的数就是 0,反之就是 1。NOR Flash的每个存储单元以并联的方式连接到位线,方便对每一位进行随机存取;具有专用的地址线,可以实现一次性的直接寻址;缩短了FLASH对处理器指令的执行时间。NAND Flash和NOR Flash的各自特点如下图所示:
▲图 1.1 NAND Flash和NOR Flash对比图
02.MPC5554 Flash
MPC5554 Flash 属于Nor Flash。MPC5544 Flash 总容量为2M,划分为64KB页,每页256位。有20个独立的块,每个块的空间设定为15~128KB。硬件支持边读边写,可以在一个块进行擦除的时候读取另外的块。编程模式为并行,支持快速行结束编程。
Flash存储器按照物理实现分割成3个段,低地址段,中地址段和高地址段。每个段可以分割成区,每个区包含了至少两个块。当对分区中的任意一个块进行擦除或写入操作时,该分区所有块都不能进行读取。MPC5554 Flash 存储空间划分图如下所示:
▲图 2.1 MPC5554 Flash分布图
03.MPC5554 Flash 相关操作
1.擦除操作
1) FLASH_MCR寄存器的ERS位置1。
2) 根据所要擦除的FLASH块,设置FLASH_LMSR寄存器和FLASH_HSR寄存器。
3) 向被擦除的FLASH块所在地址空间的任意地址执行写操作,为擦除锁定写操作。
4) FLASH_MCR寄存器的EHV位置1,启动内部的硬件擦除流程。
5) 等待FLASH_MCR的DONE位置1,DONE位置1表示擦除成功。
2.编程操作
1) FLASH_MCR寄存器的PGM位置1。
2) 向这个FLASH块中第一个待写入的地址写入一个字或一个长字,为编程写锁定。
3) 将后续的编程内容写入到这个FLASH块
4) FLASH_MCR寄存器的EHV位置1,启动内部的硬件编程流程。
5) 等待FLASH_MCR的DONE位置1,DONE位置1表示编程成功。
04.SkyEye平台上实现MPC5554 Flash
SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。
SkyEye目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。
实现MPC5554 Flash FLASH_MCR等寄存器的读写操作,如下图所示:
▲图 4.1 写FLASH_MCR 寄存器实现图
实现Flash 的擦除,编程操作,如下图所示:
▲图 4.2 Flash擦除实现图
SkyEye中Flash实现gp模型图
▲图 4.3 Flash实现gp模型图