Embedded 如何在嵌入式linux上找出哪个分区映射到哪个内存设备类型?
fdisk命令没有提供有关此问题的详细信息。我想知道哪个硬件内存设备映射到嵌入式linux上/dev/下的哪个分区节点Embedded 如何在嵌入式linux上找出哪个分区映射到哪个内存设备类型?,embedded,embedded-linux,yocto,openembedded,Embedded,Embedded Linux,Yocto,Openembedded,fdisk命令没有提供有关此问题的详细信息。我想知道哪个硬件内存设备映射到嵌入式linux上/dev/下的哪个分区节点 我正在I.mx处理器6quad SABRESD上运行3.10嵌入式linux(yocto项目),用于智能设备板。如果您在嵌入式系统中使用udev,您可以从udev获取一些信息(因为您使用的是Yocto,所以很有可能您使用的是udev,除非您真的将其缩减到最小系统) 例如,我在BeagleBone Black类型的系统上运行Yocto,该系统有一个SD卡和一个板载eMMC。设备显
我正在I.mx处理器6quad SABRESD上运行3.10嵌入式linux(yocto项目),用于智能设备板。如果您在嵌入式系统中使用
udev
,您可以从udev
获取一些信息(因为您使用的是Yocto,所以很有可能您使用的是udev
,除非您真的将其缩减到最小系统)
例如,我在BeagleBone Black类型的系统上运行Yocto,该系统有一个SD卡和一个板载eMMC。设备显示为/dev/mmcblk0
和/dev/mmcblk1
,其运行方式取决于它从哪个内存启动(启动设备总是/dev/mmcblk0
)
您可以使用udevadm info-a-n
获取有关设备的信息:
# udevadm info -a -n /dev/mmcblk0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/ocp/48060000.mmc/mmc_host/mmc0/mmc0:b368/block/mmcblk0':
KERNEL=="mmcblk0"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="1953792"
ATTR{stat}==" 585 388 38332 3420 78 64 1136 1370 0 2960 4790"
ATTR{range}=="8"
ATTR{discard_alignment}=="0"
ATTR{force_ro}=="0"
ATTR{ext_range}=="8"
ATTR{alignment_offset}=="0"
ATTR{inflight}==" 0 0"
ATTR{removable}=="0"
ATTR{capability}=="10"
looking at parent device '/devices/ocp/48060000.mmc/mmc_host/mmc0/mmc0:b368':
KERNELS=="mmc0:b368"
SUBSYSTEMS=="mmc"
DRIVERS=="mmcblk"
ATTRS{cid}=="1b534d30303030301002b2ffa200b27f"
ATTRS{csd}=="002f00325b5983b9edb7ff9f16400005"
ATTRS{scr}=="0225000000000000"
ATTRS{date}=="02/2011"
ATTRS{name}=="00000"
ATTRS{type}=="SD"
ATTRS{preferred_erase_size}=="4194304"
ATTRS{fwrev}=="0x0"
ATTRS{hwrev}=="0x1"
ATTRS{oemid}=="0x534d"
ATTRS{manfid}=="0x00001b"
ATTRS{serial}=="0x02b2ffa2"
ATTRS{erase_size}=="512"
looking at parent device '/devices/ocp/48060000.mmc/mmc_host/mmc0':
KERNELS=="mmc0"
SUBSYSTEMS=="mmc_host"
DRIVERS==""
looking at parent device '/devices/ocp/48060000.mmc':
KERNELS=="48060000.mmc"
SUBSYSTEMS=="platform"
DRIVERS=="omap_hsmmc"
looking at parent device '/devices/ocp':
KERNELS=="ocp"
SUBSYSTEMS=="platform"
DRIVERS==""
然后,您可以制定一个udev规则,以创建一个指向您感兴趣的设备/分区的符号链接。例如:
SUBSYSTEM=="block", ATTRS{type}=="MMC", ATTR{partition}=="2", SYMLINK+="mmcblk-emmc-data"
SUBSYSTEM=="block", ATTRS{type}=="SD", ATTR{partition}=="2", SYMLINK+="mmcblk-sd-data"
哪一个应构成一个或两个符号链接:
# ls -al /dev/mmcblk-*
lrwxrwxrwx 1 root root 9 Jul 1 17:34 /dev/mmcblk-emmc-data -> mmcblk1p2
lrwxrwxrwx 1 root root 9 Jul 1 17:34 /dev/mmcblk-sd-data -> mmcblk0p2
键入
mount
。它应该说明每个装载点是什么。另外cat/etc/mtab
。mount不会显示设备名称的含义,除非名称本身有意义(通常是有意义的)。最终,您需要查看MTD的配置或实际提供MTD的任何内容。这通常会编译到内核本身(这应该可以消除关于它的任何疑问)您是否尝试过cat/proc/mtd
和cat/proc/partitions
?cat-proc/mtd
恰好提供了最有意义的信息,但它只提供了一个SPI设备的相关信息。每一个其他命令都会提供有意义的信息,如文件系统类型、磁道和扇区以及块大小,但没有设备名称。此设备名称似乎是在硬件的设备树绑定器中分配的。我希望linux能够将其吐出来。linux MTD是主数字90。您可以使用ls-l/dev/MTD*
或ls-l/dev/| grep 90
。如果您使用的是完全没有大脑的用户空间,则将/dev与/proc/MTD绑定。MTD不是一个设备,它是设备的一个分区。cat/proc/cmdline
可能有一个root=xxx
行。