CF卡接口设计.docx

上传人:b****5 文档编号:8519538 上传时间:2023-01-31 格式:DOCX 页数:26 大小:301.98KB
下载 相关 举报
CF卡接口设计.docx_第1页
第1页 / 共26页
CF卡接口设计.docx_第2页
第2页 / 共26页
CF卡接口设计.docx_第3页
第3页 / 共26页
CF卡接口设计.docx_第4页
第4页 / 共26页
CF卡接口设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

CF卡接口设计.docx

《CF卡接口设计.docx》由会员分享,可在线阅读,更多相关《CF卡接口设计.docx(26页珍藏版)》请在冰豆网上搜索。

CF卡接口设计.docx

CF卡接口设计

华中师范大学

本科毕业论文(设计)

题目基于M16C的CF卡文件系统的研究

院(系)物理学院

专业电子信息科学与技术

年级2000级

学生姓名刘利娇

学号001683

指导教师黄光明

 

二00四年六月

摘要………………………………………………………………………2

Abstract…………………………………………………………………..3

一、引言………………………………………………………………...4

二、硬件接口设计………………………………………………………4

(一)存储卡介绍………………………………...................…………..4

(二)三菱单片机M16C62简介……………………………………….6

(三)接口设计……………………......................................…………7

三、系统软件构成………………………………………………………..9

(一)访问CF卡控制器的原理…………………………….……….9

(二)CF卡的读写时序………………………………….……………13

(三)文件系统的数据结构…………………………………………….15

(四)系统程序设计………………………………………………..24

四、测试过程与结论……………………………………………….28

(一)测试过程………………………………………………………..28

(二)总结……………………………………………………………….30

参考文献………………………………………………………………...31

 

摘要:

CF卡是大容量的闪存卡,由于其存在的诸多优点而被广泛应用。

本文介绍了CF卡的基本结构和工作原理,并详细介绍了磁盘文件系统的结构特点,结合三菱电机公司生产的M16C/62单片机,详细说明了M16C/62与CF卡接口设计中的关键软硬件技术,设计了M16C/62与CF卡的接口电路和系统软件。

本文的另一个工作重点是实现了FAT12格式的文件系统,完成了基M16C/62对CF卡的文件读写即数据管理等多种功能,用基于WINDOWS的读卡器验证了文件读写的正确性。

最后本文讨论了CF卡TrueIDE模式作为文件系统在嵌入式系统中的应用优势。

关键词:

CF卡文件系统单片机M16C

 

Abstract:

CFcardisaflashmemorywhichhasbigcapacity,itiswidelyappliedbecauseofit’sagoodmanyvirtues.ThepaperintroducesthebasicstructureandoperationalofCFcard,andintroducesthestrctureofdiskfilesystemdetailedly.CombiningM16C/62madebyMitsubishicompanythepaperilluminatesthesoftwareandhardwareteconologyinthedesignorofinterfacebetweenM16C/62andCFcarddetailedly.Andtheinterfaceandsystemsoftwarearedesigned.InaccordancewithFAT12format,TheCFcardfilesystembasedM16C/62isimplemented.Thesystemhasbeencheckedwithreadcarddevicebasedwindows.Finally,thepapernarratesthepredominanceofCFcardfilesystembasedTrueIDEmodeininlaidsystem.

Keywords:

CFcard;Filesystem;singlechipprocessor;M16C; 

 

一、引言

随着微控制器的不断发展,嵌入式系统的应用越来越广泛。

目前市场上常用的大型商用嵌入式操作系统,虽然其支持文件系统,但其价格昂贵,而且都是针对特定的硬件平台,要占用一定额外的小型系统开发,对中小型系统开发(传统的嵌入式系统并不包括文件系统),购买商用实时系统并不划算。

另外,CF卡一般用在数码相机、掌上电脑、MP3等设备里面,CF卡由于具有体积小、容量大、读写速度快、兼容性强、价格相对低廉等诸多优点,在数码设备上的应用越来越广泛,但若想在CF卡与PC机之间传递数据,通常不得不借助于读卡器,这给PC的用户带来不少麻烦,由于CF卡内部采用模拟硬盘控制器的设计,使得CF卡可以比较容易地通过IDE接口实现与电脑的连接,一定程度上起到了移动存储的作用。

一般的嵌入式系统不会提供读写CF卡的接口,所以需要在嵌入式系统中专门设计驱动程序。

目前对CF卡实现文件系统的研究并不多见,仅有人研究过ARM7系统、8051、DSP对CF卡文件格式的实现,本文将用三菱M16C/62单片机对其进行寻址和读写操作,以便嵌入式系统与PC机交换数据。

二、硬件接口设计

(一)存储卡介绍

闪存卡功耗低、容量大、体积小、可靠性高、可多次重写等优点,使其成为不少中小型应用系统中存储介质的首选。

常见的闪存卡有CompactFlashCard(CF),SmartMediaCard(SM),MultiMediaCard(MMC),SecureDigital(SD)及MemoryStick(索尼记忆棒)5种,其中CF卡已经有了相当长的历史,由于其建立标准的时间长、兼容性好、容量大、价格低等原因而得到了广泛的应用,是通用性最强的存储卡之一。

  CF卡的全称为“CompactFlash”卡,意为“标准闪存卡”,简称“CF卡”,CompactFlash技术是由CompactFlash协会(CFA)提出的一种与PC机ATA接口标准兼容的技术,CFA由CF技术的主导者组成,不过CF和CF+技术并没有技术和权利金障碍,这也是其得到普及的重要原因之一。

CFA是1995年成立的,而CF卡的历史还要早一些,CF卡最先由SanDisk公司于1994年推出,现已成为一种工业标准。

CF卡因包含了针对存储器的控制电路而较SM卡稍厚,但其内置控制电路大大简化了应用时外围的控制电路设计(见图1)。

 

主机接口

 

图1CF卡结构示意图

二、CF卡的特点

CF卡的主要特点如下:

①体积小。

CF卡形如一本袖珍书,重量仅为15g,尺寸为43mm(117英寸)×36mm(114英寸×313mm(0113英寸);

②支持5V/3.3V双重电压,无须电池永久保存内部数据;

③基于块擦除技术设计,每次读写为一个扇区;

④完全符合PCMCIA-ATA接口规范,支持多种接口访问模式,如MemoryMapped模式、I/OCard模式和TrueIDE模式;

⑤内置智能控制器,使外围电路设计大大简化,而且不同的CF卡都可以用单一的机构来读写,不用担心兼容性问题;

⑥固态产品,没有可移动部件,可靠性好;

⑦访问速度快,数据突发传输率高达16MB/s;

⑧容量范围从4M到2G,满足用户不同需求。

(二)三菱单片机M16C62简介

三菱M16C簇单片机是1996年才推出的一种新型的16位单片机。

该单片机基于新的设计理念,为客户提供完整的系统支持。

该单片机具有超低功耗、极强的抗干扰能力和很高的C语言编程效率等特点,片内集成了10为A/D转换器、DMA控制器、异步通信通道、定时器等丰富的周边功能电路模块,适用于非常广泛的应用领域。

M16C单片机有如下性能特点

处理速度高

M16C单片机具有很多功能强大的指令,其指令周期很短,71%的操作指令在三个周期内完成,因此其处理速度高。

编程效率高

由于M16C既有一般的指令格式,又有紧凑的指令格式,无论是面向计算类应用,还是面向控制类应用,程序都可以做到简介紧凑。

使用C语言编程时,其目标程序的效率很高,达到同领域内最高水平。

地址空间大

M16C簇(M16C/80除外)提供1MB的无64KB边界限制的线性存储空间。

对于M16C/80则扩大到16MB。

内置多种功能控制模块

考虑到多样化的应用,片内具有多种接口功能。

内置大容量存储器、DMAC电路、多功能的串行I/O、CRC校验电路等。

低工作电压,低功耗

在3V电压,7MH工作频率,1等待方式工作时,功耗为18mW。

抗外部干扰能力强

对外界干扰弱

程序纠正功能

M16C单片机可使用地址匹配中断来纠正程序的缺损,至少可以纠正两处缺损。

该两地址用外部EEPROM中的内容来代替。

提供FLASH型产品

改善的系统开发环境

(三)接口设计

1、CF卡接口规定

CF卡采用间距50mil的50针脚双列封装,其电气特性符PCMCIA-ATA规范。

其连接装置与PCMCIA卡相似,只不过CF卡是50引脚,而PCMCIA是68引脚,可以很容易插入无源68引脚TYPE

适配卡,并完全符合PCMCIA电力和机械规格。

CF卡的操作与标准的IDE接口操作基本类似,转换后即成为标准的IDE接口,给编程可以带来不少方便。

本设计实现用单片机对CF进行简单的读写后,还进一步将存储数据内容按照Windows标准文件格式写入CF卡,通过读卡器可将写入CF的内容以标准文件形式读出。

CF卡有50个引脚,可以转化成为标准的40引脚IDE接口(本文即采用这个方法),其接口定义如下表一。

表一CF卡TrueIDE模式管脚定义

管脚号

名称

管脚号

名称

管脚号

名称

1

GND

18

A2

35

-IOWR

2

D3/I/O

19

A1

36

-WE

3

D4/I/O

20

A0

37

INTRQ

4

D5/I/O

21

D0/I/O

38

VCC

5

D6/I/O

22

D1/I/O

39

-CSEL

6

D7/I/O

23

D2/I/O

40

-VS2

7

-CS0

24

-IOIS16

41

-Reset

8

A10

25

-CD2

42

IORDY

9

-OE

26

-CD1

43

-INPACK

10

A9

27

D11/I/O

44

-REG

11

A8

28

D12/I/O

45

-DASP

12

A7

29

D13/I/O

46

-PDIAG

13

VCC

30

D14/I/O

47

D8/I/O

14

A6

31

D15/I/O

48

D9/I/O

15

A5

32

-CS1

49

D10/I/O

16

A4

33

-VS1

50

GND

17

A3

34

-IORD

2、M16C62与CF卡的接口设计

该设计中采用M16C/62单片机作为CPU,M16C/62为16位的单片机,其存储空间有多种模式,在此采用微处理器模式,其存储空间分配图如下表所示。

表二微处理器模式

00000H-003FFH

SFR区

00400H--

内部RAM区

--03FFFH

内部RAM保留区

04000H—07FFFH

外部存储器

--CS3(16KB)

08000H—27FFFH

外部存储器

--CS2(128KB)

28000H—2FFFFH

外部存储器

--CS1(32KB)

30000H—FFFFFH

外部存储器

--CS0(832KB)

本设计中,采用静态随机存储器(SRAM)作为外部的RAM,选取CY7C1021B,其片选信号连接到-CS2,16位的FLASH芯片AT29C1024作为外部ROM,存储程序代码,其片选信号连接到-CS0,而CF卡则通过74HC138译码器连到-CS3。

对CF卡的控制信号靠锁存器74F273锁存,然后提供给CF卡,而CF卡要反馈给CPU的信号通过74F244传送给CPU的数据总线,即CF卡的控制信号等并不与CPU直接相连。

电路图这样设计的特点是便于日后扩展,所以CF卡与CPU的连接并不占用I/O口,只占用其地址空间。

接口电路图如图2。

三、系统软件构成

(一)访问CF卡控制器的原理

CF卡存储空间的寻址是通过命令寄存器组和控制寄存器组来实现的。

命令寄存器组用来给磁盘驱动器发送命令和数据交换,控制寄存器组用来控制磁盘驱动器。

在TrueIDE方式时,这两组寄存器组通过CS0和CS1信号来区分。

CS0选通命令寄存器组,CS1选通控制寄存器组。

下面简要介绍各命令寄存器:

数据寄存器(R/W):

这是一个16位数据寄存器,用于对扇区的读写操作。

主机通过该寄存器向CF卡控制器写入或从CF卡控制寄存器读出扇区缓冲区的数据。

错误寄存器(R)和特性寄存器(W):

错误寄存器反映控制寄存器在诊断方式或操作方式下的错误原因。

特性寄存器一般不使用。

错误寄存器只用于读,而特性寄存器只用于写。

图2(a)CF卡与单片机接口电路图

图2(b)CF卡与单片机接口电路图

扇区数寄存器(R/W):

用来记录一次读写命令的扇区数目。

扇区号寄存器(R/W):

用来记录读、写和校验命令指定的起始扇区号。

在LBA方式时,其记录的是LBA地址的低8位。

柱面号寄存器(R/W):

由两个8位的寄存器组成,分别用来记录读、写、校验和寻址命令指定的柱面号的低8位和高8位。

在LBA方式时,其记录的是LBA地址的8~23位。

驱动器/磁头寄存器(R/W):

记录读、写、校验和寻道命令指定的驱动器号、磁头号和寻址方式(CHS模式或LBA模式)。

在LBA方式时,其记录的是LBA地址的高4位。

状态寄存器(R)和命令寄存器(W):

状态寄存器反映CF卡驱动器执行命令后的状态,读该寄存器要清除中断请求信号。

命令寄存器接收主机发送的CF卡工作的命令控制字。

A0,A1,A2是CF卡的寄存器寻址线,它们连接的并不是内存寻址空间。

CF卡内部空间的寻址是通过扇区号寄存器、柱面号寄存器和磁头号寄存器的数据来来标识不同的寄存器。

CF卡的读写是通过卡内的缓冲区进行的,不支持直接读写存储区域,读取数据时,存储卡中的智能控制电路先把数据写入缓冲区,然后外部系统才能通过读缓冲区将数据读取出来。

写数据时,外部系统先把数据写入缓冲区,写满后,CF卡将缓冲区的内容自动读入存储区域。

缓冲区为一个FIFO结构。

缓冲区的读写以顺序读写的方式进行,不支持随机存取方式,系统只能一次性地按顺序读完或写完所有512字节。

对CF卡来说,写操作时某一个地址对应的是一个寄存器,而读操作时访问的是另外一个寄存器。

在读写访问时,IDE接口(转化后的CF卡)有两种工作方式:

LBA(逻辑块地址)和CHS(柱面/磁头/扇区)。

工作在不同方式时,扇区号寄存器、柱面号寄存器和磁头寄存器表示的内容是不同的。

在LBA方式下,系统隐藏扇区是不能访问的,能访问的扇区从物理的0柱面、0磁头、1扇区开始,而该扇区在LBA方式下为第0号扇区。

所有的扇区依次统一编号。

CHS(柱面/磁头/扇区)寻址时,直接输入相应的柱面/磁头/扇区数值就可以了。

在LBA访问方式时,要将所要访问的逻辑扇区值转换成相应的物理磁道、柱面和扇区号。

下面详细说明。

物理扇区号=(逻辑扇区号MOD每道扇区数)+1

物理磁头号=(逻辑扇区号÷每道扇区数)MOD磁头数

物理磁道号=逻辑扇区号÷(每道扇区数×)磁头数

同样,有物理扇区与逻辑扇区的换算关系得出逻辑扇区与物理扇区参数的关系,如下

逻辑扇区号=(物理扇区号-1)+物理磁头号×每道扇区数+物理磁道号×每道扇区数×磁头数

CF卡的地址寄存器的内容都是8位的,通过16位数据线的低8位传送。

地址寄存器内容填好后,接下来就是通过数据寄存器在缓冲区和单片机之间传输16位数据了。

必须注意的是,CF卡能寻址的最小单位是扇区,所以每次至少要写入512字节(一个扇区的容量),同时,在文件格式中必须以簇进行寻址,所以实际上写入的应该是一个簇的容量,本文用到的CF卡是格式化成四扇区为一簇,于是,实际一次写入的数据是2KB。

如果想改变其中部分甚至个别的字节,就需要把要修改的整个簇读到自己的缓冲区中,在缓冲区中修改好以后,再整体写入到磁盘中去。

在进行数据传输时,必须先把传输需要的地址信息发送到地址线上,即通过CS0、CS1、A0~A2五根信号线。

然后通过命令寄存器发出读写信号。

如果是读,CF卡会把需要的数据发送到数据线上,如果是写,应该在数据线上准备好数据。

在读写信号取消之前,数据必须一直保持有效状态。

在有错误发生的时候,错误寄存器会返回相应的诊断码。

(二)CF卡的读写时序

 若是读写一扇区数据,过程如下:

首先,主机把执行命令过程中所需要的所有参数发送到地址寄存器和特性寄存器中,然后,主机再把操作码发送到命令寄存器中以开始读操作。

驱动器首先设置状态寄存器中的BSY信号,并把要传输的数据发送到扇区缓冲区。

扇区缓冲区准备完毕之后,驱动器设置DRQ数据请求信号,请求与主机交换数据,同时清除BSY忙信号。

与此同时,发送INTRQ中断请求信号。

然后,主机开始读取状态寄存器,同时驱动器清除INTRQ中断请求信号。

DRQ数据请求信号通知主机可以从缓冲区中读取512字节的数据。

写操作与此基本类似。

设计中使用LBA寻址方式,CF卡一扇区数据读写流程见图3

 

N

 

NY

Y

图3CF卡数据读写流程

若是连续读写多个扇区,则在第一个扇区的数据传送完之后,BSY被设置,DRQ被清零,下一个buffer准备好之后,BSY清零,DRQ被设置并产生中断,当最后一扇区的数据被传送后,BSY被设置,DRQ被清零,然后CF卡一直保持为该状态直至命令完成,该命令完成后,BSY清零,产生中断。

(三)文件系统的数据结构

写入到CF卡的文件需要使用通用的读卡器在PC机的操作系统中读出来,所以写入的格式必须是标准文件格式。

物理上CF卡由扇区组成,每扇区512字节,为了管理方便,本CF卡文件系统中将物理空间划分为多个大小相同被称为簇的逻辑块,指定每簇大小的2048字节,即由4个连续的扇区组成。

按照实现FAT12的需要将CF卡的逻辑结构划分,如表三所示。

表三CF卡的逻辑结构划分

主引导驱

引导区

FAT表1

FAT表2

目录表

数据区

0个扇区

1个扇区

按容量可变

按容量可变

32个扇区

按容量可变以簇位单位

1、引导区

 主引导区从CF卡上的物理第一个扇区开始,存放引导程序用于启动和引导操作系统,同时存放CF卡的主分区表,记录卡的分区信息。

在本系统中CF卡只作为一个存储介质使用,且将整个卡作为一个分区处理,故主引导区可以忽略。

引导区位于文件系统开头,占用1扇区,其位于保留扇区的第一个扇区。

在引导区中记录CF卡的逻辑结构信息和介质标志等,PC系统每次访问CF卡时,都要对引导区内的信息进行识别,以确定正在访问的CF卡的规格。

如表四所示

表四BOOT区参数说明

字节序号

二进制内容

所指含义

0-A

EB3C904D5357494E342E31

引导程序跳转地址的和OEMID名称

B-C

0002

每个扇区字节数(0200H)

D

02

每簇扇区数(04)

E-F

0100

保留扇区(0008)

10

02

FAT表的份数(02)

11-12

0002

根目录项数(0200H)

13-14

203D

扇区总数(磁盘逻辑扇区的总和)

15

F8

介质代码

16-17

0C00

每个FAT占用扇区数(12个)

18-19

0100

每磁道扇区数(1个)

1A-1B

0100

磁头数(1个)

1C-1F

2000000000

隐藏扇区数(32个)

20-25

000000000000

系统保留

26

1D

格式标志

27-2A

6EFD8A08

磁盘格式时间

2B-35

4E4F204E414D4520202020

磁盘的名称(NONAME)

36-3A

4641543132

FAT12

3B-3F

20202033C9

引导程序入口地址

1FE

55AA

标签

2、文件分配表

文件分配表(FAT)记录了CF卡上全部文件的物理位置。

FAT表的长度随CF卡容量的不同而有所不同。

操作系统按照实际需要,每次一簇地把空间分配给文件。

当创建文件,或已有文件扩充时,文件的分配空间增大。

当需要更多的空间时,操作系统需把另一簇分配给文件。

在理想情况下,文件存于一块连续的空间中。

尽管如此,实际文件可能分成一些不连续块,特别是在已有文件增加信息或新文件建于已删除文件所留空间的情况下。

所以一个文件的数据分散在盘的各处并非不常见。

所以存放在CF卡上的文件并不是占用连续的空间,而是根据分配算法来决定某一部分文件内容存放在哪个簇里,然后将这些簇连接起来构成一个完整的文件,FAT表作为文件物理地址链,是一个极其重要的数据结构,FAT表若遭遇损坏,整个卡上的文件都无法读取。

因此对FAT表做了一个备份,当FAT1损坏时,就继续使用FAT2。

文件分配表(FAT)是DOS的磁盘文件区中空间使用的映射。

FAT的组织很简单:

对文件区的每一簇,在FAT中都有一个入口点。

FAT的入口点可能包含的值在表五中列出。

若FAT入口点未标识为未用、保留、损坏的簇,那么对应于FAT入口点的簇就是文件的一部分,且FAT入口点的值本身也指出了文件中的下一簇。

表五FAT值

12位值

16位值

含义

0

0

未用的簇

FF0-FF6

FFF0-FFF6

保留的簇

FF7

FFF7

坏的簇

FF8-FFF

FFF8-FFFF

文件的最后一簇

其它值

文件的下一簇

这意味着属于一指定文件的空间由一串FAT入口点映射组成,其中每一点均指向链的下一点(参看图4)。

链中第一个簇的号是文件的目录入口点的开始簇号。

当文件创建或扩充时,分配簇给文件,通过搜集FAT,寻找未用的簇(即那些FAT入口点为0的簇),并把它们加入链中;反过来,当文件截短或删除时,DOS通过清除对应的FAT入口点来释放分配给文件的簇。

文件名扩展名起始簇

┌───┬──┬──────────┬──┬┐

目录项│ABCD│TXT││0003│

└───┴──┴──────────┴──┴┘

┌────────────────┘

│┌──────────┐┌──┐

↓│↓│↓

─┬──┬──┬──┬──┬──┬──┬──┬─

FAT│0000│0006│0000│0000│0000│0008│FFFF│

─┴──┴──┴──┴──┴──┴──┴──┴─

图4使用FAT分配盘空间

FAT可格式化成12位或

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1