(2)通过ATASetTransferMode()配置硬盘的传输方式;
(3)通过ATAExecuteDeviceDiagnostic()该函数来获取硬盘的信息,执行该函数后硬盘会返回512个字节的数据,其中就包括硬盘的相关信息,例如硬盘容量,生产商,序列号,柱面数,磁头数,扇区数等;如果没有返回这512个字节的数据,那么就说明硬件上的电路或者程序存在问题;这个步骤必须通过,否则之后的工作无法进行;
(4)在完成以上3步后,就基本上可以对硬盘进行直接的读写操作了,采用
ATARead(UINT32start_sector,UINT32sector_count,UINT8*sector_data),
ATAWrite(UINT32start_sector,UINT32sector_count,UINT8*sector_data)
这两个函数对硬盘进行读写,在测试时必须注意,硬盘属于块设备,以扇区为单位,每个扇区512个字节,所以读写的数据量都是512的整数倍,也就是说,即使写一个字节的数据,对硬盘来说就是写一个扇区,读亦然。
2文件系统
为了增强应用程序的可移植性,同时为了方便对硬盘中的文件进行读写,必须对这些文件进行管理,对文件进行管理的软件以及被管理的文件被称为文件系统。从系统的角度看,文件系统是对存放文件的存储空间进行组织、分配,负责文件的读写,并对存入的文件进行保护和检索的系统,而从用户的角度看,文件系统为用户提供了按“名字”存取的机制。文件系统设计直接关系到对硬盘访问的性能,文件系统在PVR机顶盒中占有非常重要的作用。
在机顶盒的硬盘中进行文件的存取具有以下的特点。
(1)目前的机顶盒大多数是在嵌入式系统上实现,嵌入式系统的资源有限;
(2)机顶盒的硬盘中存放的大多都是音、视频文件,而音、视频文件一般来说都比较大;
(3)机顶盒存放的音、视频文件、数据文件是从有线电视网络中接收的,音、视频数据在网络中传输的速度较快。
因此其文件系统的设计应从以下几方面进行考虑。
2.1硬盘空间的管理
目前的硬盘可以容纳几十GB的数据,要把一个文件存放到硬盘,首先要考虑的是把这些数据存放到硬盘的什么地方,这就需要建立一个管理磁盘空间的登记表,它记录在硬盘中,那些地方已存数据,哪些地方未存数据。
其次,文件系统存放数据一般都是以簇为单位的,簇的大小一般为扇区大小的整数倍,因此,文件都是以簇为单位来分配磁盘空间的,簇大小的确定对于文件系统的性能有重要的影响,簇太大,那么一个文件即使只有一个字节,也要占据一个簇的空间,簇太小,一个文件有很多块组成,每读写一个磁盘块,都有寻道延迟和旋转延迟,从而导致文件的读写速度变慢。