日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux系统中/dev/mtd与/dev/mtdblock的区别

發(fā)布時間:2023/12/10 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统中/dev/mtd与/dev/mtdblock的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MTD(memory technology device內(nèi)存技術(shù)設(shè)備)是用于訪問memory設(shè)備(ROM、flash)的Linux的子系統(tǒng)。MTD的主要目的是為了使新的memory設(shè)備的驅(qū)動更加簡單,為此它在硬件和上層之間提供了一個抽象的接口。MTD的所有源代碼在/drivers/mtd子目錄下。我將CFI接口的MTD設(shè)備分為四層(從設(shè)備節(jié)點直到底層硬件驅(qū)動),這四層從上到下依次是:設(shè)備節(jié)點、MTD設(shè)備層、MTD原始設(shè)備層和硬件驅(qū)動層。
MTD字符驅(qū)動程序允許直接訪問flash器件通常用來在flash上創(chuàng)建文件系統(tǒng),也可以用來直接訪問不頻繁修改的數(shù)據(jù)。
MTD塊設(shè)備驅(qū)動程序可以讓flash器件偽裝成塊設(shè)備,實際上它通過把整塊的erase block放到ram里面進行訪問,然后再更新到flash,用戶可以在這個塊設(shè)備上創(chuàng)建通常的文件系統(tǒng)。

?

1. /dev/mtdN 是Linux 中的MTD架構(gòu)中,系統(tǒng)自己實現(xiàn)的mtd分區(qū)所對應(yīng)的字符設(shè)備(將mtd設(shè)備分成多個區(qū),每個區(qū)就為一個字符設(shè)備),其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。

而mtd-util中的flash_eraseall等工具,就是以這些ioctl為基礎(chǔ)而實現(xiàn)的工具實現(xiàn)一些關(guān)于Flash的操作。比如,mtd 工具中的 flash_eraseall中的:

if (ioctl(fd, MEMGETINFO, &meminfo) != 0) {
?? fprintf(stderr, "%s: %s: unable to get MTD device info\n", exe_name, mtd_device);
?? return 1;
}

其中,MEMGETINFO,就是Linux MTD中的drivers/mtd/mtdchar.c中的:

static int mtd_ioctl(struct inode *inode, struct file *file,
?????? u_int cmd, u_long arg)
{

。。。。。

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,是Nand Flash驅(qū)動中,驅(qū)動用add_mtd_partitions()添加MTD設(shè)備分區(qū)(其實就是將mtd設(shè)備進行不同的分區(qū),當mtd設(shè)備還是一樣的,所以mtdblock分區(qū)與mtd分區(qū)肯定是對應(yīng)的),而生成的對應(yīng)的塊設(shè)備

根據(jù)以上內(nèi)容,也就更加明白,為什么不能用nandwrite,flash_eraseall,flash_erase等工具去對/dev/mtdblockN去操作了。因為/dev/mtdblock中不包含對應(yīng)的ioctl,也就沒有定義對應(yīng)的命令,不支持你這么操作。

2. mtd char 設(shè)備的主設(shè)備號是90,而mtd block設(shè)備的主設(shè)備號是31:

# ls /dev/mtd* -l
crw-r-----??? 1 root???? root????? 90,?? 0 May 30 2007 /dev/mtd0
crw-r-----??? 1 root???? root????? 90,?? 2 May 30 2007 /dev/mtd1
crw-r-----??? 1 root???? root????? 90,?? 4 Jul 17 2009 /dev/mtd2
crw-r-----??? 1 root???? root????? 90,?? 6 May 30 2007 /dev/mtd3
crwxrwxrwx??? 1 root???? root????? 90,?? 8 May 30 2007 /dev/mtd4
crwxrwxrwx??? 1 root???? root????? 90, 10 May 30 2007 /dev/mtd5
crwxrwxrwx??? 1 root???? root????? 90, 12 May 30 2007 /dev/mtd6
crwxrwxrwx??? 1 root???? root????? 90, 14 May 30 2007 /dev/mtd7
crwxrwxrwx??? 1 root???? root????? 90, 16 May 30 2007 /dev/mtd8
crwxrwxrwx??? 1 root???? root????? 90, 18 May 30 2007 /dev/mtd9
# ls /dev/mtdblock* -l
brw-r-----??? 1 root???? root????? 31,?? 0 May 30 2007 /dev/mtdblock0
brw-r-----??? 1 root???? root????? 31,?? 1 May 30 2007 /dev/mtdblock1
brw-r-----??? 1 root???? root????? 31,?? 2 May 30 2007 /dev/mtdblock2
brw-r-----??? 1 root???? root????? 31,?? 3 May 30 2007 /dev/mtdblock3
brwxrwxrwx??? 1 root???? root????? 31,?? 4 May 30 2007 /dev/mtdblock4
brwxrwxrwx??? 1 root???? root????? 31,?? 5 May 30 2007 /dev/mtdblock5
brwxrwxrwx??? 1 root???? root????? 31,?? 6 May 30 2007 /dev/mtdblock6
brwxrwxrwx??? 1 root???? root????? 31,?? 7 May 30 2007 /dev/mtdblock7
brwxrwxrwx??? 1 root???? root????? 31,?? 8 May 30 2007 /dev/mtdblock8
brwxrwxrwx??? 1 root???? root????? 31,?? 9 May 30 2007 /dev/mtdblock9

此設(shè)備號,定義在/include/linux/mtd/mtd.h中 :

#define MTD_CHAR_MAJOR?? 90
#define MTD_BLOCK_MAJOR 31

3. 其中,mtd的塊設(shè)備的大小,可以通過查看分區(qū)信息獲得:

# cat /proc/partitions
major minor #blocks name

31???? 0?????? 1024 mtdblock0
31???? 1?????? 8192 mtdblock1
31???? 2???? 204800 mtdblock2
31???? 3????? 65536 mtdblock3
31???? 4???? 225280 mtdblock4

上面中顯示的塊設(shè)備大小,是block的數(shù)目,每個block是1KB。

而每個字符設(shè)備,其實就是對應(yīng)著上面的每個塊設(shè)備。即/dev/mtd0對應(yīng)/dev/mtdblock0,其他以此類推。換句話說,mtdblockN的一些屬性,也就是mtdN的屬性,比如大小。

4。對每個mtd字符設(shè)備的操作,比如利用nandwrite去對/dev/mtd0寫數(shù)據(jù),實際就是操作/dev/mtdblock0。

而這些操作里面涉及到的偏移量offset,都指的是此mtd 分區(qū)內(nèi)的偏移。比如向/dev/mtd1的offset為0的位置寫入數(shù)據(jù),實際操作的是物理偏移offset=/dev/mtd0的大小=1MB=0x100000。

5.mtd的字符設(shè)備和塊設(shè)備的命名規(guī)則,可以參考下表:

Table 7-1. MTD /dev entries, corresponding MTD user modules, and relevant device major numbers

/dev entry

Accessible MTD user module

Device type

Major number

mtdN

char device

char

90

mtdrN

char device

char

90

mtdblockN

block device, read-only block device, JFFS, and JFFS2

block

31

nftlLN

NFTL

block

93

ftlLN

FTL

block

44

Table 7-2. MTD /dev entries, minor numbers, and naming schemes

/dev entry

Minor number range

Naming scheme

mtdN

0 to 32 per increments of 2

N = minor / 2

mtdrN

1 to 33 per increments of 2

N = (minor - 1) / 2

mtdblockN

0 to 16 per increments of 1

N = minor

nftlLN

0 to 255 per sets of 16

L = set;[2] N = minor - (set - 1) x 16; N is not appended to entry name if its value is zero.

ftlLN

0 to 255 per sets of 16

Same as NFTL.

The Linux MTD,YAFFS Howto上面這樣寫道:
Erase the mtdblock0
/>eraseall /dev/mtd0
Create the mount directory and mount
/>mkdir -p /mnt/flash0
/>mount -t yaffs /dev/mtdblock0 /mnt/flash0
為什么eraseall對mtd0操作?而不對mtdblock0操作?nand不是塊設(shè)備嘛,mtdblock就是塊設(shè)備呀。mtd0,mtd1與mtdblock0,mtdblock1是不是一一對應(yīng)的?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Linux系统中/dev/mtd与/dev/mtdblock的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色一级黄色片 | 国产精品96 | 日本xxxx高清 | 久久666| 风韵少妇性饥渴推油按摩视频 | 超碰97在线人人 | 人与性动交zzzzbbbb | 久久久久久爱 | 中文字幕av专区 | 麻豆国产网站 | 91岛国| 欧美顶级少妇做爰hd | 国产中出视频 | 九草影院 | 亚洲免费观看 | 色天堂在线视频 | 成年人的免费视频 | 欧美一卡二卡在线 | 国内自拍第三页 | 麻豆传媒在线免费 | 三年中国片在线高清观看 | 91精品视频免费观看 | 激情瑟瑟| 中国女人av | 户外露出一区二区三区 | 欧美日韩另类视频 | 欧美日韩中文视频 | 久久99精品久久久久 | 波多野吉衣在线视频 | 91国产高清| 四虎影视成人永久免费观看亚洲欧美 | 国产免费一区二区三区免费视频 | 日韩视频在线观看免费视频 | 国产午夜视频在线播放 | 国产丝袜视频在线 | 欧美激情视频一区 | 青青草原av在线 | 伊人天天 | 激情综合av | 亚洲午夜剧场 | 国产免费美女 | 久久九九免费视频 | 韩日三级视频 | av在线天天| 嫩草av91 | 97性视频| 亚洲精品www久久久久久广东 | 亚洲一区二三区 | 国产精品久久久久久久成人午夜 | 午夜影院免费看 | caoprom超碰 | 久久久久无码国产精品一区 | 国产成人+综合亚洲+天堂 | 欧美成人吸奶水做爰 | 瑟瑟在线观看 | 国产高清视频一区 | 干爹你真棒插曲免费 | 国产一区二区在线免费观看 | 免费在线观看不卡av | 久久免费在线观看 | 中文字幕91在线 | 国产福利短视频 | 大桥未久av在线播放 | 一区二区三区网站 | 爱情岛论坛亚洲品质自拍视频 | 欧美日韩国产传媒 | 轻轻色在线观看 | 白嫩情侣偷拍呻吟刺激 | 国产一区二区在线免费 | 国产wwwwwww| 国产婷婷在线观看 | 精产国产伦理一二三区 | 男生操男生网站 | 黄色国产在线 | 中文字幕电影一区 | 国产喷水在线 | 日韩美女国产精品 | 波多野结衣中文字幕久久 | 日韩一级片中文字幕 | 亚洲最大毛片 | 在线一二区 | 人妖粗暴刺激videos呻吟 | 午夜影院免费视频 | 免费在线观看黄视频 | h视频在线免费看 | 奇米影视777在线观看 | 捆绑japanhdxxxxvideos| av第一福利大全导航 | 日韩黄色短视频 | 久久精品国产久精国产 | 久操视频网 | 日本中文在线播放 | 亚洲国产成人精品女人久久 | 国产性―交―乱―色―情人 | wwwxxoo| 99久久精品免费看国产免费软件 | beeg日本高清xxxx18 | 中国吞精videos露脸 | 国产级毛片|