(2)通過ATASetTransferMode()配置硬盤的傳輸方式;
(3)通過ATAExecuteDeviceDiagnostic()該函數(shù)來獲取硬盤的信息,執(zhí)行該函數(shù)后硬盤會返回512個字節(jié)的數(shù)據(jù),其中就包括硬盤的相關(guān)信息,例如硬盤容量,生產(chǎn)商,序列號,柱面數(shù),磁頭數(shù),扇區(qū)數(shù)等;如果沒有返回這512個字節(jié)的數(shù)據(jù),那么就說明硬件上的電路或者程序存在問題;這個步驟必須通過,否則之后的工作無法進(jìn)行;
(4)在完成以上3步后,就基本上可以對硬盤進(jìn)行直接的讀寫操作了,采用
ATARead(UINT32start_sector,UINT32sector_count,UINT8*sector_data),
ATAWrite(UINT32start_sector,UINT32sector_count,UINT8*sector_data)
這兩個函數(shù)對硬盤進(jìn)行讀寫,在測試時必須注意,硬盤屬于塊設(shè)備,以扇區(qū)為單位,每個扇區(qū)512個字節(jié),所以讀寫的數(shù)據(jù)量都是512的整數(shù)倍,也就是說,即使寫一個字節(jié)的數(shù)據(jù),對硬盤來說就是寫一個扇區(qū),讀亦然。
2文件系統(tǒng)
為了增強(qiáng)應(yīng)用程序的可移植性,同時為了方便對硬盤中的文件進(jìn)行讀寫,必須對這些文件進(jìn)行管理,對文件進(jìn)行管理的軟件以及被管理的文件被稱為文件系統(tǒng)。從系統(tǒng)的角度看,文件系統(tǒng)是對存放文件的存儲空間進(jìn)行組織、分配,負(fù)責(zé)文件的讀寫,并對存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng),而從用戶的角度看,文件系統(tǒng)為用戶提供了按“名字”存取的機(jī)制。文件系統(tǒng)設(shè)計直接關(guān)系到對硬盤訪問的性能,文件系統(tǒng)在PVR機(jī)頂盒中占有非常重要的作用。
在機(jī)頂盒的硬盤中進(jìn)行文件的存取具有以下的特點。
(1)目前的機(jī)頂盒大多數(shù)是在嵌入式系統(tǒng)上實現(xiàn),嵌入式系統(tǒng)的資源有限;
(2)機(jī)頂盒的硬盤中存放的大多都是音、視頻文件,而音、視頻文件一般來說都比較大;
(3)機(jī)頂盒存放的音、視頻文件、數(shù)據(jù)文件是從有線電視網(wǎng)絡(luò)中接收的,音、視頻數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)乃俣容^快。
因此其文件系統(tǒng)的設(shè)計應(yīng)從以下幾方面進(jìn)行考慮。
2.1硬盤空間的管理
目前的硬盤可以容納幾十GB的數(shù)據(jù),要把一個文件存放到硬盤,首先要考慮的是把這些數(shù)據(jù)存放到硬盤的什么地方,這就需要建立一個管理磁盤空間的登記表,它記錄在硬盤中,那些地方已存數(shù)據(jù),哪些地方未存數(shù)據(jù)。
其次,文件系統(tǒng)存放數(shù)據(jù)一般都是以簇為單位的,簇的大小一般為扇區(qū)大小的整數(shù)倍,因此,文件都是以簇為單位來分配磁盤空間的,簇大小的確定對于文件系統(tǒng)的性能有重要的影響,簇太大,那么一個文件即使只有一個字節(jié),也要占據(jù)一個簇的空間,簇太小,一個文件有很多塊組成,每讀寫一個磁盤塊,都有尋道延遲和旋轉(zhuǎn)延遲,從而導(dǎo)致文件的讀寫速度變慢。