Linux kernel 创建灵活的mtd分区

Linux kernel 创建灵活的mtd分区,linux-kernel,partitioning,u-boot,Linux Kernel,Partitioning,U Boot,我想根据其内容填充分区。在系统引导期间,我想检查闪存区域是否包含任何数据。如果为true-使其只读或可重写 我想让它自动,没有U-boot外壳 在Linux内核级别上,我只能在分区表中静态地设置它。 是否可以在U-boot中执行此操作 谢谢你的提示 更新:已检查CmdLine和mtd_分区 我检查了两种可能性: U-boot mtd零件 U-Boot> setenv mtdparts mtdparts=atmel_nand:2M@0x40000(u-boot),30M@0x200000(

我想根据其内容填充分区。在系统引导期间,我想检查闪存区域是否包含任何数据。如果为true-使其只读或可重写

我想让它自动,没有U-boot外壳

在Linux内核级别上,我只能在分区表中静态地设置它。 是否可以在U-boot中执行此操作

谢谢你的提示

更新:已检查CmdLine和mtd_分区 我检查了两种可能性: U-boot mtd零件

U-Boot> 
setenv mtdparts mtdparts=atmel_nand:2M@0x40000(u-boot),30M@0x200000(kernel),-@0x2000000(user),**0x20000@0x100000(u)**

U-Boot>
mtdparts
填充分区后不允许有分区

不幸的是,不可能在表的和处添加分区。如果数据存在于
0x100000
区域中,我希望将mtd4作为单独的分区

这在内核mtd_分区表中是可能的。但是这张桌子是用拱门/手臂表示的。。。板文件(早期启动阶段)。在这个启动阶段,我无法读取nand。我无法访问nand驱动程序提供的nand读取接口

更新:解决方案 谢谢你的提示。根据“自然噪声”提示,我决定在u-boot中读取nand区域,并通过不同的内核命令行参数发送有用的参数。这是非常灵活的。其他一些硬件配置可以存储在闪存中并用于内核初始化


捕获内核参数可以通过:
early_param()
函数来完成。

您查看过源代码了吗?提供RedBoot、CmdLine、AFS、OpenFirmware、AR7和BCM63XX。您评估过哪些,正在使用哪些?您还可以在机器文件中自由编写自己的代码。在注册MTD之前,大多数NAND驱动程序都需要一个
MTD\u分区
,您可以动态设置该分区。我现在正在尝试,但不容易找到。评论补充道:你就快到了。检查传统的u-boot变量是
bootargs
。您需要将
mtdparts
字符串附加到该变量。如果您有控制台,您可以在Linux日志的顶部看到引导时的命令行。如果您可以读取
u-boot
,但不能读取Linux,那么您可以将自己的参数my_mtd_extra设置为my_mtd_,并在命令行上传递该参数。阅读董事会文件中的内容。如果你已经解决了这个问题,请发布一个答案。