內容簡介
     本書是此套書的下冊,是上冊的延續與拓展。本書詳細講解瞭FAT32中長文件名的相關技術及其在znFAT中的具體實現。最後,著重介紹瞭SD卡等存儲設備的驅動原理與調試方法。應該說,下冊比上冊更有技術含量、更有思想,會引發讀者更多的思考和靈感。
  如果說上冊是專注於基礎和常規內容的話,那麼下冊則更加側重於提高與創新。振南將把一些絕對獨特的思想和算法,以及它們在znFAT中錶現齣來的優異性能呈現在讀者麵前。
  此書謹獻給對FAT32、SD卡等嵌入式存儲技術感興趣,以及在這方麵有項目應用需求的廣大人群。希望此書能夠成為此領域內的參考書,對大傢的研究與開發工作産生積極意義。
 
     精彩書評
     作者對研發工作十分投入,經常通宵工作,他的執著以及勤於用實驗反復驗證的作風都給我留下極深的印象。希望通過我的介紹讓大傢對作者本身及此書的創作背景有更多的瞭解。我相信,憑著作者本人對軟硬件知識的深刻掌握與理解,再加之對研究工作的認真和極度執著的態度,本書的齣版有理由值得我們期待!
               ——原哈工程大學計算機學院院長、博士生導師  顧國昌  
  振南開創瞭國內第1個開源的FAT32文件係統,並孜孜不倦的持續推廣,其精神值得深刻學習。
                  ——國內優秀RTOS rawos作者、國內rtos領頭人 陳淩君  
  在21IC上,久仰振南大名,之前雖沒有互動過,但還是知道他搞瞭開源軟件,最近纔開始深入關注他的軟件和書。翻閱此書,一種DIY的精神撲麵而來,依稀看見瞭我研發的套路。我也用過不少開源軟件,總是會有種種不如意,總感覺少瞭點什麼。總是要去打補丁,有時候改得火大,直接自己寫瞭。所以看過此書,對作者的工作流程錶示認同,為作者的DIY精神叫好。
                          ——21IC版主、《感悟設計》一書作者 大道至簡  
  我看過振南的瘋狂單片機係列視頻教程,並親身驗證過znFAT文件係統的強大功能。我作為一個從事瞭十多年單片機係統一綫研發工作的工程師,為znFAT深深震撼,振南的功力太深厚瞭。其講解的內容真實、細緻、通俗易懂且有極強的實用價值,代碼開源的精神也值得我們每一個搞技術工作的中國人學習。
             ——znFAT使用者 成都高新區華匯實業有限公司  李友全     
目錄
   第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
�T
第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      
前言/序言
     讀上冊後繼續啓程讀瞭本書上冊之後,你已可稱得上是半個專傢瞭,對FAT32文件係統、振南znFAT的設計思想與實現技巧,以及嵌入式存儲的相關技術都已經小有領悟。但振南隻能說現在還隻是“萬裏長徵”剛走齣瞭不到一半。上冊隻是實現瞭“讀”操作相關的功能,實際上真正的重點、難點和亮點在於“寫”操作,還有在整個係統層麵上對性能與效率的優化與提升。這其中所産生的一係列新穎的編程方法、獨特的算法與策略纔是能夠發人深省的核心內容。
  下冊之精妙之處本書介紹知識的同時注重穿插大量精彩、更具創意的實驗,方便讀者理解、動手提高。首先介紹瞭文件與目錄創建、數據寫入等文件操作功能的實現。隨後的幾章一直在努力提升數據讀寫的速度,提齣瞭諸如預建簇鏈、連續扇區優化、壓縮簇鏈緩衝與扇區交換緩衝等多種實用而優秀的創新思想與機製。這些正是znFAT中的精妙所在,它們讓znFAT可以滿足更高更快的數據存儲應用需求,從而躋身於優秀的嵌入式FAT32文件係統方案之列,受到人們的廣泛承認與好評。為瞭證明這一切,振南將znFAT與多款現有的國際優秀方案進行瞭全麵、深入的“較量”,一決高下。振南還詳細講解瞭SD卡等存儲設備的驅動與調試方法,基於ZNX開發闆采用3種CPU分彆對扇區讀寫速度進行瞭實際的測試評估。尤其在STM32上為驅動引入瞭DMA後,它的速度錶現更加讓人滿意,甚至令人驚喜。後麵幾章中振南還詳細介紹瞭廣受讀者關注的FAT32長文件名和NOR/NAND Flash ROM上的文件係統應用等問題。最後,集中展示瞭幾個吸引眼球的znFAT的綜閤應用實驗,可謂是本書的點睛之筆。本書特點在風格上,下冊與上冊保持瞭一緻,並保證瞭知識脈絡的連貫性。正如上冊對後續內容的不斷引導一樣,下冊在很多關鍵點上均與上冊遙相呼應,共同編織瞭一張完整而緻密的知識網絡。應該說,下冊比上冊更具創意,更具技術含量,也更具工程實用價值。其中的很多實驗可能都是一些“可遇而不可求”的高難、精彩創新實驗,其中涉及的很多技術對於實際的工程項目也都具有藉鑒與指導意義。感謝znFAT係統的研發、測試與改進工作以及本書的整個寫作齣版過程,從頭到尾振南都不覺得寂寞,因為有無數熱心人和愛好者的協助、支持,這裏一並錶示感謝。感謝導師顧國昌教授(哈爾濱工程大學計算機學院院長、博士生導師),正是因為他的諄諄教導和對振南自主研究工作的長期支持,纔有瞭振南的今天。感謝北京航空航天大學齣版社的大力支持,這是本書最終得以齣版的主要推動者與執行者; 感謝21IC、EDNChina、Elecfans等網站與論壇,為振南個人與znFAT的推廣起到瞭很大的作用,並且為技術的交流與反饋提供瞭良好的渠道與平颱。此外,大量的誌願者承擔瞭測試工作,這裏一並錶示感謝。這些誌願者包括:杜撰、何強、吳俊超、謝明鑫、王誌誠、林麟、羅偉東(緯圖虛擬儀器)、尚學成、劉磊等。本書的寫作過程中,有很多人參與到瞭振南的內部書稿評閱中,從讀者的角度提齣瞭自己的意見和建議,也對他們錶示感謝,包括:王坤、徐茂龍、黃勁鬆、曾躍飛、張傑、陳宏洲、許江等。
 
    
				 
				
				
					《嵌入式FAT32文件係統設計與實現:基於振南znFAT(下)》  內容簡介:  本書是“嵌入式FAT32文件係統設計與實現”係列的下冊,在承接上冊關於FAT32文件係統基礎理論與核心概念的講解後,本冊將深入聚焦於振南znFAT這一具體實現的細節、優化策略以及在實際嵌入式係統中的應用。如果您已熟知FAT32的基本結構、簇分配、目錄項解析等原理,或者您在上冊中掌握瞭znFAT的初步框架,那麼本冊將帶您進入更具挑戰性和實踐性的領域,進一步提升您在嵌入式文件係統開發方麵的能力。  核心內容梳理:  本冊首先會對振南znFAT在內存中的數據結構進行細緻的剖析。這包括文件控製塊(FCB)的詳細設計,如何有效地管理打開文件的元數據,例如文件大小、當前讀寫位置、簇鏈指針等。我們將深入探討znFAT如何利用更高效的數據結構來減少內存占用,並加快文件訪問速度。這可能涉及到對鏈錶、散列錶或其他優化數據結構的運用,以及這些結構與FAT32簇鏈之間的映射關係。  接著,本書將詳細闡述znFAT在文件讀寫操作上的實現機製。我們將逐一分析字節流讀寫、塊讀寫、隨機訪問等不同讀寫模式的底層邏輯。這包括對FAT錶(文件分配錶)的精細化操作,例如簇的分配與釋放、簇鏈的遍曆與更新,以及數據塊的直接讀寫。對於 znFAT,我們會特彆關注其在處理大文件、長文件名時的效率和穩定性。例如,如何通過優化緩存策略來減少對底層存儲設備的頻繁訪問,如何處理文件名碎片化問題,以及如何實現高效的文件定位。  本冊的重點之一是深入研究 znFAT 的錯誤處理和魯棒性設計。在嵌入式係統中,存儲介質的可靠性可能不如桌麵係統,斷電、數據損壞等情況頻繁發生。因此,一個健壯的文件係統必須能夠優雅地處理這些異常。本書將詳細講解 znFAT 如何檢測和修復文件係統錯誤,例如文件分配錶的不一緻、目錄結構的損壞、簇鏈的斷裂等。這可能涉及到文件係統檢查(fsck)工具的實現思路,以及在文件係統運行過程中進行自我修復的機製。我們將探討 znFAT 如何在發生錯誤時,盡量保證用戶數據的完整性,以及如何最大程度地恢復損壞的文件。  此外,本書還將深入探討 znFAT 在性能優化方麵的各種技術。這包括但不限於:     緩存機製的優化: 如何設計更智能的讀寫緩存,以減少對閃存等慢速存儲的訪問次數。我們將討論緩存的替換策略、預讀/迴寫機製等。    FAT錶訪問優化: FAT錶是FAT32文件係統的核心,頻繁訪問FAT錶會嚴重影響性能。本書將探討 znFAT 如何通過內存中的FAT鏡像、FAT錶的局部化存儲等方式來加速FAT錶的訪問。    簇分配算法優化: 簇的分配和釋放直接影響到文件存儲的碎片化程度和訪問速度。我們將分析 znFAT 采用的簇分配算法,以及如何通過優化該算法來減少文件碎片,提高連續存儲空間的利用率。    並發訪問控製: 在多任務或多綫程的嵌入式環境中,文件係統的並發訪問控製至關重要。本書將講解 znFAT 如何通過互斥鎖、信號量等機製來保證多個進程或綫程同時訪問文件時的數據一緻性。  安全性和權限管理也是本冊會涉及到的重要主題。雖然FAT32本身並不原生支持復雜的權限模型,但znFAT可能通過一些擴展機製來提供基本的安全保障。本書將探討 znFAT 如何實現文件訪問的控製,例如讀取、寫入、執行權限的限製,以及如何處理可能齣現的安全漏洞。  本書還將重點講解 znFAT 在不同嵌入式存儲介質上的移植和優化。這包括對SD卡、eMMC、NAND Flash等不同類型存儲器的特性進行分析,並指導讀者如何針對性地調整 znFAT 的底層驅動接口,以達到最佳的性能和可靠性。例如,如何處理 NAND Flash 的壞塊管理,如何利用 eMMC 的硬件特性來加速文件操作等。  除瞭核心的文件係統操作,本書還會覆蓋與 znFAT 集成相關的其他重要方麵:     與RTOS(實時操作係統)的集成: 講解如何將 znFAT 移植到常見的嵌入式RTOS(如FreeRTOS, RT-Thread等)上,並與RTOS的文件係統接口進行對接。這包括如何處理文件係統的掛載、卸載、設備驅動程序的抽象層設計。    用戶接口與API設計: 詳細介紹 znFAT 提供的應用程序接口(API),方便開發者在應用程序中調用文件係統功能。我們將分析 API 的設計原則,以及如何設計齣易於使用且功能強大的接口。    調試與測試: 提供一套完整的 znFAT 調試和測試方案,包括如何使用仿真器、邏輯分析儀等工具來定位和解決開發過程中遇到的問題,以及如何設計有效的測試用例來驗證文件係統的功能和性能。  最後,本書將通過一係列實際案例,展示 znFAT 在智能傢居、車載娛樂係統、工業控製設備等不同嵌入式應用場景中的成功實踐。這些案例將涵蓋從簡單的文件讀寫到復雜的文件管理任務,幫助讀者理解 znFAT 的強大功能和廣泛適用性。  目標讀者:  本書適閤以下人群:     嵌入式係統工程師: 希望深入理解和掌握文件係統設計與實現,特彆是FAT32文件係統的開發者。    固件開發人員: 負責嵌入式設備固件開發,需要處理大量數據存儲和管理需求的工程師。    操作係統研究者: 對文件係統原理和底層實現感興趣的研究人員。    計算機科學與技術專業的學生: 希望將理論知識應用於實踐,學習高級文件係統設計的學生。    對振南znFAT項目感興趣的開發者: 希望瞭解znFAT具體實現細節和開發流程的貢獻者。  學習價值:  通過閱讀本書,讀者將能夠:     深入理解FAT32文件係統的內部工作原理: 不僅停留在理論層麵,更能掌握其具體實現細節。    掌握嵌入式文件係統的設計與優化技巧: 學習如何設計高效、魯棒、低功耗的文件係統。    熟練運用振南znFAT進行嵌入式文件係統開發: 能夠自信地將znFAT集成到自己的嵌入式項目中。    提升在嵌入式存儲領域的開發能力: 能夠應對各種復雜的存儲管理和數據持久化挑戰。    為更高級的文件係統設計奠定基礎: 為未來接觸或設計更復雜的文件係統(如exFAT, ext4等)積纍寶貴的經驗。  本書強調理論與實踐相結閤,通過詳實的源碼剖析、精妙的設計思路以及豐富的實際案例,將帶領您全麵掌握振南znFAT這一優秀的嵌入式FAT32文件係統實現,讓您的嵌入式項目在數據存儲方麵更加穩定、高效和可靠。