gpt4 book ai didi

embedded - u-boot 中的 Nand 分区

转载 作者:行者123 更新时间:2023-12-04 02:53:57 29 4
gpt4 key购买 nike

我正在开发嵌入式 ARM9 开发板。我想重新排列我的 nand 分区。谁能告诉我怎么做?

在我的 u-boot shell 中,如果我给出命令 mtdparts,它提供以下信息。

Boardcon> mtdparts      

device nand0 <nandflash0>, # parts = 7

#: name size offset mask_flags
0: bios 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: toc 0x00020000 0x00060000 0
3: eboot 0x00080000 0x00080000 0
4: logo 0x00100000 0x00100000 0
5: kernel 0x00200000 0x00200000 0
6: root 0x03c00000 0x00400000 0

active partition: nand0,0 - (bios) 0x00040000 @ 0x00000000

defaults:
mtdids : nand0=nandflash0
mtdparts: mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(logo),2m(kernel),-(root)

内核引导消息显示以下内容:
 Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "Boardcon_Board_uboot"
0x000000200000-0x000000400000 : "Boardcon_Board_kernel"
0x000000400000-0x000003ff8000 : "Boardcon_Board_yaffs2"

任何人都可以向我解释这两条消息之间的关系。内核或 u-boot 中哪一个负责在 nand flash 上创建分区?至于我知道内核不会在每次启动时创建分区,但为什么会出现消息“ 创建 3 个 MTD 分区 ”?

最佳答案

对于闪存设备,NAND 或 NOR,没有分区表在设备本身上。也就是说,您无法在闪存阅读器中读取设备并找到一些表来指示设备上有多少个分区以及每个分区的开始和结束位置。只有一个未区分的块序列。这是 MTD 闪存设备与磁盘等设备或 MMC 等 FTL 设备之间的根本区别。

闪存设备的分区因此在旁观者的眼中,即 U-Boot 或内核,并且分区是在旁观者运行时“创建”的。这就是为什么您会看到消息 Creating 3 MTD partitions .它反射(reflect)了一个事实,即闪存分区实际上只存在于正在运行的内核的 MTD 系统中,而不存在于闪存设备本身。

这导致了 U-Boot 和内核可以对闪存分区有不同定义的情况,这显然是在 OP 的情况下发生的情况。

在 U-Boot 中,您可以在 mtdparts 中定义闪存分区。环境变量。在 Linux 内核中,flash 分区定义在以下位置:

  • 在较旧的内核(例如 i.MX28 的 2.6.35)中,闪存分区可以硬编码在 gpmi-nfc-mil.c 中或其他驱动程序源代码。 (真是太糟糕了!)。
  • 在具有设备树支持的较新主线内核中,您可以在设备树中定义 MTD 分区
  • 在较新的内核中,通常使用像 root=/dev/mmcblk0p2 rootwait console=ttyS2,115200 mtdparts=nand:6656k(all),1m(squash),-(jffs2) 这样的命令行来支持内核命令行分区定义。

  • 因此,内核中的分区支持类型取决于您使用的闪存类型、驱动程序是否支持内核命令行解析以及您的内核是否支持设备树。

    无论如何,U-Boot 和闪存的内核分区之间存在固有的冲突风险。所以我的建议是在U-Boot中定义flash分区 mtdparts变量并将其传递给 U-Boot 内核命令行中的内核,假设您的内核支持此选项。

    关于embedded - u-boot 中的 Nand 分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585864/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com