当前位置:首页 > 单片机实现对CF卡的读写1
单片机实现对CF卡的读写
的地址不是连续的。Block1从F000H开始。上电后程序既可以从blockO(0000H)开始执行,也可以从block1(F000H)开始执行。单片机的Re-Map[1:0]位决定程序从哪块程序存储器开始执行。当这2位都为1时,程序从0000H开始执行,否则,从F000H开始执行。Re-Map[1:0]位是非易失性的,可以用编程器对其编程设置。CF卡的读写是通过卡内的缓冲区进行的.不支持直接读写存储区域。由于一次至少要读写一个扇区(512字节),所以目前多数做法都必须要借助于6116、6264等外部存储器,这样做不仅增加了成本,而且给软件设计带来了很多不便。在本系统设计中,利用SST89C54单片机的第二个内部程序存储器block1(4 Kbyte×8 bit)作为读写缓冲区,这样就可以巧妙地解决上述问题,同时也避免了通过单片机读写CF卡必须依赖外部存储器和地址存储器的弊端[1-3]。
广东海洋大学寸金学院
单片机实现对CF卡的读写
在该电路设计中还省去了地址锁存器的应用,而是将CF卡的AO、A1、A2引脚分别直接连接在微控制器的地址引脚A8(P2.0)、A9(P2.1)、A10(P2.2),经过验证,同样的代码对这两种硬件连接都适用。
5. FAT文件系统
5.1系统简介
FAT文件系统是基于DOS的文件系统。常说的FAT有12位的FAT12和16位的FAT16,另外就是32位的FAT32。考虑到CF卡的容量有限,宜选用FAT16。
5.2 系统原理及操作
磁盘的寻址方式有两种:物理寻址C/H/S(柱面/磁头/扇区)方式和逻辑块LBA(Logical Block Addressing)寻址方式。二者之间的转换关系为:
LBA地址=(柱面号×磁头数+磁头号)×扇区数+扇区数-1
采用LBA寻址方式,没有磁头和磁道的转换操作,在访问连续的扇区时,操作速度比物理寻址方式要快,而且也简化了对磁盘的访问。
硬盘的结构布局分为MBR(主引导扇区)和最多4个逻辑分区(含DOS分区或非DOS分区),而在DOS逻辑分区中的磁盘组织如下:
引导扇区 FAT1 FAT2 根目标区 数据区 广东海洋大学寸金学院
单片机实现对CF卡的读写
引导扇区DBR(DOS Boot Record):位于LBA 0扇区,包含跳转指令、厂商标识和DOS版本号、BPB(BIOS Parameter Block,BIOS参数块)、DOS引导程序、结束标志字AA55。其中BPB包含每扇区字节数、每簇扇区数、每个FAT扇区数、扇区总线、根目录项数等等参数。
FAT是给每个文件分配磁盘物理空间的表格。FAT16簇数的上限是2 16,即65536个,每簇扇区数的上限是64个,因此其分区空间的上限为2G。FAT1位于逻辑1扇区。FAT簇映射中,0000表示空簇,FFF0~FFF6备用,FFF8~FFFF表示簇链结束,FFF7表示坏簇,其余值表示其后续簇的簇号。图3所示的文件起始簇号为2,结束簇号为4,共占用2、3、4三个簇。
簇是存储文件的最小单位,可以包含多个扇区。当文件本身或文件的最后一簇哪怕只有1个字节,也要占去1簇。这样,当这种文件很多时,空间的浪费是很可观的。
文件目录表FDT(File Directory Table)是操作系统寻找文件的入口,其内容是每一个文件的目录。FDT中的每一个目录项由32个字节组成。前8个字节是文件名,不足时用空格填满。紧跟着的3个字节是文件扩展名,接下来是10个字节的系统保留字。然后是文件产生的时刻和日期占8个字节,再后的2个字节是文件首簇号,最后4个字节是文件大小。FDT的起始扇区可由FAT的
大小计算出,而FAT的大小可在DBR中读出。
广东海洋大学寸金学院
单片机实现对CF卡的读写
6. 软件实现
6.1实现CF卡读写
按照FAT16方式存储文件,是一个通用的解决方案。因为这样可以得到现有的DOS和Windows系统的支持,但是代价是浪费一部分空间,也就是说存储效率下降了。为了改善这一情况,采用了改进的存储方法。就是先创建一个空文件,并根据需要为其分配一个大的存储空间,写入动作只是从尾部追加数据。这样就避免了很多小文件的产生,既可以充分利用存储空间,又可以使地址连续。
CF卡的读写是通过卡内的缓冲区进行的,不支持直接读写存储区域。缓冲区为一个FIFO结构,读写顺序进行,不支持随机存取,系统只能一次性地按顺序读完或写完所有一个或多个扇区。
设计时使用LBA方式访问CF卡比较方便,读写时只需要先在相应的寄存器写入LBA地址即可。要设定LBA方式,需访问驱动器/磁头寄存器。内存模式下部分寄存器译码如表3所列。
表3 内存模式下部分寄存器译码
广东海洋大学寸金学院
共分享92篇相关文档