嵌入式FAT32文件系統設計與實現
《嵌入式FAT32文件系統設計與實現》,副標題:基于振南znFAT(下),于振南 編,出版社: 北京航空航天大學出版社。
書籍對於人類原有很重大的意義,但,書籍不僅對那些不會讀書的人是毫無用處,就是對那些機械地讀完了書還不會從死的文字中引申活的思想[1]的人也是無用的。 —— 烏申斯基[2]
目錄
內容簡介
本書是此套書的下冊,是上冊的延續與拓展。本書詳細講解了FAT32中長文件名的相關技術及其在znFAT中的具體實現。最後,着重介紹了SD卡等存儲設備的驅動原理與調試方法。應該說,下冊比上冊更有技術含量、更有思想,會引發讀者更多的思考和靈感。
如果說上冊是專注於基礎和常規內容的話,那麼下冊則更加側重於提高與創新。振南將把一些絕對獨特的思想和算法,以及它們在znFAT中表現出來的優異性能呈現在讀者面前。
此書謹獻給對FAT32、SD卡等嵌入式存儲技術感興趣,以及在這方面有項目應用需求的廣大人群。希望此書能夠成為此領域內的參考書,對大家的研究與開發工作產生積極意義。
目錄
第1章數據記錄,偷梁換柱:使用變通方法實現文件數據存儲1
1.1把SD卡用作一個大容量的ROM1
1.1.1大ROM思想的提出1
1.1.2思想的驗證:數據採集與記錄實驗2
1.2數據「偷梁換柱」——數據替換5
第2章更及核心,文件創建:修改FAT表實現文件創建功能10
2.1文件的創建10
2.1.1文件目錄項的構造10
2.1.2文件目錄項的「落定」:寫入目錄簇12
2.2為自己開路:簇鏈的構造15
2.2.1目錄簇的拓展15
2.2.2尋找「路石」:空簇的查找16
2.2.3形同虛設的FSINFO扇區19
2.2.4簇鏈構造的實現22
2.3目錄的創建24
2.3.1目錄項的構造24
2.3.2兩個特殊的目錄項25
第3章
數據寫入,細微可見:數據寫入的實現28
3.1初步實現28
3.1.1回顧數據讀取28
3.1.2從開頭寫數據29
3.1.3從整簇寫數據32
3.2數據寫入的實現33
3.3數據寫入的典型應用38
3.3.1實例1:數據採集與存儲38
3.3.2實例2:簡易數碼相機41
第4章
巧策良方,數據狂飆:獨特算法實現數據高速寫入45
4.1迫出硬件性能45
4.1.1連續多扇區驅動45
4.1.2多扇區抽象驅動接口47
4.2為數據作「巢」48
4.2.1預建簇鏈思想的提出48
4.2.2簇鏈預建的實現50
4.2.3將多扇區用到極致55
4.3CCCB(壓縮簇鏈緩衝)57
4.3.1CCCB的提出57
4.3.2CCCB的實現60
4.3.3CCCB的爭搶與獨立63
4.4EXB(扇區交換緩衝)64
4.4.1EXB的提出64
4.4.2EXB的實現65
第5章
模式變換,百花爭艷:znFAT與其他FAT的全面PK67
5.1登頂效率之峰67
5.2與強者競速68
5.2.1國內外優秀FAT方案簡介69
5.2.2速度的「較量」71
5.3znFAT的工作模式74
5.3.1緩衝工作模式74
5.3.2自身模式較量75
5.4 znFAT的功能裁減78
5.4.1功能裁減宏78
5.4.2裁減宏的嵌套79
第6章
創新功能,思維拓展:多元化功能特性與數據重定向的實現81
6.1多元化文件操作81
6.1.1多文件81
6.1.2多設備82
6.2數據重定向87
6.2.1數據重定向的提出87
6.2.2數據重定向的實現88
6.2.3數據重定向實現MP3播放89
第7章
層遞刪截,通盤格空:文件、目錄的刪除及磁盤格式化91
7.1文件數據的傾倒91
7.1.1何為數據傾倒91
7.1.2數據傾倒的實現92
7.2文件的刪除95
7.2.1文件刪除的實質95
7.2.2文件刪除的實現97
7.3目錄的刪除99
7.3.1目錄刪除的難處99
7.3.2目錄刪除的實現100
7.4格式化101
7.4.1格式化的內涵101
7.4.2格式化的核心工作101
7.4.3格式化的實現105
第8章突破短名,搞定長名:突破8·3短名限制,全面地實現長文件名110
8.1FAT32的長文件名110
8.1.1何為長文件名110
8.1.2長文件名的存儲機理111
8.2UNICODE編碼113
8.2.1「各自為戰」的DBCS113
8.2.2UNICODE帶來的問題115
8.2.3編碼轉換的實現116
8.2.4長名的提取與匹配120
8.3長名的核心是短名121
8.3.1微軟長名專利風波121
8.3.2長短名的綁定122
8.3.3用長名打開文件123
8.3.4創建長名文件125
第9章
青澀果實,繽紛再現:套書的第二個實驗專題131
9.1數據採集導入EXCEL131
振南點睛131
9.2串口文件「竊取器」134
9.3錄音筆136
9.4簡易數碼相機(51)139
9.5簡易數碼錄像機(AVR)141
9.6簡易數碼錄像機升級版(STM32直接錄製AVI視頻)144
9.7文件無線傳輸實驗147
9.8嵌入式腳本程序解釋器150
振南點睛151
9.9AVI視頻播放器152
9.10繪圖板實驗——基於STM32F4154
9.11MEMS聲音傳感器錄音實驗158
9.12各種CPU上的實例匯總(基於第三方實驗平台)161
振南點睛164
振南點睛171
第10章
存儲設備,閃存解惑:主流存儲設備及閃存技術詳解173
10.1當前主流存儲設備173
10.1.1主流存儲設備簡介174
10.1.2嵌入式存儲設備177
10.2FlashROM上的文件系統179
10.2.1FTL180
10.2.2NFTL180
第11章
物理驅動,深入剖析:SD卡物理驅動183
11.1SD卡的接口與電路183
11.1.1SD卡的接口183
11.1.2SD卡的電路184
11.2振南SD卡驅動移植與測試185
11.2.1振南SD卡驅動簡介185
11.2.2振南SD卡驅動移植185
11.2.3SD卡驅動測試187
11.3SD卡驅動原理188
11.3.1通信與命令188
11.3.2SD卡的初始化191
11.3.3SD卡的單扇區讀/寫194
11.3.4SD卡的多扇區讀/寫擦除195
第12章
性能提升,底層限制:高性能SD卡物理驅動197
12.1現有SD卡驅動的性能評估197
12.2用DMA為數據傳輸提速202
12.3高性能SD卡驅動的實現206
附錄A
完整工程實例之SD卡MP3播放器211
附錄B
完整工程實例之數碼錄像機(相機)218
附錄C主流CPU內核及其典型芯片簡介(znFAT移植平台)227
附錄D
答網友問233
附錄E我的大學系列238
參考文獻246