资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章S3C2410主要功能部件及参数设置 本章重点 NandFlash控制器中断控制器系统定时器异步串行口IIC总线接口AD转换控制器 本章内容 5 1NandFlash控制器5 2中断控制器5 3系统定时器5 4异步串行口5 5IIC总线接口5 6AD转换控制器 5 1NandFlash控制器 5 1 1NORFlash和NANDFlash比较NOR和NAND是现在市场上两种主要的非易失闪存技术 NORFlash指线性存储器 通过线性 连续的地址进行寻址 NANDFlash指非线性存储器 通过非线性 不连续的地址进行寻址 1 应用大多数情况下用NOR存储少量代码 而NAND则是高数据存储密度的理想解决方案 NOR的特点是芯片内执行 应用程序可以直接在flash闪存内运行 不必再把代码读到系统RAM中 2 读写速度NAND写入和擦除的速度也很快 应用NAND的困难在于flash的管理和需要特殊的系统接口 NOR的传输效率很高 但是很低的写入和擦除速度大大影响了它的性能 NOR的读速度比NAND稍快一些 NAND的写入速度比NOR快很多 5 1NandFlash控制器 3 接口性质NORflash带有SRAM接口 有足够的地址引脚来寻址 可以很容易地存取其内部的每一个字节 NANDFlash没有采取内存的随机读取技术 它的读取是以一次读取一块的形式来进行的 通常是一次读取512个字节 与硬盘管理有些类似 4 容量与成本NORflash占据了容量为1 16MB闪存市场的大部分 而NANDFlash只是用在8 128MB的产品当中 NANDFlash比NORFlash廉价 5 1NandFlash控制器 5 1 2S3C2410NANDFlash控制器NORflash存储器的价格比较昂贵 而SDRAM和NANDflash存储器的价格相对比较合适 因而嵌入式开发者希望从NANDflash启动和引导系统 而在SDRAM上执行主程序代码的想法 S3C2410实现了从NORFlash及NANDFlash上执行引导程序 为了支持NANDFlash的系统引导 S3C2410具有一个内部SDRAM缓冲器 当系统启动时 引导代码需要将NANDflash中程序内容拷贝到SDRAM中 然后系统自动执行这些载入的引导代码 从NANDFlash启动要通过引脚OM 1 0 进行选择 当选择OM 1 0 00时 处理器通过NANDFlash启动 OM 1 0 01或10时 处理器通过NORFlash启动 图5 1所示是S3C2410NANDFlash控制器的方块电路图 5 1NandFlash控制器 NANDFlash启动过程S3C2410支持从NANDFlash引导系统 这是通过内置的SRAM及自动引导控制逻辑实现的 在系统加电时 自动引导控制逻辑自动把NASRNDflash的最前面的4k内容会被自动地复制到内部SRAM中 使用这4kb代码来把更多的代码从NANDFlash中读到sdram中去 然后执行SRAM中的指令 这4kb的程序一般实现CPU GPIO Memory Clock Watchdog Uart等的初始化 然后把4kb后面的程序复制到SDRAM 然后跳转到SDRAM入口实现系统的引导 5 1NandFlash控制器 自动引导过程 1 复位完成 2 NANDFlash的前4kb被拷到内部SRAM 3 SRAM被映射到GCS0 BANK0 4 CPU从内部SRAM开始执行程序NANDFlash操作过程NANDFlash的操作通过NFCONF NFCMD NFADDR NFDATA NFSTAT和NFECC这六个寄存器来完成 具体操作步骤如下 1 配制NANDFlash控制寄存器NFCONF 2 写NANDFlash命令到NFCMD寄存器 3 写NANDFlash地址到NFADDR寄存器 4 通过NFSTAT寄存器检查NANDFlash状态实现读 写操作 5 1NandFlash控制器 5 1 3NANDFlash存储器接口图5 2是NAND lash存储器接口示意图 5 1NandFlash控制器 图5 中 NANDFlash的管脚配置如下 D 7 0 数据 命令 地址 的输入 输出口 与数据总线共享 CLE 命令锁存使能 输出 ALE 地址锁存使能 输出 nFCE NANDFlash片选使能 输出 nFRE NANDFlash读使能 输出 nFWE NANDFlash写使能 输出 R nB NANDFlash准备好 繁忙 输入 S3C2410的内存片选有8个片选 BANK 在U Boot中 要配制SDRAM和FLASH的BANK数 如果SDRAM或者FLASH就接了n个片选的时候 就定义为n 如n为8 即BANK8 图5 3是S3C2410的内存映射图 S3C2410和其他的大部分的处理器一样 支持NorFlash和NANDFlash启动 而这两种启动方式内存所映射的地址不相同 5 1NandFlash控制器 在图5 3中BANK6 BANK7对应的地址空间与BANK0 5不同 BANK0 5的地址空间都是固定的128M 地址范围是 x 128M 到 x 1 128M 1 x表示0到5 但是BANK7的起始地址是可变的 您可以查找S3C2410数据手册第5章 获取BANK6 7的地址范围与地址空间的关系 5 1NandFlash控制器 5 1 4NANDFlash相关寄存器1 NANDFlash相关寄存器概述前面已经谈到 NANDFlash的操作通过设置NFCONF NFCMD NFADDR NFDATA NFSTAT和NFECC这六个寄存器来完成的 下面首先讨论NANDFlash这些寄存器的一些性质 这对嵌入式程序设计至关重要 表5 1列出了NANDFlash相关寄存器的地址 读写情况与功能的描述 其中 FCONF是NANDFlash的配置寄存器 NFCMD是NANDFlash命令寄存器 CPU通过此寄存器向NANDFlash传递控制命令 NFADDR是NANDFlash地址寄存器 CPU通过此寄存器向NANDFlash传递地址 5 1NandFlash控制器 NFDATA是NANDFlash数据寄存器 CPU通过此寄存器向NANDFlash传递数据 NFSTAT是NANDFlash状态寄存器 CPU通过读取该寄存器获取NANDFlash当前状态 NFECC是NANDFlashECC寄存器 实现循环校验功能 definerNFCONF volatileunsigned 0 x4e000000 definerNFCMD volatileunsigned 0 x4e000004 definerNFADDR volatileunsigned 0 x4e000008 definerNFDATA volatileunsigned 0 x4e00000c definerNFSTAT volatileunsigned 0 x4e000010 definerNFECC volatileunsigned 0 x4e000014 5 1NandFlash控制器 NANDFlash相关寄存器应用 NFCONF寄存器NFCONF寄存器的地址是0 x4e000000 表5 2所示是NFCONF寄存器属性值设置 相对应位的默认值 功能设置位的表示 5 1NandFlash控制器 NANDFlash需要初始化 在一般情况下要使NANDFlash使能 15 12 设置为0b1111 CLE和ALE持续时间设置为HCLK 因而 11 8 0b1000 TWRPH0持续为3 即位 7 4 设置为0b0011 如果把TWRPH1值设为0 即把NFCONF初始化为0 xf830 例如 设置第11位为0 使NANDFlash使能 NFCONF 5 1NandFlash控制器 NFCMD寄存器NANDFlash的命令寄存器NFCMD的地址是0 x4e000004 表5 3所示是NFCMD寄存器属性值设置 相对应位的默认值 功能设置位的表示 NFCMD寄存器中 对于不同型号的Flash 操作命令一般不同 例如 NFCONF 1 11 发出片选信号NFCMD 0 xff 在K9F1208U0M存储器中表示reset命令 5 1NandFlash控制器 NFADDR寄存器NANDFlash地址寄存器NFADDR的地址是0 x4e000008 表5 4所示是NFADDR寄存器属性值设置 相对应位的默认值 功能设置位的表示 例如 NFADDR addr 0 xffNFADDR addr 9 0 xff 5 1NandFlash控制器 4 NFDATA寄存器NANDFlash数据寄存器NFDATA的地址是0 x4e00000C 表5 5所示是NFDATA寄存器属性值设置 相对应位的默认值 功能设置位的表示 5 1NandFlash控制器 5 NFSTAT寄存器NANDFlash状态寄存器NFSTAT地址是0 x4e000010 表5 6所示是状态寄存器NFSTAT属性值设置及相对应位的初始值表示 5 1NandFlash控制器 6 ECC寄存器NANDFlashECC寄存器NFECC的地址是0 x4E000014 表5 7所示为ECC寄存器位功能与设置描述 5 1NandFlash控制器 5 1 5NANDFlash寄存器设置实例为了便于理解 下面用一个具体的例子对NANDFlash各寄存器进行设置 开始时NANDFlash控制器是不工作的 片选信号也没有激活 nFCE 1 然后使NANDFlash使能 并激活片选信号 然后设置TACLS TWRPH0 TWRPH1 TACLS TWRPH0 TWRPH1这三个参数是控制NANDFlash信号线CLE ALE和写控制信号nWE的时序关系的 要参照具体的flash芯片手册来设置 分析 此时要把NANDFlash中NFCONF寄存器初始化为0 xf830 设置第11位为0 5 1NandFlash控制器 因而NANDFlash寄存器设置的主要过程如下 1 NFCONF 0 xf830 2 NFCONF 4 对NFADDR操作 5 循环查询NFSTAT位0 直到它为1 6 连续读NFDATA寄存器512次 得到一页数据512B 7 NFCONF 0 x800 禁止NANDFlash下面结合源码来详细的分析具体如何操作这6个寄存器来被完成以上4个步骤来完成读过程 5 1NandFlash控制器 1 先要初始化NandFlash函数reset nand首先使NandFlash使能 紧接着复位 voidreset nand inti 0 NFCONF 5 1NandFlash控制器 初始化NANDFlash中要把NFCONF设定为0 xf830 作用是使能NANDFlash控制器 初始化ECC NANDFlash片选信号nFCE 1 inactive 真正使用时再让它等于0 设置TACLS TWRPH0 TWRPH1 voidinit nand NFCONF 0 xf830 reset nand 初始化NANDFlash之后 就可以把stage2的main函数代码拷贝到SDRAM中去执行 当然之前已经配置好了SDRAM 以上工作都是在stage1阶段 片内SRAM中 完成的 之后就可以读写NANDFlash了 5 1NandFlash控制器 下面分析读操作的实现nand read c源码 include define REGb x volatileunsignedchar x define REGi x volatileunsignedint x defineNF BASE0 x4e000000 defineNFCONF REGi NF BASE 0 x0 defineNFCMD REGb NF BASE 0 x4 defineNFADDR REGb NF BASE 0 x8 defineNFDATA REGb NF BASE 0 xc d
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号