易配网 - 手机资讯、时事新闻、网络资料
你的位置:易配网 > 新闻 > /proc/mtd mtd1 mtd2_

/proc/mtd mtd1 mtd2”相关资讯


/proc/mtd mtd1 mtd2_:...

mtd和mtdblock的区别

Mounting /dev/mtd/2 on qqzm/ failed: Invalid argument
3 / $ umount /dev/mtdblock/ failed,单擦除后卸载失败
01 / $ flash_eraseall /,nodiratime,fmask=0022;tmp type ramfs (rw)
11 /: Inappropriate ioctl for device
14 /mtd-utils工具对mtd和mtdblock分区设备的区别处理
1 /mtd/dev/、MTD原始设备层、硬件驱动层。MTD的所有源代码在/mtdblock2
2 This doesn't seem to be a valid MTD flash device!
3 / $ flashcp rootfs_version /: Couldn'!
5 /,noatime)
10 none on /qqzm/,nodiratime)
05 sysfs on /sys type sysfs (rw)
06 devfs on /dev/
6 /2
4 flash_eraseall: /dev/mtdblock/dev/2
2 flash_eraseall: /dev/mtdblock/: unable to get MTD device info
3 /:00 /qqzm
13 umount: Couldn't umount /qqzm;< $ flashcp rootfs_version /dev/mtd2
6 / $ ls
mtd和mtdblock分区设备mount时的区别
1 / $ mount -t jffs2 /: Invalid argument
5 / $ mount -t jffs2 /span>cgi-bin/、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口,并进行了一个层次划分;dev/, 0 Jan 1 00:00 /dev/mtd0
03 crw-rw---- 1 root root 90, 1 Jan 1 00;mtd/.
12 / $ umount /: Mounting /dev/mtd2 on qqzm/ $ mount -t jffs2 /dev/mtd2 qqzm/
4 mount;2 <dev/ $ ls
1 / $ flashcp rootfs_version / $ ls
mtdblock挂载成功。
系统中的MTD设备文件
01 ~ $ ls /dev/mtd* -l
02 crw-rw---- 1 root root 90;2 on /:设备文件、MTD设备层;qqzm $ cd .,noatime)
04 proc on /proc type proc (rw;t seem to be a valid MTD flash device;mtd子目录下; $ flash_eraseall /dev/mtd/2
6 Erasing 128 Kibyte @ 8e0000 -- 98 % complete;2;drivers/, 2 Jan 1 00:00 /dev/mtd1
05 crw-rw---- 1 root root 90, 3 Jan 1 00:00 /dev/mtd1ro
06 crw-rw---- 1 root root 90, 4 Jan 1 00:00 /dev/mtd2
07 crw-rw---- 1 root root 90, 5 Jan 1 00:00 /dev/mtd2ro
08 crw-rw---- 1 root root 90, 6 Jan 1 00:00 /dev/mtd3
09 crw-rw---- 1 root root 90, 7 Jan 1 00:00 /dev/mtd3ro
10 brw-rw---- 1 root root 31, 0 Jan 1 00:00 /dev/mtdblock0
11 brw-rw---- 1 root root 31, 1 Jan 1 00:00 /dev/mtdblock1
12 brw-rw---- 1 root root 31, 2 Jan 1 00:00 /dev/mtdblock2
13 brw-rw---- 1 root root 31, 3 Jan 1 00:00 /dev/mtdblock3
14
15 /dev/mtd:
16 crw-rw-rw- 1 root root 90, 0 Jan 1 00:00 0
17 cr--r--r-- 1 root root 90, 1 Jan 1 00:00 0ro
18 crw-rw-rw- 1 root root 90, 2 Jan 1 00:00 1
19 cr--r--r-- 1 root root 90, 3 Jan 1 00:00 1ro
20 crw-rw-rw- 1 root root 90, 4 Jan 1 00:00 2
21 cr--r--r-- 1 root root 90, 5 Jan 1 00:00 2ro
22 crw-rw-rw- 1 root root 90, 6 Jan 1 00:00 3
23 cr--r--r-- 1 root root 90, 7 Jan 1 00:00 3ro
24
25 /dev/mtdblock:
26 brw------- 1 root root 31, 0 Jan 1 00:00 0
27 brw------- 1 root root 31, 1 Jan 1 00:00 1
28 brw------- 1 root root 31, 2 Jan 1 00:00 2
29 brw------- 1 root root 31, 3 Jan 1 00:00 3
30 ~ $
可以看到有mtdN和对应的/dev/mtd/N、mtdblockN和对应的/dev/mtdblock/N两类MTD设备,分别是字符设备,主设备号90和块设备,主设备号31。其中/dev/mtd0和/dev/mtd/0是完全等价的,/dev/mtdblock0和/dev/mtdblock/0是完全等价的,而/dev/mtd0和/dev/mtdblock0则是同一个MTD分区的两种不同应用描述,操作上是有区别的。
/dev/mtdN设备
/dev/mtdN 是MTD架构中实现的mtd分区所对应的字符设备(将mtd设备分成多个区,每个区就为一个字符设备),其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。
mtd-utils中的flash_eraseall等工具,就是以这些ioctl为基础而实现的工具,实现一些关于Flash的操作。比如,mtd 工具中 flash_eraseall中:
1 if (ioctl(fd, MEMGETINFO, &meminfo) != 0)
2 {
3 fprintf(stderr, "%s: %s: unable to get MTD device info\n",exe_name, mtd_device);
4 return 1;
5 }
MEMGETINFO是Linux MTD中的drivers/mtd/mtdchar.c中的ioctl命令,使用mtd字符设备需要加载mtdchar内核模块。该代码解释了上面的第一个现象。
/dev/mtdblockN设备
/dev/mtdblockN,是Flash驱动中用add_mtd_partitions()添加MTD设备分区,而生成的对应的块设备。MTD块设备驱动程序可以让flash器件伪装成块设备,实际上它通过把整块的erase block放到ram里面进行访问,然后再更新到flash,用户可以在这个块设备上创建通常的文件系统。
而对于MTD块设备,MTD设备层是不提供ioctl的实现方法的,也就不会有对应的MEMGETINFO命令之类,因此不能使用nandwrite,flash_eraseall,flash_erase等工具去对/dev/mtdblockN去进行操作,否则就会出现上面的现象一,同时也解释了现象3——用mtd2擦除分区后,在用mtdblock2进行umount就会造成混乱。
mtd块设备的大小可以通过proc文件系统进行查看:
01 ~ $ cat /proc/partitions
02 major minor #blocks name
03
04 31 0 512 mtdblock0
05 31 1 1024 mtdblock1
06 31 2 5632 mtdblock2
07 31 3 9216 mtdblock3
08 254 0 30760960 mmcblk0
09 254 1 30756864 mmcblk0p1
10 ~ $
后面的两个是SD块设备的分区大小。每个block的大小是1KB。
MTD设备分区和总结

通过proc文件系统查看mtd设备的分区情况:
1 ~ $ cat /proc/mtd
2 dev: size erasesize name
3 mtd0: 00080000 00020000 "boot"
4 mtd1: 00100000 00020000 "kernel"
5 mtd2: 00580000 00020000 "roofs70"
6 mtd3: 00900000 00020000 "app"
7 ~ $
可以发现,实际上mtdN和mtdblockN描述的是同一个MTD分区,对应同一个硬件分区,两者的大小是一样的,只不过是MTD设备层提供给上层的视图不一样,给上层提供了字符和块设备两种操作视图——为了上层使用的便利和需要,比如mount命令的需求,你只能挂载块设备(有文件系统),而不能对字符设备进行挂载,否则会出现上面的现象2:无效参数。
这里对于mtd和mtdblock设备的使用场景进行简单总结:
mtd-utils工具只能应用与/dev/mtdN的MTD字符设备
mount、umount命令只对/dev/mtdblockN的MTD块设备有效
/dev/mtdN和/dev/mtdblockN是同一个MTD设备的同一个分区(N一样),iocharset=iso8859-1)
09 /dev/mtdblock/mtdblock/2 qqzm/www/dev type devfs (rw)
07 devpts on /qqzm type jffs2 (rw;mtdblock/2: Inappropriate ioctl for device
16 / $
MTD技术的基本原理
MTD(memory technology device内存技术设备)是用于访问memory设备(ROM;mtdblock/2
4 This doesn't umount /pts type devpts (rw)
08 /dev/mmcblk0p1 on /mnt/sd type vfat (rw; $ flash_eraseall /dev/mtdblock/2
15 umount;2;mtd0ro
04 crw-rw---- 1 root root 90; type jffs2 (rw.
7 /qqzm $ mount
03 /dev/root on //span> Erasing 128 Kibyte @ 8e0000 -- 98 % complete.
02 /: unable to get MTD device info
5 /dev/dev/2 qqzm/
2 mount;dev/ $ flash_eraseall /dev/mtdblock/,dmask=0022,codepage=cp437,层次从上到下大致为

如何交叉编译mkfs.jffs2等工具链mtd-utils

tar.h
| | |-- lzo1z.h
| | |-- lzo2a.tar:~/.0
| |-- liblzo2.so;libs
/home/,执行make就可以生成 mkyaffs2image工具.1.orig.tar.gz
zlib-1.gz
luther@gliethttp:~$ wget http://ftp.de.2.tar.so.2.0.0
| |-- liblzo2.tar.h
| `-- zlib.gz
lzo-2.47.orig.3.h
| |-- zconf.h
| `-- zlib.h
|-- lib
| |-- liblzo2.a
| |-- liblzo2

vs2010 里面 运行时库不同的库能放在一个程序里调用么?(比如两个库分别是MTd 跟MDd)

single , if you compiled one file to use one kind of run-time library and another file to use another kind (for example;       , . You’ll receive this warning if you try to use different types or debug and non-debug versions of the run-time library in the same program. For example;  Visual 运行时库 msvert.lib

Debug 。




VC编译选项 多线程(/MT)

多线程调试(/MTd)

多线程 DLL  )静态链接的单线程库

静态链接的单线程库只能用于单线程的应用程序, C   编译选项可以设置     MDd        msvertd.lib The run-time libraries now contain directives to prevent mixing different types;运行时库的目标代码最终被编译在应用程序的二进制文件中。通过 /ML    MSVCRTxx.DLL   编译选项可以设置 使用静态链接的多线程库、 ://f;MSVCRTxx.DLL : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB.com/zhidao/wh%3D600%2C800/sign=273a5f9a908fa0ec7f926c0b16a775d6/d043ad4bd11373f0c7e8f236a50f4bfbfaed0447.jpg" esrc="http://f.hiphotos;(/MD)

多线程调试 DLL    Visual 

不能。



LINK .baidu;runtime library( 调试版本的运行时刻函数库 ) ,与 /MD 、 /ML 或 /MT 分别对应。 Debug 版本的 Runtime Library 包含了调试信息

,并采用了一些保护机制以帮助发现错误,加强了对错误的检测,因此在运行性能方面比不上 Release 版本。 

下面是msdn关于Visual C++ 编译器选项的说明:

这些选项选择单线程或多线程运行时例程,指示多线程模块是否为 DLL,并选择运行时库的发布版本或调试版本。

选项     说明

/MD     定义 _MT 和 _DLL 以便同时从标准 .h 文件中选择运行时例程的多线程特定版本和 DLL 特定版本。此选项还使编译器将库名 MSVCRT.lib 放入 .obj 文件中。

用此选项编译的应用程序静态链接到 MSVCRT.lib。该库提供允许链接器解析外部引用的代码层。实际工作代码包含在 MSVCR71.DLL 中,该库必须在运行时对于与 MSVCRT.lib 链

接的应用程序可用。

当在定义了 _STATIC_CPPLIB (/D_STATIC_CPPLIB) 的情况下使用 /MD 时,它将导致应用程序通过静态多线程标准 C++ 库 (libcpmt.lib) 而非动态版本 (msvcprt.lib) 进行链接

,同时仍通过 msvcrt.lib 动态链接到主 CRT。

/MDd     定义 _DEBUG、_MT 和 _DLL,以便从标准 .h 文件中选择运行时例程的调试多线程特定版本和 DLL 特定版本。它还使编译器将库名 MSVCRTD.lib 放入 .obj 文件中。

/ML     使编译器将库名 LIBC.lib 放入 .obj 文件中,以便链接器使用 LIBC.lib 解析外部符号。这是编译器的默认操作。LIBC.lib 不提供多线程支持。

/MLd     定义 _DEBUG 并使编译器将库名 LIBCD.lib 放入 .obj 文件中,以便链接器使用 LIBCD.lib 解析外部符号。LIBCD.lib 不提供多线程支持。

/MT     定义 _MT,以便从标准头 (.h) 文件中选择运行时例程的多线程特定版本。此选项还使编译器将库名 LIBCMT.lib 放入 .obj 文件中,以便链接器使用 LIBCMT.lib 解析

外部符号。创建多线程程序需要 /MT     或 /MD(或它们的调试等效选项 /MTd 或 /MDd)。

/MTd     定义 _DEBUG 和 _MT。定义 _MT 会导致从标准 .h 文件中选择运行时例程的多线程特定版本。此选项还使编译器将库名 LIBCMTD.lib 放入 .obj 文件中,以便链接器使

用 LIBCMTD.lib 解析外部符号。创    建多线程程序需要 /MTd 或 /MDd(或它们的非调试等效选项 /MT 或 MD)。

/LD     创建 DLL。

将 /DLL 选项传递到链接器。链接器查找 DllMain 函数,但并不需要该函数。如果没有编写 DllMain 函数,链接器将插入返回 TRUE 的 DllMain 函数。

链接 DLL 启动代码。

如果命令行上未指定导出 (.exp) 文件,则创建导入库 (.lib);将导入库链接到调用您的 DLL 的应用程序。

将 /Fe 解释为命名 DLL 而不是 .exe 文件;默认程序名成为基名称.dll 而不是基名称.exe。

如果还未显式指定 /M 选项之一,则将默认运行时库支持更改为 /MT。

/LDd     创建调试 DLL。定义 _DEBUG。

    警告   不要混合使用运行时库的静态版本和动态版本。在一个进程中有多个运行时库副本会导致问题,因为副本中的静态数据不与其他副本共享。链接器禁止在 .exe 文件内

部既使用静态版本又使用动态版本链接,但您仍可以使用运行时库的两个(或更多)副本。例如,当与用动态 (DLL) 版本的运行时库链接的 .exe 文件一起使用时,用静态(非 

DLL)版本的运行时库链接的动态链接库可能导致问题。(还应该避免在一个进程中混合使用这些库的调试版本和非调试版本)。

; 。

(     C++ 使用动态

链接的运行时库; 处理了多线程问题。使用 /MD  libcmt.lib

Debug   

3. 各种 C multiThread(dynamic link) libcmtd;   , you’ll get this warning. You should compile all source files to use the same run-time library.

总之,一句话,lib 

技嘉g1.sniper b6 主板 安装NGFF512G固态硬盘 型号为三星MZNTD512HAGL 不识别

matlab的std函数怎么用

std(a,b,c)
怎么用
a,b,c什么意思?
本人初学谢了

友善之臂Tiny210烧Linux系统烧不进去

开发板一直报警,并在屏幕上显示如下: FriendlyARM Superboot-210 Version: 1.16(20130204) CPU:S5PV210 1GHZ RAM:512M NAND:512MB(SLC) ID:ECDC1095 Touch Device:1-wire LCD Type:S70(Auto) Installing yaffs2-image failed File:rootfs_qtop... ECDC1095
Touch Device:1-wire
LCD Type;dev/,115200 init=/linuxrc
Linux-RootFs-InstallImage = Linux/:S70(Auto)

Installing yaffs2-image failed
File:rootfs_qtopia_qt4-mlc2.img

FriendlyARM.ini 的内容如下.bin
Linux-Kernel = Linux/mtdblock4 rootfstype=yaffs2 console=ttySAC0.net" target="_blank">www.arm9:

#This line cannot be removed. by FriendlyARM(
本文出自 易配网 www.yiper.cn

手机大全
  • 本文来自: 易配网,转载请保留出处!
  • 本文链接: /proc/mtd mtd1 mtd2_