主题 : uboot 启用mtdpart 时 mtd-id怎么设置 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 13593
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-01-26
最后登录: 2012-08-06
楼主  发表于: 2011-03-15 09:43

 uboot 启用mtdpart 时 mtd-id怎么设置

启用mtdpart时,必须先设置mtdids环境变量,一下是help mtdparts对mtdids的说明
mtdids=<idmap>[,<idmap>,...]\n\n"
    "<idmap>    := <dev-id>=<mtd-id>\n"
    "<dev-id>   := 'nand'|'nor'|'onenand'<dev-num>\n"
    "<dev-num>  := mtd device number, 0...\n"
    "<mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)

网上在讲mtdpart时,都只说明
“mtd-id 必须要跟你当前平台的flash的mtd-id一致,不然整个mtdparts会失效”

我想问 mtd-id参数我从哪里可以得到?如何查询我该填入什么
级别: 新手上路
UID: 2698
精华: 0
发帖: 30
金钱: 155 两
威望: 39 点
贡献值: 0 点
综合积分: 60 分
注册时间: 2008-12-03
最后登录: 2013-09-09
1楼  发表于: 2012-01-05 11:56
http://www.linuxidc.com/Linux/2011-03/33599p2.htm

mtdparts

mtdparts=fc000000.nor_flash:1920k(linux),128k(fdt),20M(ramdisk),4M(jffs2),38272k(user),256k(env),384k(uboot)

要想这个参数起作用,内核中的mtd驱动必须要支持,即内核配置时需要选上Device Drivers  ---> Memory Technology Device (MTD) support  ---> Command line partition table parsing



mtdparts的格式如下:

mtdparts=<mtddef>[;<mtddef]

<mtddef>  := <mtd-id>:<partdef>[,<partdef>]

<partdef> := <size>[@offset][<name>][ro]

<mtd-id>  := unique id used in mapping driver/device

<size>    := standard linux memsize OR "-" to denote all remaining space

<name>    := (NAME)

因此你在使用的时候需要按照下面的格式来设置:

mtdparts=mtd-id:<size1>@<offset1>(<name1>),<size2>@<offset2>(<name2>)

这里面有几个必须要注意的:

a.  mtd-id 必须要跟你当前平台的flash的mtd-id一致,不然整个mtdparts会失效 怎样获取到当前平台的flash的mtd-id?

在bootargs参数列表中可以指定当前flash的mtd-id,如指定 mtdids:nand0=gen_nand.1,前面的nand0则表示第一个flash

b.  size在设置的时候可以为实际的size(xxM,xxk,xx),也可以为'-'这表示剩余的所有空间。

相关信息可以查看drivers/mtd/cmdlinepart.c中的注释找到相关描述。



给你参考一下!我也在找这方面的资料
静默.....
级别: 新手上路
UID: 10160
精华: 0
发帖: 37
金钱: 195 两
威望: 42 点
贡献值: 0 点
综合积分: 74 分
注册时间: 2009-10-26
最后登录: 2021-09-18
2楼  发表于: 2013-12-13 19:18
在2440下,mtd-id到底是什么啊
默认我看UBOOT代码写的是 mini2440-nand
网上也有的人写的是 nandflash0
都试过,启动后LINUX系统直接无视传过去的分区表