SD 移植fatfs檔案系統
FRESULT f_mkfs (
const TCHAR* path, /* Logical drive number */
BYTE opt, /* Format option */
DWORD au, /* Size of allocation unit [byte] */
void* work, /* Pointer to working buffer */
UINT len /* Size of working buffer */
)
函式f_mkfs的功能是建立檔案系統,在任何介質第一次使用的時候都要使用該函式。
有些引數,需要說明,au代表最小操作的單元,如果寫入0則預設為4096,該單元越大,讀寫大檔案越快,但是碎片和儲存空間的浪費也就越多。
work為操作的快取,至少應該是每個sector的大小。
opt有點坑,是2個引數有個或的操作,和以前的版本很不一樣,卡在這裡很久。這個函式的執行還和下面函式
DRESULT disk_ioctl (
BYTE pdrv, /* Physical drive nmuber (0..) */
BYTE cmd, /* Control code */
void *buff /* Buffer to send/receive control data */
)
{
DRESULT res=RES_OK;
switch (pdrv) {
case DEV_RAM :
return res;
case DEV_MMC :
switch (cmd)
{
case GET_BLOCK_SIZE:
* (DWORD*)buff = 512;
break;
case GET_SECTOR_SIZE:
*(DWORD*)buff = 512;
break;
case GET_SECTOR_COUNT:
*(DWORD*)buff = 0x400;
break;
}
return res;
case DEV_USB :
return res;
}
return RES_PARERR;
}
GET_BLOCK_SIZE返回的引數有關。BLOCK_SIZE的真實作用是擦出的最小單位,在SD卡中一般為512B,norflash datasheet裡也有一個block,但和這個含義不同,spi flash本來最小擦出單位是4096,因為我只用到512,所以這個地方也要以512為擦除單位,才能初始化成功。
FRESULT f_mount (
FATFS* fs, /* Pointer to the file system object (NULL:unmount)*/
const TCHAR* path,/* Logical drive number to be mounted/unmounted */
BYTE opt
/* Mode option 0:Do not mount (delayed mount), 1:Mount immediately */
)
函式 f_mount()功能是掛在儲存介質,掛在之前必須在介質中寫入檔案系統。
所以第一次寫讀檔案的順序如下。
f_mkfs("",FM_FAT|FM_SFD,1024,work,sizeof work);
f_mount (&fs,"",1);
f_open(&fil, "hello.txt", FA_CREATE_NEW | FA_READ | FA_WRITE);
f_write(&fil, writeByte, sizeof writeByte, &bw);
f_read(&fil, readByte, sizeof writeByte, &bw);
f_close(&fil);
f_mount(0, "", 1);
另外使用這個檔案系統我覺得至少把_FS_MINIMIZE 開到2 得到f_lseek(),否則讀寫都只能從檔案頭開始,完全沒法使用。。
相關推薦
SD 移植fatfs檔案系統
今天算是移植成功了,由於下載的是最新的fatFs,網上資料基本都是以前的系統。有些地方還是改動比較多的,這裡全部列出來。 FRESULT f_mkfs ( const TCHAR* path, /* Logical drive number */ BYTE opt, /* Format option *
LPC1768 SPI模式下SD卡FatFs檔案系統移植
最近在LPC1768 SPI模式下移植SD卡FatFs(版本R0.09a)檔案系統成功,總結一下移植過程。 一、 底層驅動 使用的SSP0的SPI模式驅動,SSP時鐘開始使用的25M。SD卡驅動測試完成,可讀寫擦除測試沒有問題之後開始檔案系統移植。 要用到的底層驅
基於STM32的SD卡FATFS檔案系統學習筆記
一、FATFS檔案系統格式分析 搞檔案系統,首先要了解一下SD卡里面的結構和分割槽,如下圖 1、引導扇區 引導扇區包含著磁碟和檔案系統的許多重要引數。檔案管理系統首先要對該扇區的資訊進行分析,才能瞭解當前磁碟上檔案系統的格式。 EB 58 90 4D 53 44 4F 53 35 2E 3000 020
FATFS檔案系統移植
先說下我做的專案實現功能吧!語音播放器,類似一個小MP3那種,只是儲存用的SD卡、TF卡。檔案系統採用了開源的FATFS. FATFS模組的層次結構圖 1、底層介面,包括儲存媒介讀/寫介面(disk I/O)和供給檔案建立修改時間的實時時鐘,需要我們根據平臺和儲存介質編寫移植程式碼
STM32的FATFS檔案系統移植筆記(轉…
一、序言 經常在網上、群裡看到很多人問關於STM32的FATFS檔案系統移植的問題,剛好自己最近也在除錯這個程式,為了讓大家少走彎路,我把我的除錯過程和方法也貢獻給大家。 二、FATFS簡介 FatFs Module是一種完全免費開源的FAT檔案系統模組,專門為小型的嵌入式系統而設計。
FATFS檔案系統的移植
這幾天很懶,很懈怠… 廢話不多說,今天來移植FATFS檔案系統,在移植FATFS之前,我們需要: 1、在網上下載FATFS的原始碼,這個不用說把… 2、準備好SD卡的基本讀寫函式,SPI模式或者SDIO模式均可。 3、在ffconf.h標頭檔案裡修改相應的巨集定義,設定相應
fatfs檔案系統移植 讀寫時莫名出現FR_DISK_ERR問題
在移植fatfs檔案系統後,可以讀寫檔案系統,但是在讀寫過程中一直出現FR_DISK_ERR錯誤,以為是底層函式編寫有問題,一直無法解決問題,後經過多方查閱資料,懷疑是SDIO訪問時鐘頻率過高導致,將SDIO時鐘頻率調低
STM32+SD卡 利用FATFS檔案系統建立資料夾並新建txt檔案
這幾天在移植FATFS檔案系統,在移植過程中需要新建資料夾下建立新的cfg檔案,查詢資料後發現需要用到以下函式: f_mkdir("0:/2017110223");//新建資料夾,其中2017110223是資料夾名稱 f_open(filescr1, "0:20171102
轉一篇比較詳細介紹FatFs檔案系統移植的文章 FatFs檔案系統的移植
因為需要,又不想自己寫,所以就移植了一個檔案系統。 說下我的硬體和開發工具:接成 TRUE IDE 模式下的CF卡(也就是相當於一塊硬碟了),三星S3C2440的ARM9,開發工具是很老很老的D版的ADS1.2。
FatFS檔案系統詳解-附移植建議
在這裡http://elm-chan.org/fsw/ff/00index_e.html下載原始碼,只有800多K,小的可憐,還可以下載示例程式,有AVR、Win32、lpc等多平臺已實現的方案。開啟看src資料夾,一個option資料夾、00readme.txt、disk
轉一篇比較詳細介紹FatFs檔案系統移植的文章
摘自:http://blog.163.com/[email protected]/blog/static/3278568820090710053782/ 補充一點,FatFs的作者寫了兩個,一個是正宗的FatFs,比較適合大的RAM的裝置,另一個是FatFs/
STM32的FATFS檔案系統移植筆記
一、序言 經常在網上、群裡看到很多人問關於STM32的FATFS檔案系統移植的問題,剛好自己最近也在除錯這個程式,為了讓大家少走彎路,我把我的除錯過程和方法也貢獻給大家。 二、FATFS簡介 FatFs Module是一種完全免費開源的FAT檔案系統模組,專
STM32例程之FATFS檔案系統(SPI方式)移植筆記(原始碼下載)
STM32的FATFS檔案系統移植筆記 一、序言 經常在網上、群裡看到很多人問關於STM32的FATFS檔案系統移植的問題,剛好自己最近也在除錯這個程式,為了讓大家少走彎路,我把我的除錯過程和方法也貢獻給大家。 二、FATFS簡介 FatFs Module
MSP430 SD卡SPI讀寫操作(4) —— FatFs檔案系統實現(以MSP430F5438A為例)
本節介紹MSP430F5438A FatFs檔案系統的移植。 FatFs是一個通用的檔案系統模組,用於在小型嵌入式系統中實現FAT檔案系統。FatFs模組與IO是分開的,因此移植時需要實現下面幾個底層函式: DSTATUS disk_initialize (BYTE dr
Petit FatFs檔案系統移植至STC89C52RC
MCU:STC89C51RC 最高主頻:80M Flash:4K SRAM:512B EEPROM:4K 系統:Petit FatFs 整合開發環境:keil 4 今天將Petit FatFs成功掛載到STC89C52RC晶片上進行執行,實話說這樣做的意義並不
嵌入式Linux開發——(十五)移植YAFFS檔案系統
一、移植YAFFS檔案系統 1)YAFFS檔案系統的介紹 ①YAFFS(yet another flash file system)是一種類似於JFFS / JFFS2,專門為NAND Flash設計的嵌入式檔案系統,適用於大 &nbs
Linux上電自動掛載SD卡和檔案系統的修改
參照黑金例程在ZYNQ開發板上移植好Linux系統後,預設是沒有載入SD卡的。因此每次斷電後,在Linux上的配置資訊全部丟失,每次上電後都要重複配置,非常的不方便,經過死皮爛臉的求問和網上查資料之後,終於實現了這個功能,在這裡分享一下我通過新建petalinux的開機自啟
RK3288移植Ubuntu 檔案系統及升級韌體製作
1, linux下 unpack 解包 報錯 [email protected]:/opt/rk-linux/mkimg# ./unpack.sh start to unpack update.img... ********RKImageMaker v
ZCU106開發詳解之PS側SD卡FAT32檔案系統(高階外設,大神之路)
感謝大家的等待!! 本週將四連發,我們團隊也將盡自己能力為大家答疑解惑!!! 如果有朋友想了解更多相關資訊請加QQ群836535064。我們會將相關資料釋出於QQ群中。 歡迎有需求的朋友深度合作。本團隊專注於高速視訊編解碼,高速訊號採集處理,高速異構平臺,高速儲存方案提
嵌入式系統學習——STM32之FATFS檔案系統
檔案系統是什麼? 負責管理和儲存檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統。 即在磁碟上組織檔案的方法。 常用的檔案系統: -FAT / FATFS -NTFS: 基於安全性的檔案系統,是W