(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的數據,要把一個文件存放到硬盤,首先要考慮的是把這些數據存放到硬盤的什么地方,這就需要建立一個管理磁盤空間的登記表,它記錄在硬盤中,那些地方已存數據,哪些地方未存數據。
其次,文件系統存放數據一般都是以簇為單位的,簇的大小一般為扇區大小的整數倍,因此,文件都是以簇為單位來分配磁盤空間的,簇大小的確定對于文件系統的性能有重要的影響,簇太大,那么一個文件即使只有一個字節,也要占據一個簇的空間,簇太小,一個文件有很多塊組成,每讀寫一個磁盤塊,都有尋道延遲和旋轉延遲,從而導致文件的讀寫速度變慢。