0 引 言
随着嵌入式系统的迅速发展,其应用环境的广泛性,复杂性对构建于系统上的Nor和Nand闪存设备提出更高要求,需要闪存设备传输速度更快,体积更小,容量更大,稳定性更好。该文在基于Samsung公司的S3C2410处理器平台上,针对FLASH闪存设备在嵌入式系统中的应用,详细分析FLASH闪存设备的接口设计方法,并针对FLASH接口特点,提出Linux环境下NorFLASH和 NandFLASH的驱动开发流程,给出详细的代码分析。
1 NandFLASH和NandFLASH对比
随着存储技术的高速发展,闪存设备因其在性能和成本方面的优势,如非易失性,可擦除性以及更低廉的价格正逐步取代传统记忆体。目前常用闪存是Nor-FLASH和NandFLASH。它们的技术性能差异显著,表1是它们的技术对比。
NorFLASH使用方便,易于连接,可以在芯片上直接运行代码,稳定性出色,传输速率高,在小容量时有很高的性价比,这使其很适合应于嵌入式系统中作为 FLASH ROM。相对于NorFLASH,NandFLASH强调更高的性能,更低的成本,更小的体积,更长的使用寿命。这使NandFLASH很擅于存储纯资料或数据等,在嵌入式系统中用来支持文件系统,在该S3C2410平台上用以支持bon文件系统。
然而FLASH闪存却是保证数据正确性不太理想的设备,应用中可能出现坏块;这就给其在嵌入式系统中的应用,如何更好地进行数据存储管理提出了更高要求。恰当的接口设计和驱动开发是解决问题的关键,本文基于S3C2410,详细分析FLASH接口设计和驱动开发流程。
2 FLASH接口设计
2.1 处理器内存分配情况
在分析FLASH的接口以及工作模式前,先分析处理器的内存分配情况。内核ARM920T是32位处理器,寻址空间4 GB,3 GB被处理器内部的寄存器和一些其他设备占用,只有1 GB用于外部寻址;这1 GB的空间S3C2410分为8个部分以支持不同的设备,每个空间为128 Mb,被命名为BANK。S3C2410给每个BANK一个片选即nGCS0~nGCS7来方便对BANK的操作,将CPU上相应的BANK连线接到外设芯片的片选引脚上就可以根据相应的地址对存储器进行控制。
2.2 FLASH在系统中的架构
FLASH模块通过系统总线与处理器相连,如图1所示。
为了拥有高速的数据交换通道,FLASH经由控制器模块通过AHB总线与处理器通信。NandFLASH控制器、NorFLASH控制器和DMA控制器都是高速总线AHB上的Master模块,都包含符合AMBA标准的总线接口模块与AHB交互工作。FLASH工作时,FLASH控制器模块和DMA控制器模块相互协作,完成各种操作。