|
|
Acute
論壇第一大毒王
論壇第一小神童
. 積分: 3281
. 精華: 8
. 文章: 11574
. 收花: 14037 支
. 送花: 3260 支
. 比例: 0.23
. 在線: 323 小時
. 瀏覽: 2250 頁
. 註冊: 8216 天
. 失蹤: 5568 天
|
|
|
|
|
|
|
#19 : 2005-12-13 03:43 AM
只看本作者
|
送花
(9)
送出中...
|
|
|
你問的問題好多, 大概是處理HDD 的新手, 呵
問題其實不難, 但是, 回答起來可能長長一大串,
有些東西, 還是善用google 比較快
因為要敲長長一大串的答案, 也是挺難的 @_@
1. 只要是硬碟, 就會有Identify 資料可讀取, Identify 裡面會記錄磁碟的容量問題
想要知道Identify 的相關欄位, 請找HDD 廠商的網站, 然後隨便找一個HDD 的datasheet 抓下來
裡面會詳細介紹:
A. Identify 欄位名稱/大小/含意
B. 完整的ATA command set 說明
C. 現在應該已經沒有人使用Identify 裡面的CHS 了,
都是使用Total Number of User Addressable Sectors的欄位
PS: 如果你會需要處理容量超過128G(K=1024), 記得找超過128G 的HDD datasheet
因為超過128G 以上容量, 需要ATA6 command set
PS: 超過128G 的HDD, 有時Identify會有其他欄位描述硬碟容量
2. CF 卡其實也是IDE 界面, 所以, 可以把他完全視為HDD
3. memory device 可以有MBR 也可以沒有MBR
也就是, 程式處理記憶卡時, 要有習慣偵測sector 0 的內容是Boot or MBR
4. FAT12/FAT16/FAT32 詳細資料, MS 的MSDN 網站上可以找到
FAT12/FAT16 兩個很像, 只是FAT size 不同而已
FAT32 比較複雜一點點, 多了幾個系統描述的sector需要處理, 但是跟FAT12/16 還是主架構相同
5. Format HDD/CF 程式碼, 可以去網路上找, 應該找得到
6. FAT12/FAT16/FAT32 容量問題, 我記得MSDN 網站的資料上有說明限制各有哪些
不過, 其實自己算也可以算出來
7. 測試自己寫FAT32 有沒有出錯, 要用98 進行磁碟掃描, XP 掃描都會一律告訴你正確, 但是其實可能你已經漏掉某些系統描述的sector update 行為而不自知
8. Partition Magic format FAT32 時, 他會算錯磁碟容量, 大約少掉一個cluster size, 所以, 如果你自己format 出來比Partition Magic 大一點點, 不要認為自己錯
處理HDD/CF我的經驗是:
1. 一定要花時間弄懂Identify 裡面的欄位用途, 很多時候你會需要它
2. 把ATA command 弄清楚
3. 把FAT12/16/32 資料格式弄清楚
4. 把timing 弄清楚, 呵, 這個常常是真正害死人的兇手
尤其剛開始, 通常使用PIO 模式, PIO2/3/4 的timing 都不一樣
當然, 如果你用的uP 很low end, 速度跟龜一樣, 就不用擔心太多timing 問題
不然, 只要沒仔細啃timing 問題, 就會發生挑卡, 挑硬碟...
其餘的, 大概都不再構成問題, 而上述資料, 就是找HDD datasheet & 去MSDN 網站找FAT 說明
如果你很習慣啃別人程式, 而且可以快速看懂&從中擷取你需要的程式片段
那你可以去找FreeDOS 這個網站, 它是一套DOS 相容的Open Source 系統
從裡面, 你可以看見FAT12/16/32 是如何處理的
不過.... 裡面的程式很大一套, 你要習慣看別人的程式, 才有辦法快速弄懂它在幹嘛
不然, 可能花費的時間會比你啃資料說明還要久
從該網站, 當然也一定可以找到format 程式囉, 呵
Acute.
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
|
|