
Dear Wolfgang Denk , On Thu, 2013-03-07 at 07:52 +0100, Wolfgang Denk wrote:
Dear John Stile,
In message 1362532855.20183.135.camel@genx you wrote:
I am quite confused about partitions in my NAND flash.
Linux can mount my rootfs, so partitions make sense to the kernel, but from the shell fw_printenv can't read the uboot environment, not matter what I use in /etc/fw_env.config.
That means that all settings were incorrect.
All settings where not incorrect.
dev: size erasesize name mtd0: 00020000 00020000 "bootstrap1" mtd1: 00040000 00020000 "uboot1" mtd2: 001a0000 00020000 "env1"
^^^^^^ mtd2
mtd3: 00200000 00020000 "linux1" mtd4: 07c00000 00020000 "rootfs1" mtd5: 00020000 00020000 "bootstrap2" mtd6: 00040000 00020000 "uboot2" mtd7: 001a0000 00020000 "env2"
^^^^^^ mtd7
mtd8: 00200000 00020000 "linux2" mtd9: 07c00000 00020000 "rootfs2" mtd10: 00004200 00000420 "bootstrap3" mtd11: 00004200 00000420 "env3"
^^^^^^ mtd11
mtd12: 00039c00 00000420 "uboot3" mtd13: 00252000 00000420 "linux3" mtd14: 005ac000 00000420 "rootfs3"
What's that? This makes no sense to me - either you have a single copy of the environment, or two (in case of redudant env). Three copies is not a supported configuration.
I purposefully created more /dev/mtd devices than mtdparts would require, in order to find which partitions actually contain the uboot env.
mtdparts does not "require" anything. You configure your systems as needed, and then set mtdparts to match that setting. SO the setting comes first (starting in your head or - probably better - on a sheet of paper), and then you set mtdparts as needed.
Right. Even without the /dev/mtd character device files, the system boots. This post comes way after a lot of work on paper.
/dev/mtd4 and /dev/mtd5 create binary equivalent dumps of env1 /dev/mtd14 and /dev/mtd15 create binary equivalent dumps of env2.
The names and use of your partitions is in serious mismatch. Fix this first!
The problem turned out to be due to my /dev/mtd character device files had sequential minor numbers.
/etc/fw_env.config does not like either of those, saying the crc does not checkout.
/etc/fw_env.config: /dev/mtd2 0x0 0x20000 0x20000 /dev/mtd2 0x20000 0x20000 0x20000
Well, if you find the environment in /dev/mtd4 and /dev/mtd5, then you should use these in the fw_env.config
Best regards,
Wolfgang Denk
Like I said, I think, even those did not work. When I created my /dev/mtd character device files to use even minor numbers, I was able to see my env in /dev/mtd2 /dev/mtd7 using od: od -t xz /dev/mtd2 od -t xz /dev/mtd7 And fw_printenv also worked.
One site said read-write device will have even minor numbers.
Since I am using a 2.6.30 kernel, without tmpdevfs, I rely on buildroot's target/generic/device_table_dev.txt to generate my devices, and it was there I had not set the proper values: # MTD stuff # <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> /dev/mtd c 640 0 0 90 0 0 2 20
Thank you for your help.