021-50797827是哪里座机号码大全

1664人阅读
嵌入式Linux(18)
1. /dev/mtdN 是Linux 中的MTD架构中,系统自己实现的mtd分区所对应的字符设备,其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。
而mtd-util中的flash_eraseall等工具,就是以这些ioctl为基础而实现的工具,实现一些关于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/nand/mtdchar.c中的:
static int mtd_ioctl(struct inode *inode, struct file *file,&&&&&& u_int cmd, u_long arg){
。。。。。
case MEMGETINFO:&& info.type = mtd-&&& info.flags = mtd-&&& info.size = mtd-&&& info.erasesize = mtd-&&& info.writesize = mtd-&&& info.oobsize = mtd-&&& /* The below fields are obsolete */&& info.ecctype = -1;&& info.eccsize = 0;&& if (copy_to_user(argp, &info, sizeof(struct mtd_info_user)))&&& return -EFAULT;&&
而/dev/mtdblockN,是Nand Flash驱动中,驱动在用add_mtd_partitions()添加MTD设备分区,而生成的对应的块设备。
根据以上内容,也就更加明白,为什么不能用nandwrite,flash_eraseall,flash_erase等工具去对/dev/mtdblockN去操作了。因为/dev/mtdblock中不包含对应的ioctl,不支持你这么操作。
2. mtd char 设备的主设备号是90,而mtd block设备的主设备号是31:
# ls /dev/mtd? -l crw-r-----&&& 1 root&&&& root&&&&& 90,&& 0 May 30 2007 /dev/mtd0crw-r-----&&& 1 root&&&& root&&&&& 90,&& 2 May 30 2007 /dev/mtd1crw-r-----&&& 1 root&&&& root&&&&& 90,&& 4 Jul 17 2009 /dev/mtd2crw-r-----&&& 1 root&&&& root&&&&& 90,&& 6 May 30 2007 /dev/mtd3crwxrwxrwx&&& 1 root&&&& root&&&&& 90,&& 8 May 30 2007 /dev/mtd4crwxrwxrwx&&& 1 root&&&& root&&&&& 90, 10 May 30 2007 /dev/mtd5crwxrwxrwx&&& 1 root&&&& root&&&&& 90, 12 May 30 2007 /dev/mtd6crwxrwxrwx&&& 1 root&&&& root&&&&& 90, 14 May 30 2007 /dev/mtd7crwxrwxrwx&&& 1 root&&&& root&&&&& 90, 16 May 30 2007 /dev/mtd8crwxrwxrwx&&& 1 root&&&& root&&&&& 90, 18 May 30 2007 /dev/mtd9# ls /dev/mtdblock? -lbrw-r-----&&& 1 root&&&& root&&&&& 31,&& 0 May 30 2007 /dev/mtdblock0brw-r-----&&& 1 root&&&& root&&&&& 31,&& 1 May 30 2007 /dev/mtdblock1brw-r-----&&& 1 root&&&& root&&&&& 31,&& 2 May 30 2007 /dev/mtdblock2brw-r-----&&& 1 root&&&& root&&&&& 31,&& 3 May 30 2007 /dev/mtdblock3brwxrwxrwx&&& 1 root&&&& root&&&&& 31,&& 4 May 30 2007 /dev/mtdblock4brwxrwxrwx&&& 1 root&&&& root&&&&& 31,&& 5 May 30 2007 /dev/mtdblock5brwxrwxrwx&&& 1 root&&&& root&&&&& 31,&& 6 May 30 2007 /dev/mtdblock6brwxrwxrwx&&& 1 root&&&& root&&&&& 31,&& 7 May 30 2007 /dev/mtdblock7brwxrwxrwx&&& 1 root&&&& root&&&&& 31,&& 8 May 30 2007 /dev/mtdblock8brwxrwxrwx&&& 1 root&&&& root&&&&& 31,&& 9 May 30 2007 /dev/mtdblock9
此设备号,定义在/include/linux/mtd/mtd.h中 :
#define MTD_CHAR_MAJOR&& 90#define MTD_BLOCK_MAJOR 31
3. 其中,mtd的块设备的大小,可以通过查看分区信息获得:
# cat /proc/partitions major minor #blocks name
31&&&& 0&&&&&& 1024 mtdblock031&&&& 1&&&&&& 8192 mtdblock131&&&& 2&&&& 204800 mtdblock231&&&& 3&&&&& 65536 mtdblock331&&&& 4&&&& 225280 mtdblock4
上面中显示的块设备大小,是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的大小=1MB=0x100000。
5.mtd的字符设备和块设备的命名规则,可以参考下表:
Table 7-1. MTD /dev entries, corresponding MTD user modules, and relevant device major numbers
char device
char device
block device, read-only block device, JFFS, and JFFS2
Table 7-2. MTD /dev entries, minor numbers, and naming schemes
0 to 32 per increments of 2
N = minor / 2
1 to 33 per increments of 2
N = (minor - 1) / 2
0 to 16 per increments of 1
0 to 255 per sets of 16
L = N = minor - (set - 1) x 16; N is not appended to entry name if its value is zero.
0 to 255 per sets of 16
Same as NFTL.
上表相关内容,请参考附录2.
1.最新的mtd-utils-1.3.0.tar.bz2 下载地址:
2.7.1 MTD-Supported Devices
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:68973次
排名:千里之外
原创:26篇
转载:14篇
评论:16条
(2)(1)(1)(2)(12)(3)(3)(12)(1)(1)(1)(1)字符设备和块设备的区别
字符设备和块设备的区别
发布时间: 19:20:33
编辑:www.fx114.net
本篇文章主要介绍了"字符设备和块设备的区别",主要涉及到字符设备和块设备的区别方面的内容,对于字符设备和块设备的区别感兴趣的同学可以参考一下。
字符设备和块设备的主要区别有两种:
1、他们的最小访问单位不一样;字符设备是一个字节,而块设备是一个块;
2、字符设备不能做到随机访问,而块设备可以做到随机访问;
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:linux内核(3)
linux驱动(1)
设备文件分为Block Device Driver和Character Device Drive两类。Character Device Drive又被称为字符设备或裸设备
Block Device Driver通常成为块设备。而Block Device Driver是以固定大小长度来传送转移资料 ;Character Device Driver是以不定长度的字元传送资料 。且所连接的Devices也有所不同,Block Device大致是可以随机存取(Random Access)资料的设备,如硬碟机或光碟机;而Character Device刚好相反,依循先後顺序存取资料的设备,如印表机 、终端机等皆是。
&&& /dev/dsk对应的为块设备,文件系统的操作用到它,如mount。/dev/rdsk对应的为字符设备(裸设备,rdsk的r即为raw),fsck newfs等会涉及到。一般我们的操作系统和各种软件都是以块方式读写硬盘,这里的块是逻辑块,创建文件系统时可以选择,windows里叫簇。可看newfs
or mkfs的manual。oracle是比较常见的字符方式读写硬盘。
&&& 字符设备还是块设备的定义属于操作系统的设备访问层,与实际物理设备的特性无必然联系。设备访问层下面是驱动程序,所以只要驱动程序提供的方式,都可以。也就是说驱动程序支持stream方式,那么就可以用这种方式访问,驱动程序如果还支持block方式,那么你想用哪种方式访问都可以,典型的比如硬盘式的裸设备,两种都支持块设备(block
device):是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或从设备中一次性读出放入到缓冲区,如磁盘和文件系统等字符设备(Character device):这是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。他不具备缓冲区,所以对这种设备的读写是实时的,如终端、磁带机等。
系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。
&&& 另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。
这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入“fox”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“f”,然后是“o”,最后是“x”,最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容,而被读取的块在磁盘上位置不一定要连续,所以说硬盘可以被随机访问,而不是以流的方式被访问,显然它是一个块设备。
&&& 内核管理块设备要比管理字符设备细致得多,需要考虑的问题和完成的工作相比字符设备来说要复杂许多。这是因为字符设备仅仅需要控制一个位置—当前位置—而块设备访问的位置必须能够在介质的不同区间前后移动。所以事实上内核不必提供一个专门的子系统来管理字符设备,但是对块设备的管理却必须要有一个专门的提供服务的子系统。不仅仅是因为块设备的复杂性远远高于字符设备,更重要的原因是块设备对执行性能的要求很高;对硬盘每多一分利用都会对整个系统的性能带来提升,其效果要远远比键盘吞吐速度成倍的提高大得多。另外,我们将会看到,块设备的复杂性会为这种优化留下很大的施展空间。
linux驱动程序中字符设备和块设备的三点区别
1.字符设备只能以字节为最小单位访问,而块设备以块为单位访问,例如512字节,1024字节等
2.块设备可以随机访问,但是字符设备不可以
3.字符和块没有访问量大小的限制,块也可以以字节为单位来访问
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:22368次
排名:千里之外
原创:11篇
转载:22篇
(4)(5)(2)(20)(2)

我要回帖

更多关于 座机号码大全 的文章

 

随机推荐