如何在设备树中为 e.MMC 设备定义分区 table?

How to define a partition table for an e.MMC device in a device tree?

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

据我了解,分区 table 可以在设备树中定义,这样我就可以 select 在两个或多个分区 table 之间使用单个设备树设备树中的多个分区 table,或多个设备树,每个都有自己的分区 table.

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

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

根据您的设置和要求,您可以通过单独的步骤从引导加载程序对 eMMC 进行格式化和分区,或者使用类似 genimage 的工具,它通过采用您的 eMMC 分区要求的规范来生成单个 .img。参见 genimage。 .img 文件可用于使用简单的 "dd" 工具烧写 eMMC。

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

附录:我忘了添加如何从 u-boot 格式化。你没有提到你正在使用的确切设备,但是像 u-boot 这样的东西的 eMMC 闪存过程对于所有 SoC 来说几乎是一样的。例如,看看 here。如果您使用 barebox 作为引导加载程序,我认为它应该几乎相同,但我不能肯定地说,因为我从未使用过 barebox。