Mbed OS 的檔案系統

2021-10-09 12:23:06 字數 2120 閱讀 4104

arm mbed os 的檔案系統不僅僅支援sd 卡上的檔案系統,而且支援 內部ram,內部rom,外接spi /qspi nor flash rom等等。 

檔案系統是建立在塊裝置上的,所以首先要定義塊裝置(blockdevice)。

mbed os 中有許多種的blockdevice ,但是最重要的是下面幾種。

sdblockdevice sd 卡

spi flash block device 外接的spi nor flash

flashiapblockdevice  處理器內部的flash 作為塊裝置

例如  sd卡裝置寫成:

sdblockdevice sd(mbed_conf_sd_spi_mosi, mbed_conf_sd_spi_miso, mbed_conf_sd_spi_clk, mbed_conf_sd_spi_cs);
也可以使用new 的方式

blockdevice *sd=new sdblockdevice(mbed_conf_sd_spi_mosi, mbed_conf_sd_spi_miso, mbed_conf_sd_spi_clk, mbed_conf_sd_spi_cs);
mbed os 6 的檔案系統有兩種:

適合sd卡的檔案系統。

例項:

#include "mbed.h"

#include "sdblockdevice.h"

sdblockdevice sd(mbed_conf_sd_spi_mosi, mbed_conf_sd_spi_miso, mbed_conf_sd_spi_clk, mbed_conf_sd_spi_cs);

fatfilesystem fs("fs");

main()

適合外接的flash 儲存器件。

例項   在記憶體建乙個檔案系統,blockdevice 型別是heapblockdevice,檔案系統 littlefilesystem

#include "littlefilesystem.h"

#include #include "heapblockdevice.h"

#include using namespace std;

#define block_size 512

heapblockdevice bd(4096,512);

littlefilesystem fs("fs");

uint8_t block[block_size] = "hello world!\n";

int main()

err = fs.mount(&bd);

if (err)

file *f = fopen("/fs/hello.txt", "wt");

fputs("hello the world\n",f);

// close file

fflush(f);

fclose(f);

// open directory

printf("------opening the root directory... ");

dir *d = opendir("/fs/");

while (true)

printf(" %s\n", e->d_name);

}closedir(d);

//open file again

printf("-----opening the file again-----\n");

// fflush(stdout);

f = fopen("/fs/hello.txt", "r");

fseek(f, 0l, seek_end);

int sz = ftell(f);

printf("file size=%d\n",sz);

fseek(f,0l,seek_set);

if (!f) {

cout <<"file open error"《這個程式除錯過了,mbed os 6.2,搞了好久。遇到乙個問題。當heapdevice 的長度設定為2048 的時候,再次開啟檔案時,檔案是空的。後來將長度改為4096 就好了。

檔案系統 檔案系統的架構

vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

檔案系統 編寫檔案系統

8.5 編寫乙個檔案系統 如果寫乙個實際檔案系統,但是涉及的東西太多,不容易簡明扼要的理解檔案系統的實現。linux核心中提供的romfs檔案系統是個非常理想的例子,既有實際應用架構,也清晰明了,故以romfs為例項分析檔案系統的實現。一 linux檔案系統的實現要素 編寫新檔案系統涉及一些基本物件...