【问题标题】:How to define a partition table for an e.MMC device in a device tree?如何在设备树中为 e.MMC 设备定义分区表?
【发布时间】:2019-01-06 20:39:32
【问题描述】:

我正在开发具有 16GB e.MMC 部件用于大容量存储的定制设备。这是一个嵌入式系统,我们正在使用 Yocto 来构建我们的内核和其他好东西。

据我了解,分区表可以在设备树中定义,这样我就可以使用设备树中具有多个分区表的单个设备树或多个设备树在两个或多个分区表之间进行选择,每个设备树都具有他们自己的分区表。

在我的一生中,我找不到一个示例来说明如何将 MMC 设备的分区表放入设备树中。谁能指出我可以查看并为我们的应用程序修改的 MMC/SD 存储设备分区的工作示例?

【问题讨论】:

    标签: embedded-linux device-tree


    【解决方案1】:

    我可能是错的,但是,我从未见过在设备树中指定 eMMC 分区。 eMMC 分区通常是某种刷写过程的一部分。例如,像 buildroot 和 OpenEmbedded/Yocto 这样的构建系统可以生成一个压缩的 ext4 rootfs 映像,并且按照 SoC 启动所需的文件放在通常倾向于 FAT32 的第一个分区中。但是,也有 distroboot,其中只有一个 eMMC 分区格式化为 ext4,启动所需的文件从该分区的 /boot 中挑选。

    根据您的设置和要求,您可以使用单独的步骤从引导加载程序中对 eMMC 进行格式化和分区,也可以使用 genimage 工具之类的工具,该工具通过获取 eMMC 分区要求的规范来生成单个 .img。见genimage。 .img 文件可用于使用简单的“dd”工具刷写 eMMC。

    要使用 genimage,作为 Yocto 构建过程的一部分,您需要meta-ptx 层。

    附录:我忘记添加如何从 u-boot 格式化。您没有提及您正在使用的确切设备,但来自 u-boot 之类的 eMMC 刷新过程对于所有 SoC 几乎相同。例如,看看here。如果您使用 barebox 作为引导加载程序,我认为它应该几乎相同,但我不能肯定地说,因为我从未使用过 barebox。

    【讨论】:

    • “我从未见过在设备树中指定 eMMC 分区” -- 我同意。 MTD 分区可以在设备树中指定,但 MTD 用于原始闪存。 eMMC 不是原始闪存。 eMMC 像 SD 卡一样处理,也就是说第一个扇区有 MBR 分区表。
    • 你没有错。显然,这个建议是由于一些混乱和沟通不畅而产生的。它被重复得越多,它就越被接受为事实。
    • 设备树中 mmc 上定义的分区示例:git.pengutronix.de/cgit/barebox/tree/arch/arm/dts/…
    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2017-04-21
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多