当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《基于32位ColdFire构建嵌入式系统》教学资源(PPT课件)第10章 Flash在线编程

资源类别:文库,文档格式:PPT,文档页数:15,文件大小:1.01MB,团购合买
点击下载完整版文档(PPT)

freescale semiconductor 第10章Flash在线编程 V1.0 2009.2

第10章 Flash在线编程 V1.0 2009.2 1

本章目录 10.1 Flash存储器概述 10.2 ColdFire Flash存储器编程方法 10.3 ColdFire Flash擦写函数的测试工程 10.4 ColdFire Flash存储器的保护特性和安全性

本章目录 10.1 Flash存储器概述 10.2 ColdFire Flash存储器编程方法 10.3 ColdFire Flash擦写函数的测试工程 10.4 ColdFire Flash存储器的保护特性和安全性 2

10.1 Flash存储器概述 1.Flash存储器的特性 (1)固有不挥发性。 (2)易更新性。 (3)成本低、密度高、可靠性好。 2.Flash存储器编程的基本概念 Flash编程的基本操作有两种: >擦除(Erase) 将存储单元的内容由二进制的0变成1。 >写入(Program)。 将存储单元的内容由二进制的1变成0。擦除操作包括整体 擦除和页擦除。而写入操作是以字为单位进行的。在擦除 及写入过程中一般需要高于电源的电压

10.1 Flash存储器概述 1.Flash存储器的特性 (1)固有不挥发性。 (2)易更新性。 (3)成本低、密度高、可靠性好。 2.Flash存储器编程的基本概念 Flash编程的基本操作有两种: ➢擦除(Erase) 将存储单元的内容由二进制的0变成1。 ➢写入(Program)。 将存储单元的内容由二进制的1变成0。擦除操作包括整体 擦除和页擦除。而写入操作是以字为单位进行的。在擦除 及写入过程中一般需要高于电源的电压。 3

10.2 ColdFire Flash存储器编程方法 通用Flash总线 偶 奇 通用Flash总线接口 ↑ ↑ 偶数块 奇数块 阵列0阵列1 阵列2阵列3 工 工 Flash存储控制器 工 Flash命令控制器 内部Flash总线接口 工 内部Flash总线 ColdFire Flash模块框架图

10.2 ColdFire Flash存储器编程方法 通用 Flash 总线接口 奇数块 Flash 存储控制器 Flash 命令控制器 内部 Flash 总线接口 内部 Flash 总线 通用 Flash 总线 偶数块 偶 奇 阵列 0 阵列 1 阵列 2 阵列 3 ColdFire Flash 模块框架图 4

10.2 ColdFire Flash存储器编程方法 10.2.1 ColdFire Flash模块寄存器 1.FLASH基地址寄存器FLASHBAR(Flash Base Address Register FLASHBAR定义Flash的基地址、寄存器内容是否有效、权限访问。 2.CFM时钟分频寄存器CFMCLKD(CFM Clock Divider Register CFMCLKD寄存器主要用于对擦除与写入时间的控制。 3.CFM模块配置寄存器CFMMCR(CFM Module Configuration Register CFMMCR寄存器用于配置和控制内部总线接口操作。 4.CFM保护寄存器CFMPROT(CFM Protection Register 该32位的寄存器每一位控制着MCF52233的一个扇区,此寄存器只 有在LOCK位为零的时候才能够设置,相应位为1表示相应的扇区被保护, 不可以擦除写入;为0则表示相应的扇区未被保护

10.2.1 ColdFire Flash模块寄存器 1.FLASH基地址寄存器FLASHBAR(Flash Base Address Register) FLASHBAR定义Flash的基地址、寄存器内容是否有效、权限访问。 2.CFM时钟分频寄存器CFMCLKD(CFM Clock Divider Register) CFMCLKD寄存器主要用于对擦除与写入时间的控制。 3.CFM模块配置寄存器CFMMCR(CFM Module Configuration Register) CFMMCR寄存器用于配置和控制内部总线接口操作。 4.CFM保护寄存器CFMPROT(CFM Protection Register) 该32位的寄存器每一位控制着MCF52233的一个扇区,此寄存器只 有在LOCK位为零的时候才能够设置,相应位为1表示相应的扇区被保护, 不可以擦除写入;为0则表示相应的扇区未被保护。 10.2 ColdFire Flash存储器编程方法 5

10.2 ColdFire Flash存储器编程方法 10.2.1 ColdFire Flash模块寄存器 5.CFM安全寄存器CFMSEC(CFM Security Register) 该32位的寄存器用于存储Flash的保护字和保护状态。 6.CFM用户状态寄存器CFMUSTAT(CFM User Status Register CFMUSTAT寄存器定义了Flash命令控制器、Flash存储访问、保护及空白 检测等状态。 7.Flash命令寄存器CFMCMD(CFM Command Register) Flashi命令寄存器定义了Flash操作的相关命令,复位全为0。 6

10.2.1 ColdFire Flash模块寄存器 5.CFM安全寄存器CFMSEC(CFM Security Register) 该32位的寄存器用于存储Flash的保护字和保护状态。 6.CFM用户状态寄存器CFMUSTAT(CFM User Status Register) CFMUSTAT寄存器定义了Flash命令控制器、Flash存储访问、保护及空白 检测等状态。 7.Flash命令寄存器CFMCMD(CFM Command Register) Flash命令寄存器定义了Flash操作的相关命令,复位全为0。 10.2 ColdFire Flash存储器编程方法 6

10.2 ColdFire Flash存储器编程方法 10.2.2 ColdFire Flash存储器擦除与写入的步骤 1.擦除和写入流程的一些公共操作 (1)判断是否设置时钟分频,若未分频,则先分频。 (2)清除用户状态寄存器CFMUSTATI的保护错误标志位 PVIOL和访问错误标志位ACCERR,以免前一次的操作 结果干扰本次操作。 static void Flash_Init(uint32 busclk); /Flash擦/写初始化操作

10.2.2 ColdFire Flash存储器擦除与写入的步骤 1.擦除和写入流程的一些公共操作 (1)判断是否设置时钟分频,若未分频,则先分频。 (2)清除用户状态寄存器CFMUSTAT的保护错误标志位 PVIOL和访问错误标志位ACCERR,以免前一次的操作 结果干扰本次操作。 static void Flash_Init(uint32 busclk); //Flash擦/写初始化操作 10.2 ColdFire Flash存储器编程方法 7

10.2 ColdFire Flash存储器编程方法 10.2.2 ColdFire Flash存储器擦除与写入的步骤 2.Flash的擦除 (1)设置时钟分频,清相关错误标志位,这些操作已作为擦除 和写入流程开始部分的公共操作被封装成子程序Flash Init,擦 除时直接调用即可。 (2)定位要擦除的页。向要擦除的页中任意地址写一任意值。 (3)向命令寄存器CFMCMD.写页擦除命令0x40。 (4)向状态寄存器CFMUSTAT的命令缓冲区空中断标志位 CBEIF写1,以清零该位来启动命令执行。 (5)等待直到命令执行完成,状态寄存器CFMUSTATI的命令完 成中断标志位CCIF为1标志命令执行完成。 uint8 Flash_Page_Erase(uint8 page); /擦除指定的页 8

10.2.2 ColdFire Flash存储器擦除与写入的步骤 2.Flash的擦除 (1)设置时钟分频,清相关错误标志位,这些操作已作为擦除 和写入流程开始部分的公共操作被封装成子程序Flash_Init,擦 除时直接调用即可。 (2)定位要擦除的页。向要擦除的页中任意地址写一任意值。 (3)向命令寄存器CFMCMD写页擦除命令0x40。 (4)向状态寄存器CFMUSTAT的命令缓冲区空中断标志位 CBEIF写1,以清零该位来启动命令执行。 (5)等待直到命令执行完成,状态寄存器CFMUSTAT的命令完 成中断标志位CCIF为1标志命令执行完成。 uint8 Flash_Page_Erase(uint8 page); //擦除指定的页 10.2 ColdFire Flash存储器编程方法 8

10.2 ColdFire Flash存储器编程方法 10.2.2 ColdFire Flash存储器擦除与写入的步骤 3.Flash的写入 注意,应该向干净的区域(即没有被写过的区域)写入。 (1)设置时钟分频,清相关错误标志位,这些操作已作为擦除和写入 流程开始部分的公共操作被封装成子程序Flash_Init,直接调用即可。 (2)向指定地址写若干字数据。 首先,将源地址的一个字写入目标地址。 其次,向命令寄存器CFMCMD载入命令0x20。 第三,向状态寄存器CFMUSTATI的命令缓冲区空中断标志位CBEIF.写 1,以清零该位来启动命令执行。 第四,等待直到上一条命令执行完毕,即状态寄存器CFMUSTATI的 CBIF位为1,这时就可以接收下一条命令。 最后,如果尚未写完数据,递增源地址和目标地址,转(2)。 uint8 Flash_Page_Write(uint8 page,uint16 pstart,uint32 *addr_source,uint16 N); /从地址addr_source.写入N个字节到第page页的地址pstart*4处 9

10.2.2 ColdFire Flash存储器擦除与写入的步骤 3.Flash的写入 注意,应该向干净的区域(即没有被写过的区域)写入。 (1)设置时钟分频,清相关错误标志位,这些操作已作为擦除和写入 流程开始部分的公共操作被封装成子程序Flash_Init,直接调用即可。 (2)向指定地址写若干字数据。 首先,将源地址的一个字写入目标地址。 其次,向命令寄存器CFMCMD载入命令0x20。 第三,向状态寄存器CFMUSTAT的命令缓冲区空中断标志位CBEIF写 1,以清零该位来启动命令执行。 第四,等待直到上一条命令执行完毕,即状态寄存器CFMUSTAT的 CBEIF位为1,这时就可以接收下一条命令。 最后,如果尚未写完数据,递增源地址和目标地址,转(2)。 uint8 Flash_Page_Write(uint8 page,uint16 pstart,uint32 *addr_source,uint16 N); //从地址addr_source写入N个字节到第page页的地址pstart*4处 10.2 ColdFire Flash存储器编程方法 9

10.2 ColdFire Flash存储器编程方法 10.2.2 ColdFire Flash存储器擦除与写入的步骤 4.Flash命令出错的几种可能情况 在向Flash地址写入数据前没有进行CFMCLKD寄存器设置 CBEIF不为1时写Flash 写Flash块的数据长度不是32位 写完Flash偶数块后不是向奇数块写数据而是向Flash的其他块写入数据 向CFMCMD中写入规定的5种命令以外的命令字 向Flash任意地址写一个值后没有写CFMCMD寄存器 在执行完CFMCMD命令前,再次写CFMCMD 写CFMCMD后不将CFMUSTATI的CBEIF清零 进入STOP模式时有命令未处理完 向Flash保护区域进行擦除或写入 10

10.2.2 ColdFire Flash存储器擦除与写入的步骤 4.Flash命令出错的几种可能情况  在向Flash地址写入数据前没有进行CFMCLKD寄存器设置  CBEIF不为1时写Flash  写Flash块的数据长度不是32位  写完Flash偶数块后不是向奇数块写数据而是向Flash的其他块写入数据  向CFMCMD中写入规定的5种命令以外的命令字  向Flash任意地址写一个值后没有写CFMCMD寄存器  在执行完CFMCMD命令前,再次写CFMCMD  写CFMCMD后不将CFMUSTAT的CBEIF清零  进入STOP模式时有命令未处理完  向Flash保护区域进行擦除或写入 10.2 ColdFire Flash存储器编程方法 10

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共15页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有