(該項目將可能在話題上的超級用戶或電子網站,但這個問題的重點是完成它的可編程軟件。)框架filesystemless SD卡分區之前
我有產生數據的嵌入式系統大約100KB/s,需要存儲並在Windows PC上處理。串行流式傳輸工作,但內部存儲具有明顯的優勢,即不需要在收集數據的房間中存在筆記本電腦和電纜。
我的電路板具有一個SD卡插槽(SPI連接),我以前試着寫文件到一個FAT文件。但事實證明這是一個可怕的瓶頸,其原因不僅在於,爲了支持任意長度的任意長度的多個文件在任意時間增長,FAT中的文件訪問需要讀取和寫入多層元數據 - 分配表本身和目錄 - 除了實際的內容外,它們不能完全適合微控制器的RAM,所以卡訪問的數量被放大了。更糟糕的是,一些任務如尋找新的空閒塊在卡片大小上具有線性複雜性。
對FAT的另一個打擊是,它是在沒有事先清潔卸載功率損耗的情況下,很容易出現數據損壞,我的系統沒有任何用戶界面可能啓動卸載。我意識到包括電源故障中斷和電容在內的技術可以使處理器和SD卡保持幾毫秒的時間,但由於這些技術無論如何都不利於熱拆卸,而且我現有的電路沒有這些技術, m試圖實現一個只有崩潰的存儲設計。
所以我決定跳過文件系統,只需使用該卡進行與塊的原始序列。不過,我不希望我的用戶被邀請重新格式化包含數據
所以,我想分區的卡放在前面,其操作系統將認識到,小FAT分區卡及解釋性測試文件。用戶需要能夠替換卡,所以我需要在我的PC應用程序中自動執行分區和格式化過程。
原始訪問可以通過調用CreateFile("\\\\.\\PhysicalDisk3")
和相似的路徑,而不需要管理員權限來實現,這樣就可以在可移動磁盤來完成。不過,這是我不想自己寫的代碼。操作系統仍然需要被告知在更改後重新掃描卷。
是否有任何的API內置到Windows或分區SD卡的第三方的開源框架的一部分,而不需要對分區表直接按位訪問?如果不是,在更改分區後應該怎樣做Windows重新掃描卷?我更喜歡XP和更新的方法。
問:什麼類型的文件系統中,貴嵌入式操作系統的支持?否則,Q:你覺得如何在Windows DDK中感受到自己的親密感(覺得你可能已經非常精通)?問:你有沒有考慮過使用FAT32,但覆蓋了你自己的錯誤檢測/糾錯?問:你的嵌入式操作系統是什麼? – paulsm4
沒有嵌入式操作系統。嵌入式系統上總共有160KB的RAM,並且除了存儲之外還必須處理其他功能。我的理解是,就內存使用而言,FAT32和exFAT至少與普通FAT(FAT12,FAT16)一樣差。我很高興使用DDK進行用戶模式開發(DDK頭文件被打包用於命令行構建過程,即使對於用戶模式,我也可以處理),但是我不打算寫內核模式代碼,可以在用戶模式下完成。 –
還有一個建議:看看Win32DiskManager的源代碼。您也許能爲您的項目類似的東西:http://sourceforge.net/projects/win32diskimager/ – paulsm4