ZYNQ系統中實現FAT32檔案系統的SD卡讀寫之四 經驗總結
阿新 • • 發佈:2019-02-08
在上述的三篇BLOG裡面主要介紹了步驟和設定,這裡簡答羅列一下此軟體硬體環境中進行FAT32讀寫的經驗總結。
1,SD卡要格式成FAT32格式。否則寫大檔案失敗,上幾M的就寫不了了。
2,每次建議寫256的整數倍位元組,否則餘數部分就會不能寫入,比如f_write函式寫引數長度為511位元組,實際是寫了256位元組,寫引數是512,513則實際寫了長度是512位元組。這應該是一個BUG,因為之前沒有用過FATFS,所以也不知道是FATFS本身BUG還是移植導致的BUG,後續版本應該會有所解決。
3,如果不按照256整數倍寫,返回寫入長度和要求寫入的引數長度相等,但是實際256餘數部分沒有寫入。
4,呼叫f_write函式,後傳遞過去的陣列可能被改寫,我在實驗就遇到過,這點要留意。只要要排除可能。
5,讀是沒有問題的,無論讀多大檔案都可以。
6,上述實驗是遮蔽了SD0實際是為了只使用SD1進行實驗,也可以按不修改預設設定,使用SD0,這使用不需要使用外接模組,插卡在ZEDBOARD的SD卡座就可以進行實驗。
7,如果同時使能設定了SD0和SD1,預設預設使用SD0,我們可以也可以設定成使用SD1,設定方法是修改ff.c檔案裡面的 set_lgnumber,設定返回值為1,則是使用SD1。
8,我做過實驗VIVADO下最大設定SDIO時鐘是100M,如果設定成125M將會出錯,其實預設的設定是50M,實際應用建議設50M或者以下。
9,針對上述2,解決的最簡單方法是呼叫f_write函式將長度引數+255。
10,實際測試過200M位元組單獨檔案的讀寫,能讀寫成功。這已經很不錯了。