色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何移植FatFs文件系統(tǒng)到SD卡內(nèi)

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-09-19 09:11 ? 次閱讀

在前面章節(jié)中介紹了使用MM32F3270的SDIO外設(shè)驅(qū)動SD卡,對SD卡識別和簡單的數(shù)據(jù)讀寫驗證,不過像這樣直接操作SD卡存儲單元,在實際應(yīng)用中是不現(xiàn)實的。SD卡一般用來存放文件,所以都需要加載文件系統(tǒng)到里面。

FatFs 是一個通用的文件系統(tǒng)(FAT/exFAT)模塊,用于在小型嵌入式系統(tǒng)中實現(xiàn)FAT文件系統(tǒng)。完全用標(biāo)準(zhǔn)C語言編寫,所以具有良好的硬件平臺獨立性。可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列單片機上而只需做簡單的修改。它支持FATl2、FATl6和FAT32格式,支持多個存儲媒介,具有獨立的緩沖區(qū),可以對多個文件進行讀/寫,并特別對8位單片機和16位單片機做了優(yōu)化。

本章節(jié)主要介紹移植FatFs文件系統(tǒng)到SD卡內(nèi)。

FatFs的特點

1)Windows兼容的FAT文件系統(tǒng)(支持FAT12/FAT16/FAT32)與平臺無關(guān),移植簡單;

2)代碼量少、效率高;

3)多種配置選項;

4)支持多卷(物理驅(qū)動器或分區(qū),最多10個卷);

5)多個ANSI/OEM代碼頁包括DBCS;

6)支持長文件名、 ANSI/OEM 或Unicode;

7)支持RTOS

8)支持多種扇區(qū)大小;

9)只讀、最小化的API和I/O緩沖區(qū)等。

FatFs源碼獲取

FatFs文件系統(tǒng)的源碼可以從FatFs官網(wǎng)下載

http://elm-chan.org/fsw/ff/00index_e.html

此地址不僅僅包含資料包下載,還包括文件系統(tǒng)一些知識,包括函數(shù)說明,函數(shù)調(diào)用實例等。

wKgZomUD8cuAFTkdAABYxqJX0kk900.png

官網(wǎng)有對FatFs做詳細(xì)的介紹,感興趣可以多了解一些。所有版本的FatFs源碼的移植步驟都是類似的,我們選擇選擇其中一個版本下載即可。

FatFs文件結(jié)構(gòu)

解壓之后可看到里面有 doc 和src 這兩個文件。

其中doc文件夾里面是一些使用幫助文檔,src是FatFs文件系統(tǒng)的源碼。

FatFs的源代碼主要包含幾個文件:

diskio.c、 diskio.h、 ff.c、 ff.h、 integer.h文件。

其中diskio.c 這個文件是文件系統(tǒng)底層和SD驅(qū)動的中間接口的實現(xiàn)代碼,移植的時候需要改寫在diskio.h中聲明的那幾個函數(shù),代碼在ff.c中被調(diào)用;diskio.h定義了FatFs用到的宏;ff.c是一般FatFs的代碼文件;ff.h是一般FatFs包含的頭文件;integer.h是內(nèi)部基本類型的定義。

option文件夾下是一些可選的外部c文件,包含了多語言支持需要用到的文件和轉(zhuǎn)換函數(shù)。

00readme.txt 說明了當(dāng)前目錄下 diskio.c 、 diskio.h、 ff.c、 ff.h、 integer.h 的功能。

FatFs移植步驟

在工程目錄下新建FatFs文件夾,并將src文件夾下的文件復(fù)制一份至該文件夾。

wKgZomUD8c2ADNhuAADOUabrU9k931.png
wKgaomUD8dGABXo4AAEGZ-eTmPc250.png

使用KEIL打開工程文件并添加FatFs組件,并將src文件夾下的ff.c、 diskio.c 和 cc936.c 三個文件加入FatFs組件中。

wKgZomUD8dKATkNKAAAgLjHjCCI835.png

加入cc936.c文件可以支持簡體中文,同時需要把 ffconf.h 中的 _CODE_PAGE 的宏改成 936。

wKgaomUD8dSAEbvbAAAboBlrwus858.png

接著添加FatFs路徑到工程選項。

wKgZomUD8dWAX8uKAABv34JCOG0549.png

此時進行編譯,會發(fā)現(xiàn)提示錯誤。

編寫FatFs接口函數(shù)

來看diskio.c文件,注釋前面的幾個頭文件,這里要加入自己的頭文件。下面的三個宏定義ATA、MMC、USB也可以改成想要的名稱,可以改成SD并定義為0。

wKgaomUD8deAWFxTAACDw6tcSZI972.png

然后將函數(shù)disk_status、disk_initialize、disk_read、disk_write里面執(zhí)行的代碼注釋或者刪除,這里需要添加自己的代碼。由于上面改了宏定義,這里switch-case也要做一些修改。

wKgaomUD8diAIiwgAABUq_CQGUU473.png

更改如下:

wKgZomUD8dqAZh10AAA0HxfrY5s102.png

對disk_initialize、disk_read、disk_write幾個函數(shù)也這樣更改。

再次編譯,發(fā)現(xiàn)提示一個關(guān)于get_fattime的錯誤,get_fattime用來獲取當(dāng)前時間,如果不需要,在ffconf.h中的宏定義#define _FS_NORTC改為1關(guān)閉,如果需要這個功能,需要在diskio.c里面,實現(xiàn)get_fattime函數(shù),加入如下代碼即可。

wKgaomUD8duAcqA-AAAb-EtjbKw659.png

然后進行編譯,這時錯誤就沒有了。

至此我們已經(jīng)完成FatFs文件管理系統(tǒng)的移植,不過功能還沒有實現(xiàn),需要在disk_status、disk_initialize、disk_read、disk_writ、disk_ioctl函數(shù)中加入執(zhí)行代碼:

設(shè)備狀態(tài)獲取

DSTATUS disk_status (
    BYTE pdrv       /* Physical drive number to identify the drive */
)
{
    DSTATUS stat;

    stat = disk.drv[pdrv]->disk_status(disk.lun[pdrv]);
    return stat;
}

設(shè)備初始化

DSTATUS disk_initialize (
    BYTE pdrv               /* Physical drive nmuber to identify the drive */
)
{
    DSTATUS stat = RES_OK;

    if(disk.is_initialized[pdrv] == 0) {
        disk.is_initialized[pdrv] = 1;
        stat = disk.drv[pdrv]->disk_initialize(disk.lun[pdrv]);
    }
    return stat;
}

讀取扇區(qū)

DRESULT disk_read (
    BYTE pdrv,      /* Physical drive nmuber to identify the drive */
    BYTE* buff,     /* Data buffer to store read data */
    DWORD sector,           /* Sector address in LBA */
    UINT count      /* Number of sectors to read */
)
{
    DRESULT res;

    res = disk.drv[pdrv]->disk_read(disk.lun[pdrv], buff, sector, count);
    return res;
}

扇區(qū)寫入

DRESULT disk_write (
    BYTE pdrv,      /* Physical drive nmuber to identify the drive */
    const BYTE* buff,   /* Data to be written */
    DWORD sector,       /* Sector address in LBA */
    UINT count          /* Number of sectors to write */
)
{
    DRESULT res;

    res = disk.drv[pdrv]->disk_write(disk.lun[pdrv], buff, sector, count);
    return res;
}

其他

DRESULT disk_ioctl (
    BYTE pdrv,      /* Physical drive nmuber (0..) */
    BYTE cmd,       /* Control code */
    void* buff      /* Buffer to send/receive control data */
)
{
    DRESULT res;

    res = disk.drv[pdrv]->disk_ioctl(disk.lun[pdrv], cmd, buff);
    return res;
}

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動器
    +關(guān)注

    關(guān)注

    53

    文章

    8259

    瀏覽量

    146604
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7081

    瀏覽量

    89181
  • SD卡
    +關(guān)注

    關(guān)注

    2

    文章

    566

    瀏覽量

    63969
  • 文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    287

    瀏覽量

    19926
收藏 人收藏

    評論

    相關(guān)推薦

    基于STM32完成FATFS文件系統(tǒng)移植與運用

    這篇文章主要演示FATFS文件系統(tǒng)如何移植自己的工程,并完成文件的讀寫。 因為SD
    的頭像 發(fā)表于 03-08 09:17 ?6139次閱讀
    基于STM32完成<b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>移植</b>與運用

    FatFS文件系統(tǒng)在STM32F4上的移植和應(yīng)用

    在實現(xiàn)如U盤文件讀寫,SD文件讀寫等工作時,我們往往需要一個文件系統(tǒng)來支持我們的工作。特別在一些MCU應(yīng)用中,
    的頭像 發(fā)表于 12-13 17:26 ?2671次閱讀
    <b class='flag-5'>FatFS</b><b class='flag-5'>文件系統(tǒng)</b>在STM32F4上的<b class='flag-5'>移植</b>和應(yīng)用

    STM32CubeMx入門教程(10):Fatfs文件系統(tǒng)的應(yīng)用

    導(dǎo)語"fatfs是一個小型的文件系統(tǒng),在小型的嵌入式系統(tǒng)中使用非常的廣泛,STM32CubeMx自帶該文件系統(tǒng),我們通過簡單的配置就能夠使用,將前面的
    發(fā)表于 07-12 11:39 ?5526次閱讀
    STM32CubeMx入門教程(10):<b class='flag-5'>Fatfs</b><b class='flag-5'>文件系統(tǒng)</b>的應(yīng)用

    STM32+SD NAND(貼片SD)完成FATFS文件系統(tǒng)移植與測試

    這篇文章就手把手教大家,在STM32上完成FATFS文件系統(tǒng)移植;主控芯片采用STM32F103ZET6, 存儲芯片我這里采用(雷龍) CS創(chuàng)世 SD NAND 。
    的頭像 發(fā)表于 07-17 17:24 ?7677次閱讀
    STM32+<b class='flag-5'>SD</b> NAND(貼片<b class='flag-5'>SD</b><b class='flag-5'>卡</b>)完成<b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>移植</b>與測試

    轉(zhuǎn):基于KL26的SDFatfs文件系統(tǒng)移植

    本文主要講解如何一直FatFs文件系統(tǒng)KL26上,實現(xiàn)SD文件建立,讀寫等功能。[size
    發(fā)表于 06-04 14:41

    FATFS文件系統(tǒng)如何移植工程

    STM32F103ZET6系統(tǒng)板、一個SPI接口的SD槽模塊、一張SD工程完整源碼下載地址
    發(fā)表于 08-24 06:34

    介紹移植fatfs文件系統(tǒng)步驟

    前言嵌入式系統(tǒng)中我們常常對flash、SD、U盤等進行操作,但我們操作一般是直接操作物理地址,使用起來相對來說比較繁瑣,也不能將我們自己寫的數(shù)據(jù)導(dǎo)出到我們的電腦中,這時大名鼎鼎的文件系統(tǒng)
    發(fā)表于 11-23 07:19

    FatFs文件系統(tǒng)的原理是什么?如何對FATFS進行移植

    FatFs文件系統(tǒng)的原理是什么?FatFs文件系統(tǒng)移植方法是什么?如何實現(xiàn)eMMC
    發(fā)表于 11-25 07:52

    靈動微課堂 (第194講) | SDFatFs文件管理系統(tǒng)

    單片機做了優(yōu)化。本章節(jié)主要介紹移植FatFs文件系統(tǒng)SD
    發(fā)表于 01-10 11:31

    如何使用STM32CubeMX移植FATFS文件系統(tǒng)SD

    本篇詳細(xì)的記錄了如何使用STM32CubeMX移植FATFS文件系統(tǒng)SD上。1. 準(zhǔn)備工作硬
    發(fā)表于 03-01 07:45

    基于SDFATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉

    基于SDFATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉。
    發(fā)表于 04-14 16:46 ?40次下載

    STM32單片機移植SDFATFS文件系統(tǒng)

    最近看了32的sdFATFS文件系統(tǒng),現(xiàn)在就自己的理解總結(jié)一下。一、SD模塊
    發(fā)表于 11-15 16:51 ?6次下載
    STM32單片機<b class='flag-5'>移植</b><b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b>

    Fatfs文件系統(tǒng)移植

    Fatfs文件系統(tǒng)移植)一、文件系統(tǒng)介紹二、移植條件、說明1、FatFs模塊在可
    發(fā)表于 11-15 18:51 ?22次下載
    <b class='flag-5'>Fatfs</b>(<b class='flag-5'>文件系統(tǒng)</b>的<b class='flag-5'>移植</b>)

    文件系統(tǒng)FatFs文件系統(tǒng)在嵌入式芯片LPC18XX上的移植

    文件系統(tǒng)FatFs文件系統(tǒng)在嵌入式芯片LPC18XX上的移植
    發(fā)表于 12-04 10:51 ?12次下載
    【<b class='flag-5'>文件系統(tǒng)</b>】<b class='flag-5'>FatFs</b><b class='flag-5'>文件系統(tǒng)</b>在嵌入式芯片LPC18XX上的<b class='flag-5'>移植</b>

    基于STM32+CS創(chuàng)世 SD NAND(貼片SD)完成FATFS文件系統(tǒng)移植與測試(下篇)

    四、移植FATFS文件系統(tǒng)前面第3章,完成了SDNAND的驅(qū)動代碼編寫,這一章節(jié)實現(xiàn)FATFS文件移植
    的頭像 發(fā)表于 03-03 13:52 ?1354次閱讀
    基于STM32+CS創(chuàng)世 <b class='flag-5'>SD</b> NAND(貼片<b class='flag-5'>SD</b><b class='flag-5'>卡</b>)完成<b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>移植</b>與測試(下篇)
    主站蜘蛛池模板: 嫩草国产精品99国产精品| 拔萝卜在线高清观看视频| 2019天天射干| 99久久国产露脸精品国产麻豆| 变态露出野外调教| 久久精品国产亚洲AV影院| 三叶草未满十八岁| 2019伊人查蕉在线观看| 国产人妻777人伦精品HD| 人人干人人插| 13一18TV处流血TV| 挤奶门事件完整照片 | 老牛天天晚上夜噜噜噜| 亚洲国产精品久久又爽黄A片| 大胆国模一区二区三区伊人| 男女车车的车车网站W98免费| 伊人色综合久久天天| 国产精品麻豆a啊在线观看| 日本午夜精品一区二区三区电影| 最新影音先锋av资源台| 啦啦啦影院视频在线看高清...| 亚洲嫩草影院久久精品 | 成人人猿泰山| 青草在线在线d青草在线| 99er久久国产精品在线| 久久综合色一综合色88中文| 中文字幕精品视频在线| 久久精品嫩草影院免费看| 伊人久久大香线蕉综合bd高清| 国内精品偷拍在线观看| 亚洲精品久久无码AV片WWW| 国产女人91精品嗷嗷嗷嗷| 桃色园社区| 国产精品白浆精子流水合集| 天天看学生视频| 国产精品视频国产永久视频| 视频一区视频二区在线观看| 国产精品久久高潮呻吟无码| 我和黑帮老大第365天第2季在线| 国产人成精品综合欧美成人| 野花韩国中文版免费观看|