基本原理
图1所示的CF卡中,主机系统的控制器接口允许数据从Flash介质读写。CF卡的存取方式有三种:Memory方式、I/O方式以及True IDE方式。我们选择的是True IDE方式。需要注意的是,当主机电源一直接通时,拔插CF卡将会使其从原来的True IDE方式重新配置成PC Card ATA方式。所以要让CF卡一直工作在True IDE,需要在电源加电启动时将OE输入信号接地。此方式也支持8位存取,但我们选择了16位存取。一次最多存取的扇区数可由命令码Ech中的第47参数字决定。

图1:CompactFlash卡框图
CF卡跟硬盘的结构相同,如图2所示。在引导区中装有用于启动系统的代码,以及有关文件系统的重要信息,随后是记录所有磁盘空间的表,再下来就是根目录,然后是所有其它的东西。引导扇区在其末尾处包含有分区表。此表包含了用以标示每个分区开始和结束的表项,最多可以有四个分区,每个分区可包含不同的文件系统。紧随引导区之后的是FAT(文件分配表),用来记录设备中所有的磁盘空间的信息(此表与UNIX中的I-node表和空闲表具有相同的功能)。

图2:CF卡结构
设计软件时,同时考虑了通用性及可扩展性,目的在于使该文件系统无需分别修改便能够对CF卡、IDE硬盘、RAM Disk、电子盘、SD等不同的存储介质进行操作;读出这些存储介质中的数据,并且可以将数据输送到不同存储设备上。
为了达到这些目的,我们针对不同CPU的不同处理方法,对硬件操作程序进行分离,将设备有关的底层程序变成与设备无关的上层操作。这样,当系统新增功能之后,不必更改每个子程序,只需要在某些接口文件的数据结构中添加或者更改数据项即可;又考虑到用户对上层操作的透明性,我们采用面向对象的方法,上层结构中存取操作的driver结构(含read、write数据项)是虚拟的,在底层才将它具体化为CF卡的读写扇区命令(操作码为:20h、30h)。
软件程序的主要流程如图3所示。

图3:CF卡加载流程
基本原理
图1所示的CF卡中,主机系统的控制器接口允许数据从Flash介质读写。CF卡的存取方式有三种:Memory方式、I/O方式以及True IDE方式。我们选择的是True IDE方式。需要注意的是,当主机电源一直接通时,拔插CF卡将会使其从原来的True IDE方式重新配置成PC Card ATA方式。所以要让CF卡一直工作在True IDE,需要在电源加电启动时将OE输入信号接地。此方式也支持8位存取,但我们选择了16位存取。一次最多存取的扇区数可由命令码Ech中的第47参数字决定。

图1:CompactFlash卡框图
CF卡跟硬盘的结构相同,如图2所示。在引导区中装有用于启动系统的代码,以及有关文件系统的重要信息,随后是记录所有磁盘空间的表,再下来就是根目录,然后是所有其它的东西。引导扇区在其末尾处包含有分区表。此表包含了用以标示每个分区开始和结束的表项,最多可以有四个分区,每个分区可包含不同的文件系统。紧随引导区之后的是FAT(文件分配表),用来记录设备中所有的磁盘空间的信息(此表与UNIX中的I-node表和空闲表具有相同的功能)。

图2:CF卡结构
设计软件时,同时考虑了通用性及可扩展性,目的在于使该文件系统无需分别修改便能够对CF卡、IDE硬盘、RAM Disk、电子盘、SD等不同的存储介质进行操作;读出这些存储介质中的数据,并且可以将数据输送到不同存储设备上。
为了达到这些目的,我们针对不同CPU的不同处理方法,对硬件操作程序进行分离,将设备有关的底层程序变成与设备无关的上层操作。这样,当系统新增功能之后,不必更改每个子程序,只需要在某些接口文件的数据结构中添加或者更改数据项即可;又考虑到用户对上层操作的透明性,我们采用面向对象的方法,上层结构中存取操作的driver结构(含read、write数据项)是虚拟的,在底层才将它具体化为CF卡的读写扇区命令(操作码为:20h、30h)。
软件程序的主要流程如图3所示。

图3:CF卡加载流程
举报