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檔案系統的實現要素 編寫新檔案系統涉及一些基本物件...