dev mtd和 dev mtdblock的區別

2021-07-05 11:45:25 字數 1720 閱讀 6925

轉貼備用!

1、/dev/mtdn是linux中的mtd架構中,系統自己實現的mtd分割槽所對應的字元裝置,其裡面新增了一些ioctl,支援很多命令,如memgetinfo,memerase等。

而mtd-util中的flash_eraseall等工具,就是以這些ioctl為基礎而實現的工具,實現一些關於flash的操作,比如,mtd工具中的flash_eraseall中的:

if(ioctl(fd,memgetinfo,&meminfo) != 0)

其中,memgetinfo,就是linux mtd中的\drivers\mtd\nand\mtdchar.c中的:

case memgetinfo:

info.type = mtd->type;

info.flags = mtd->flags;

info.size = mtd->size;

info.erasesize = mtd->erasesize;

info.writesize = mtd->writesize;

info.oobsize = mtd->oobsize;

/* the below fields are obsolete */

info.ecctype = -1;

info.eccsize = 0;

if (copy_to_user(argp, &info, sizeof(struct mtd_info_user)))

return -efault;

break;

而/dev/mtdblockn,是nandflash驅動中,驅動在用add_mtd_partitions()新增mtd裝置分割槽而生成的對應的塊裝置。根據以上內容也更加明白,為什麼不能用nandwrite,flash_eraseall,flash_erase等工具去對/dev/mtdblockn去操作了,因為/dev/mtdblock中不包含對應的ioctl,不支援你這麼操作。

2、mtd char裝置的主裝置號是90;而mtdblock裝置的主裝置號是31;

此裝置號定義在\include\linux\mtd\mtd.h中

3、mtd塊裝置的大小可以通過檢視分割槽資訊來得到:

# cat /proc/partitions

major minor  #blocks  name

31        0        128 mtdblock0

31        1        128 mtdblock1

31        2        512 mtdblock2

31        3       2048 mtdblock3

31        4      32768 mtdblock4

31        5     486400 mtdblock5

上面顯示的塊裝置的大小,是block的數目,每個block是1kb;

而每個字元裝置,其實就是對應著上面的餓每個裝置,即/dev/mtd0對應/dev/mtdblock0,以此類推,換句話說,mtdblockn的一些屬性,也就是mtdn的屬性,比如大小。

4、對每個mtd字元裝置的操作,比如利用nandwrite去對/dev/mtd0寫資料,實際就是操作/dev/mtdblock0。而這些操作裡面涉及到得offset都指的是mtd分區內的偏移。比如向/dev/mtd1的offset為0的位置寫入資料,實際操作的物理偏移是offset=/dev/mtd0的大小=128kb。

5、mtd的字元裝置和塊裝置的命名規則,可以參考下表:

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...

rpx和樣式和class和flex

5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...

if和switch和for語句

if和switch很像。具體什麼場景下,應用那個語句呢?如果判斷的具體數值不多,而是符合byte,short,int,char,字串。這五種型別。雖然兩個語句都可以使用,建議使用switch語句,因為效率稍高。其他情況,對區間判斷,對結果為boolean型別判斷,使用if,if的使用範圍更廣。whi...