* [U-Boot] U-boot UBI environment
[not found] ` <57316B70.5060505@denx.de>
@ 2016-05-10 23:15 ` Joseph Hershberger
2016-05-11 5:51 ` Heiko Schocher
0 siblings, 1 reply; 4+ messages in thread
From: Joseph Hershberger @ 2016-05-10 23:15 UTC (permalink / raw)
To: u-boot
Hi Kevin,
Am 09.05.2016 um 23:16 schrieb Kevin Smith:
> Hello,
>
> I would appreciate some UBI help/advice if you are able to provide it.
> I am trying to use UBI to store my u-boot environment, but when I try
> to 'saveenv', it is corrupting another volume of my UBI. I can image
> the rootfs volume and boot Linux from it without a problem. However,
> the first time that I save the u-boot environment, the rootfs becomes
> unreadable. When the rootfs is corrupted, I have booted Linux from
> another source and tried to attach UBI and dd out the data. It
> appears as all 0xFF. Both u-boot and Linux can read the env volume correctly.
>
> I do not think that there is a board in U-boot that uses UBI env, so I
> do not have anything to compare to. I have included some details of
> my setup below. Do you have any suggestion about what might be wrong?
> I saw the recent patch b1d6590d35, and thought it might fix it, but am
> still having the problem even with this. Maybe there is another bug?
> I am glad to provide more info as needed.
> Thank you,
> Kevin
>
> DTS:
> flash at d0000 {
> num-cs = <1>;
> marvell,nand-keep-config;
> marvell,nand-enable-arbiter;
> nand-on-flash-bbt;
> nand-ecc-strength = <4>;
> nand-ecc-step-size = <512>;
> status = "okay";
>
> partition at 0 {
> label = "mvboot";
> reg = <0 0x200000>;
> };
> partition at 200000 {
> label = "ubi";
> reg = <0x200000 0x1fe00000>;
> };
> };
> Config:
> #define MTDIDS_DEFAULT "nand0=pxa3xx_nand-0"
> #define MTDPARTS_DEFAULT "mtdparts=pxa3xx_nand-0:2m(mvboot),-(ubi)"
> #define CONFIG_CMD_UBI
> #define CONFIG_CMD_UBIFS
> #define CONFIG_MTD_UBI_FASTMAP
> #define CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT 1
I don?t define these 2, not sure if it matters.
> #define CONFIG_ENV_IS_IN_UBI
> #define CONFIG_ENV_UBI_PART "ubi"
> #define CONFIG_ENV_UBI_VOLUME "u-boot-env"
> #define CONFIG_ENV_SIZE (64 * 1024)
My config looks like this:
#define MTDIDS_DEFAULT "nand0=xilinx_nand"
#define MTDPARTS_DEFAULT \
"mtdparts=xilinx_nand:" \
"128k(fsbl)ro," \
"11M(u-boot)ro," \
"70M(boot-config)," \
"-(root)"
#define CONFIG_ENV_IS_IN_UBI
#define CONFIG_ENV_UBI_PART "boot-config"
#define CONFIG_ENV_UBI_VOLUME "u-boot-env1"
#define CONFIG_ENV_UBI_VOLUME_REDUND "u-boot-env2"
#define CONFIG_ENV_SIZE 0x20000
I create volumes like this:
"writepartitions=" \
"if ubi part boot-config && " \
"ubi read $verifyaddr u-boot-env1 1 && " \
"ubi read $verifyaddr u-boot-env2 1; " \
"then " \
"ubi remove bootfs && " \
"ubi remove config; " \
"else " \
"nand erase.part boot-config && " \
"ubi part boot-config && " \
"ubi create u-boot-env1 " __stringify(CONFIG_ENV_SIZE) " dynamic && " \
"ubi create u-boot-env2 " __stringify(CONFIG_ENV_SIZE) " dynamic; " \
"fi && " \
"ubi create bootfs " __stringify(CONFIG_BOOTFS_VOLUME_SIZE) " dynamic && " \
"ubi create config - dynamic && " \
"if ubi part root && " \
"ubi read $verifyaddr rootfs 1; " \
"then " \
"ubi remove rootfs; " \
"else " \
"nand erase.part root && " \
"ubi part root; " \
"fi && " \
"ubi create rootfs - dynamic;\0" \
> => ubi info
> UBI: MTD device name: "mtd=1"
> UBI: MTD device size: 510 MiB
> UBI: physical eraseblock size: 131072 bytes (128 KiB)
> UBI: logical eraseblock size: 126976 bytes
> UBI: number of good PEBs: 4072
> UBI: number of bad PEBs: 8
> UBI: smallest flash I/O unit: 2048
> UBI: VID header offset: 2048 (aligned 2048)
> UBI: data offset: 4096
> UBI: max. allowed volumes: 128
> UBI: wear-leveling threshold: 4096
> UBI: number of internal volumes: 1
> UBI: number of user volumes: 2
> UBI: available PEBs: 0
> UBI: total number of reserved PEBs: 4072
> UBI: number of PEBs reserved for bad PEB handling: 72
> UBI: max/mean erase counter: 18/4
>
> => ubi info l
> Volume information dump:
> vol_id 0
> reserved_pebs 1
> alignment 1
> data_pad 0
> vol_type 3
> name_len 10
> usable_leb_size 126976
> used_ebs 1
> used_bytes 126976
> last_eb_bytes 126976
> corrupted 0
> upd_marker 0
> name u-boot-env
> Volume information dump:
> vol_id 1
> reserved_pebs 3993
> alignment 1
> data_pad 0
> vol_type 3
> name_len 6
> usable_leb_size 126976
> used_ebs 3993
> used_bytes 507015168
> last_eb_bytes 126976
> corrupted 0
> upd_marker 0
> name rootfs
> Volume information dump:
> vol_id 2147479551
> reserved_pebs 2
> alignment 1
> data_pad 0
> vol_type 3
> name_len 13
> usable_leb_size 126976
> used_ebs 2
> used_bytes 253952
> last_eb_bytes 2
> corrupted 0
> upd_marker 0
> name layout volume
>
> => ubifsmount ubi0:rootfs
> Error reading superblock on volume 'ubi0:rootfs' errno=-30!
> ubifsmount - mount UBIFS volume
>
> Usage:
> ubifsmount <volume-name>
> - mount 'volume-name' volume
>
I also notice that you are not using a redundant env like I am, so maybe there is a bug when not using a redundant env that I don't run into.
GL,
-Joe
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] U-boot UBI environment
2016-05-10 23:15 ` [U-Boot] U-boot UBI environment Joseph Hershberger
@ 2016-05-11 5:51 ` Heiko Schocher
2016-05-11 15:54 ` Kevin Smith
0 siblings, 1 reply; 4+ messages in thread
From: Heiko Schocher @ 2016-05-11 5:51 UTC (permalink / raw)
To: u-boot
Hello Joe,
Am 11.05.2016 um 01:15 schrieb Joseph Hershberger:
> Hi Kevin,
>
> Am 09.05.2016 um 23:16 schrieb Kevin Smith:
>> Hello,
>>
>> I would appreciate some UBI help/advice if you are able to provide it.
>> I am trying to use UBI to store my u-boot environment, but when I try
>> to 'saveenv', it is corrupting another volume of my UBI. I can image
>> the rootfs volume and boot Linux from it without a problem. However,
>> the first time that I save the u-boot environment, the rootfs becomes
>> unreadable. When the rootfs is corrupted, I have booted Linux from
>> another source and tried to attach UBI and dd out the data. It
>> appears as all 0xFF. Both u-boot and Linux can read the env volume correctly.
>>
>> I do not think that there is a board in U-boot that uses UBI env, so I
>> do not have anything to compare to. I have included some details of
>> my setup below. Do you have any suggestion about what might be wrong?
>> I saw the recent patch b1d6590d35, and thought it might fix it, but am
>> still having the problem even with this. Maybe there is another bug?
>> I am glad to provide more info as needed.
>> Thank you,
>> Kevin
>>
>> DTS:
>> flash at d0000 {
>> num-cs = <1>;
>> marvell,nand-keep-config;
>> marvell,nand-enable-arbiter;
>> nand-on-flash-bbt;
>> nand-ecc-strength = <4>;
>> nand-ecc-step-size = <512>;
>> status = "okay";
>>
>> partition at 0 {
>> label = "mvboot";
>> reg = <0 0x200000>;
>> };
>> partition at 200000 {
>> label = "ubi";
>> reg = <0x200000 0x1fe00000>;
>> };
>> };
>> Config:
>> #define MTDIDS_DEFAULT "nand0=pxa3xx_nand-0"
>> #define MTDPARTS_DEFAULT "mtdparts=pxa3xx_nand-0:2m(mvboot),-(ubi)"
>> #define CONFIG_CMD_UBI
>> #define CONFIG_CMD_UBIFS
>
>> #define CONFIG_MTD_UBI_FASTMAP
>> #define CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT 1
>
> I don?t define these 2, not sure if it matters.
This should be no problem ... but you (Kevin) may disable
FASTMAP for a test?
>> #define CONFIG_ENV_IS_IN_UBI
>> #define CONFIG_ENV_UBI_PART "ubi"
>> #define CONFIG_ENV_UBI_VOLUME "u-boot-env"
>> #define CONFIG_ENV_SIZE (64 * 1024)
>
> My config looks like this:
>
> #define MTDIDS_DEFAULT "nand0=xilinx_nand"
> #define MTDPARTS_DEFAULT \
> "mtdparts=xilinx_nand:" \
> "128k(fsbl)ro," \
> "11M(u-boot)ro," \
> "70M(boot-config)," \
> "-(root)"
You have 70MB for Env?
> #define CONFIG_ENV_IS_IN_UBI
> #define CONFIG_ENV_UBI_PART "boot-config"
> #define CONFIG_ENV_UBI_VOLUME "u-boot-env1"
> #define CONFIG_ENV_UBI_VOLUME_REDUND "u-boot-env2"
> #define CONFIG_ENV_SIZE 0x20000
>
> I create volumes like this:
>
> "writepartitions=" \
> "if ubi part boot-config && " \
> "ubi read $verifyaddr u-boot-env1 1 && " \
> "ubi read $verifyaddr u-boot-env2 1; " \
> "then " \
> "ubi remove bootfs && " \
> "ubi remove config; " \
> "else " \
> "nand erase.part boot-config && " \
> "ubi part boot-config && " \
> "ubi create u-boot-env1 " __stringify(CONFIG_ENV_SIZE) " dynamic && " \
> "ubi create u-boot-env2 " __stringify(CONFIG_ENV_SIZE) " dynamic; " \
> "fi && " \
> "ubi create bootfs " __stringify(CONFIG_BOOTFS_VOLUME_SIZE) " dynamic && " \
> "ubi create config - dynamic && " \
> "if ubi part root && " \
> "ubi read $verifyaddr rootfs 1; " \
> "then " \
> "ubi remove rootfs; " \
> "else " \
> "nand erase.part root && " \
> "ubi part root; " \
> "fi && " \
> "ubi create rootfs - dynamic;\0" \
>
>
>> => ubi info
>> UBI: MTD device name: "mtd=1"
>> UBI: MTD device size: 510 MiB
>> UBI: physical eraseblock size: 131072 bytes (128 KiB)
>> UBI: logical eraseblock size: 126976 bytes
>> UBI: number of good PEBs: 4072
>> UBI: number of bad PEBs: 8
>> UBI: smallest flash I/O unit: 2048
>> UBI: VID header offset: 2048 (aligned 2048)
>> UBI: data offset: 4096
>> UBI: max. allowed volumes: 128
>> UBI: wear-leveling threshold: 4096
>> UBI: number of internal volumes: 1
>> UBI: number of user volumes: 2
>> UBI: available PEBs: 0
>> UBI: total number of reserved PEBs: 4072
>> UBI: number of PEBs reserved for bad PEB handling: 72
>> UBI: max/mean erase counter: 18/4
>>
>> => ubi info l
>> Volume information dump:
>> vol_id 0
>> reserved_pebs 1
>> alignment 1
>> data_pad 0
>> vol_type 3
>> name_len 10
>> usable_leb_size 126976
>> used_ebs 1
>> used_bytes 126976
>> last_eb_bytes 126976
>> corrupted 0
>> upd_marker 0
>> name u-boot-env
@Kevin: you have exactly one PEB for this volume ... may this is the problem?
Can you try it with a Volume, which have more space?
>> Volume information dump:
>> vol_id 1
>> reserved_pebs 3993
>> alignment 1
>> data_pad 0
>> vol_type 3
>> name_len 6
>> usable_leb_size 126976
>> used_ebs 3993
>> used_bytes 507015168
>> last_eb_bytes 126976
>> corrupted 0
>> upd_marker 0
>> name rootfs
>> Volume information dump:
>> vol_id 2147479551
>> reserved_pebs 2
>> alignment 1
>> data_pad 0
>> vol_type 3
>> name_len 13
>> usable_leb_size 126976
>> used_ebs 2
>> used_bytes 253952
>> last_eb_bytes 2
>> corrupted 0
>> upd_marker 0
>> name layout volume
>>
>> => ubifsmount ubi0:rootfs
>> Error reading superblock on volume 'ubi0:rootfs' errno=-30!
>> ubifsmount - mount UBIFS volume
>>
>> Usage:
>> ubifsmount <volume-name>
>> - mount 'volume-name' volume
>>
>
> I also notice that you are not using a redundant env like I am, so maybe there is a bug when not using a redundant env that I don't run into.
I don;t know.
bye,
Heiko
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] U-boot UBI environment
2016-05-11 5:51 ` Heiko Schocher
@ 2016-05-11 15:54 ` Kevin Smith
2016-05-12 4:41 ` Heiko Schocher
0 siblings, 1 reply; 4+ messages in thread
From: Kevin Smith @ 2016-05-11 15:54 UTC (permalink / raw)
To: u-boot
Hi Joe and Heiko,
I tried disabling the fastmap options, and it appears to be related to
these. With fastmap off, I am able two write without corrupting the
other volume. It looks like it may specifically be the autoupdate
feature, but I am still testing to be sure this is the case. I will let
you know.
Thank you for your help,
Kevin
On 05/11/2016 12:51 AM, Heiko Schocher wrote:
> Hello Joe,
>
> Am 11.05.2016 um 01:15 schrieb Joseph Hershberger:
>> Hi Kevin,
>>
>> Am 09.05.2016 um 23:16 schrieb Kevin Smith:
>>> Hello,
>>>
>>> I would appreciate some UBI help/advice if you are able to provide it.
>>> I am trying to use UBI to store my u-boot environment, but when I try
>>> to 'saveenv', it is corrupting another volume of my UBI. I can image
>>> the rootfs volume and boot Linux from it without a problem. However,
>>> the first time that I save the u-boot environment, the rootfs becomes
>>> unreadable. When the rootfs is corrupted, I have booted Linux from
>>> another source and tried to attach UBI and dd out the data. It
>>> appears as all 0xFF. Both u-boot and Linux can read the env volume
>>> correctly.
>>>
>>> I do not think that there is a board in U-boot that uses UBI env, so I
>>> do not have anything to compare to. I have included some details of
>>> my setup below. Do you have any suggestion about what might be wrong?
>>> I saw the recent patch b1d6590d35, and thought it might fix it, but am
>>> still having the problem even with this. Maybe there is another bug?
>>> I am glad to provide more info as needed.
>>> Thank you,
>>> Kevin
>>>
>>> DTS:
>>> flash at d0000 {
>>> num-cs = <1>;
>>> marvell,nand-keep-config;
>>> marvell,nand-enable-arbiter;
>>> nand-on-flash-bbt;
>>> nand-ecc-strength = <4>;
>>> nand-ecc-step-size = <512>;
>>> status = "okay";
>>>
>>> partition at 0 {
>>> label = "mvboot";
>>> reg = <0 0x200000>;
>>> };
>>> partition at 200000 {
>>> label = "ubi";
>>> reg = <0x200000 0x1fe00000>;
>>> };
>>> };
>>> Config:
>>> #define MTDIDS_DEFAULT "nand0=pxa3xx_nand-0"
>>> #define MTDPARTS_DEFAULT "mtdparts=pxa3xx_nand-0:2m(mvboot),-(ubi)"
>>> #define CONFIG_CMD_UBI
>>> #define CONFIG_CMD_UBIFS
>>
>>> #define CONFIG_MTD_UBI_FASTMAP
>>> #define CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT 1
>>
>> I don?t define these 2, not sure if it matters.
>
> This should be no problem ... but you (Kevin) may disable
> FASTMAP for a test?
>
>>> #define CONFIG_ENV_IS_IN_UBI
>>> #define CONFIG_ENV_UBI_PART "ubi"
>>> #define CONFIG_ENV_UBI_VOLUME "u-boot-env"
>>> #define CONFIG_ENV_SIZE (64 * 1024)
>>
>> My config looks like this:
>>
>> #define MTDIDS_DEFAULT "nand0=xilinx_nand"
>> #define MTDPARTS_DEFAULT \
>> "mtdparts=xilinx_nand:" \
>> "128k(fsbl)ro," \
>> "11M(u-boot)ro," \
>> "70M(boot-config)," \
>> "-(root)"
>
> You have 70MB for Env?
>
>> #define CONFIG_ENV_IS_IN_UBI
>> #define CONFIG_ENV_UBI_PART "boot-config"
>> #define CONFIG_ENV_UBI_VOLUME "u-boot-env1"
>> #define CONFIG_ENV_UBI_VOLUME_REDUND "u-boot-env2"
>> #define CONFIG_ENV_SIZE 0x20000
>>
>> I create volumes like this:
>>
>> "writepartitions=" \
>> "if ubi part boot-config && " \
>> "ubi read $verifyaddr u-boot-env1 1 && " \
>> "ubi read $verifyaddr u-boot-env2 1; " \
>> "then " \
>> "ubi remove bootfs && " \
>> "ubi remove config; " \
>> "else " \
>> "nand erase.part boot-config && " \
>> "ubi part boot-config && " \
>> "ubi create u-boot-env1 " __stringify(CONFIG_ENV_SIZE) "
>> dynamic && " \
>> "ubi create u-boot-env2 " __stringify(CONFIG_ENV_SIZE) "
>> dynamic; " \
>> "fi && " \
>> "ubi create bootfs " __stringify(CONFIG_BOOTFS_VOLUME_SIZE) "
>> dynamic && " \
>> "ubi create config - dynamic && " \
>> "if ubi part root && " \
>> "ubi read $verifyaddr rootfs 1; " \
>> "then " \
>> "ubi remove rootfs; " \
>> "else " \
>> "nand erase.part root && " \
>> "ubi part root; " \
>> "fi && " \
>> "ubi create rootfs - dynamic;\0" \
>>
>>
>>> => ubi info
>>> UBI: MTD device name: "mtd=1"
>>> UBI: MTD device size: 510 MiB
>>> UBI: physical eraseblock size: 131072 bytes (128 KiB)
>>> UBI: logical eraseblock size: 126976 bytes
>>> UBI: number of good PEBs: 4072
>>> UBI: number of bad PEBs: 8
>>> UBI: smallest flash I/O unit: 2048
>>> UBI: VID header offset: 2048 (aligned 2048)
>>> UBI: data offset: 4096
>>> UBI: max. allowed volumes: 128
>>> UBI: wear-leveling threshold: 4096
>>> UBI: number of internal volumes: 1
>>> UBI: number of user volumes: 2
>>> UBI: available PEBs: 0
>>> UBI: total number of reserved PEBs: 4072
>>> UBI: number of PEBs reserved for bad PEB handling: 72
>>> UBI: max/mean erase counter: 18/4
>>>
>>> => ubi info l
>>> Volume information dump:
>>> vol_id 0
>>> reserved_pebs 1
>>> alignment 1
>>> data_pad 0
>>> vol_type 3
>>> name_len 10
>>> usable_leb_size 126976
>>> used_ebs 1
>>> used_bytes 126976
>>> last_eb_bytes 126976
>>> corrupted 0
>>> upd_marker 0
>>> name u-boot-env
>
> @Kevin: you have exactly one PEB for this volume ... may this is the
> problem?
> Can you try it with a Volume, which have more space?
>
>>> Volume information dump:
>>> vol_id 1
>>> reserved_pebs 3993
>>> alignment 1
>>> data_pad 0
>>> vol_type 3
>>> name_len 6
>>> usable_leb_size 126976
>>> used_ebs 3993
>>> used_bytes 507015168
>>> last_eb_bytes 126976
>>> corrupted 0
>>> upd_marker 0
>>> name rootfs
>>> Volume information dump:
>>> vol_id 2147479551
>>> reserved_pebs 2
>>> alignment 1
>>> data_pad 0
>>> vol_type 3
>>> name_len 13
>>> usable_leb_size 126976
>>> used_ebs 2
>>> used_bytes 253952
>>> last_eb_bytes 2
>>> corrupted 0
>>> upd_marker 0
>>> name layout volume
>>>
>>> => ubifsmount ubi0:rootfs
>>> Error reading superblock on volume 'ubi0:rootfs' errno=-30!
>>> ubifsmount - mount UBIFS volume
>>>
>>> Usage:
>>> ubifsmount <volume-name>
>>> - mount 'volume-name' volume
>>>
>>
>> I also notice that you are not using a redundant env like I am, so
>> maybe there is a bug when not using a redundant env that I don't run
>> into.
>
> I don;t know.
>
> bye,
> Heiko
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] U-boot UBI environment
2016-05-11 15:54 ` Kevin Smith
@ 2016-05-12 4:41 ` Heiko Schocher
0 siblings, 0 replies; 4+ messages in thread
From: Heiko Schocher @ 2016-05-12 4:41 UTC (permalink / raw)
To: u-boot
Hello Kevin,
Am 11.05.2016 um 17:54 schrieb Kevin Smith:
> Hi Joe and Heiko,
>
> I tried disabling the fastmap options, and it appears to be related to
> these. With fastmap off, I am able two write without corrupting the
> other volume. It looks like it may specifically be the autoupdate
> feature, but I am still testing to be sure this is the case. I will let
> you know.
Thanks for debugging into it!
> Thank you for your help,
You are welcome!
bye,
Heiko
> Kevin
>
> On 05/11/2016 12:51 AM, Heiko Schocher wrote:
>> Hello Joe,
>>
>> Am 11.05.2016 um 01:15 schrieb Joseph Hershberger:
>>> Hi Kevin,
>>>
>>> Am 09.05.2016 um 23:16 schrieb Kevin Smith:
>>>> Hello,
>>>>
>>>> I would appreciate some UBI help/advice if you are able to provide it.
>>>> I am trying to use UBI to store my u-boot environment, but when I try
>>>> to 'saveenv', it is corrupting another volume of my UBI. I can image
>>>> the rootfs volume and boot Linux from it without a problem. However,
>>>> the first time that I save the u-boot environment, the rootfs becomes
>>>> unreadable. When the rootfs is corrupted, I have booted Linux from
>>>> another source and tried to attach UBI and dd out the data. It
>>>> appears as all 0xFF. Both u-boot and Linux can read the env volume
>>>> correctly.
>>>>
>>>> I do not think that there is a board in U-boot that uses UBI env, so I
>>>> do not have anything to compare to. I have included some details of
>>>> my setup below. Do you have any suggestion about what might be wrong?
>>>> I saw the recent patch b1d6590d35, and thought it might fix it, but am
>>>> still having the problem even with this. Maybe there is another bug?
>>>> I am glad to provide more info as needed.
>>>> Thank you,
>>>> Kevin
>>>>
>>>> DTS:
>>>> flash at d0000 {
>>>> num-cs = <1>;
>>>> marvell,nand-keep-config;
>>>> marvell,nand-enable-arbiter;
>>>> nand-on-flash-bbt;
>>>> nand-ecc-strength = <4>;
>>>> nand-ecc-step-size = <512>;
>>>> status = "okay";
>>>>
>>>> partition at 0 {
>>>> label = "mvboot";
>>>> reg = <0 0x200000>;
>>>> };
>>>> partition at 200000 {
>>>> label = "ubi";
>>>> reg = <0x200000 0x1fe00000>;
>>>> };
>>>> };
>>>> Config:
>>>> #define MTDIDS_DEFAULT "nand0=pxa3xx_nand-0"
>>>> #define MTDPARTS_DEFAULT "mtdparts=pxa3xx_nand-0:2m(mvboot),-(ubi)"
>>>> #define CONFIG_CMD_UBI
>>>> #define CONFIG_CMD_UBIFS
>>>
>>>> #define CONFIG_MTD_UBI_FASTMAP
>>>> #define CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT 1
>>>
>>> I don?t define these 2, not sure if it matters.
>>
>> This should be no problem ... but you (Kevin) may disable
>> FASTMAP for a test?
>>
>>>> #define CONFIG_ENV_IS_IN_UBI
>>>> #define CONFIG_ENV_UBI_PART "ubi"
>>>> #define CONFIG_ENV_UBI_VOLUME "u-boot-env"
>>>> #define CONFIG_ENV_SIZE (64 * 1024)
>>>
>>> My config looks like this:
>>>
>>> #define MTDIDS_DEFAULT "nand0=xilinx_nand"
>>> #define MTDPARTS_DEFAULT \
>>> "mtdparts=xilinx_nand:" \
>>> "128k(fsbl)ro," \
>>> "11M(u-boot)ro," \
>>> "70M(boot-config)," \
>>> "-(root)"
>>
>> You have 70MB for Env?
>>
>>> #define CONFIG_ENV_IS_IN_UBI
>>> #define CONFIG_ENV_UBI_PART "boot-config"
>>> #define CONFIG_ENV_UBI_VOLUME "u-boot-env1"
>>> #define CONFIG_ENV_UBI_VOLUME_REDUND "u-boot-env2"
>>> #define CONFIG_ENV_SIZE 0x20000
>>>
>>> I create volumes like this:
>>>
>>> "writepartitions=" \
>>> "if ubi part boot-config && " \
>>> "ubi read $verifyaddr u-boot-env1 1 && " \
>>> "ubi read $verifyaddr u-boot-env2 1; " \
>>> "then " \
>>> "ubi remove bootfs && " \
>>> "ubi remove config; " \
>>> "else " \
>>> "nand erase.part boot-config && " \
>>> "ubi part boot-config && " \
>>> "ubi create u-boot-env1 " __stringify(CONFIG_ENV_SIZE) "
>>> dynamic && " \
>>> "ubi create u-boot-env2 " __stringify(CONFIG_ENV_SIZE) "
>>> dynamic; " \
>>> "fi && " \
>>> "ubi create bootfs " __stringify(CONFIG_BOOTFS_VOLUME_SIZE) "
>>> dynamic && " \
>>> "ubi create config - dynamic && " \
>>> "if ubi part root && " \
>>> "ubi read $verifyaddr rootfs 1; " \
>>> "then " \
>>> "ubi remove rootfs; " \
>>> "else " \
>>> "nand erase.part root && " \
>>> "ubi part root; " \
>>> "fi && " \
>>> "ubi create rootfs - dynamic;\0" \
>>>
>>>
>>>> => ubi info
>>>> UBI: MTD device name: "mtd=1"
>>>> UBI: MTD device size: 510 MiB
>>>> UBI: physical eraseblock size: 131072 bytes (128 KiB)
>>>> UBI: logical eraseblock size: 126976 bytes
>>>> UBI: number of good PEBs: 4072
>>>> UBI: number of bad PEBs: 8
>>>> UBI: smallest flash I/O unit: 2048
>>>> UBI: VID header offset: 2048 (aligned 2048)
>>>> UBI: data offset: 4096
>>>> UBI: max. allowed volumes: 128
>>>> UBI: wear-leveling threshold: 4096
>>>> UBI: number of internal volumes: 1
>>>> UBI: number of user volumes: 2
>>>> UBI: available PEBs: 0
>>>> UBI: total number of reserved PEBs: 4072
>>>> UBI: number of PEBs reserved for bad PEB handling: 72
>>>> UBI: max/mean erase counter: 18/4
>>>>
>>>> => ubi info l
>>>> Volume information dump:
>>>> vol_id 0
>>>> reserved_pebs 1
>>>> alignment 1
>>>> data_pad 0
>>>> vol_type 3
>>>> name_len 10
>>>> usable_leb_size 126976
>>>> used_ebs 1
>>>> used_bytes 126976
>>>> last_eb_bytes 126976
>>>> corrupted 0
>>>> upd_marker 0
>>>> name u-boot-env
>>
>> @Kevin: you have exactly one PEB for this volume ... may this is the
>> problem?
>> Can you try it with a Volume, which have more space?
>>
>>>> Volume information dump:
>>>> vol_id 1
>>>> reserved_pebs 3993
>>>> alignment 1
>>>> data_pad 0
>>>> vol_type 3
>>>> name_len 6
>>>> usable_leb_size 126976
>>>> used_ebs 3993
>>>> used_bytes 507015168
>>>> last_eb_bytes 126976
>>>> corrupted 0
>>>> upd_marker 0
>>>> name rootfs
>>>> Volume information dump:
>>>> vol_id 2147479551
>>>> reserved_pebs 2
>>>> alignment 1
>>>> data_pad 0
>>>> vol_type 3
>>>> name_len 13
>>>> usable_leb_size 126976
>>>> used_ebs 2
>>>> used_bytes 253952
>>>> last_eb_bytes 2
>>>> corrupted 0
>>>> upd_marker 0
>>>> name layout volume
>>>>
>>>> => ubifsmount ubi0:rootfs
>>>> Error reading superblock on volume 'ubi0:rootfs' errno=-30!
>>>> ubifsmount - mount UBIFS volume
>>>>
>>>> Usage:
>>>> ubifsmount <volume-name>
>>>> - mount 'volume-name' volume
>>>>
>>>
>>> I also notice that you are not using a redundant env like I am, so
>>> maybe there is a bug when not using a redundant env that I don't run
>>> into.
>>
>> I don;t know.
>>
>> bye,
>> Heiko
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-05-12 4:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <5730FE25.909@elecsyscorp.com>
[not found] ` <57316B70.5060505@denx.de>
2016-05-10 23:15 ` [U-Boot] U-boot UBI environment Joseph Hershberger
2016-05-11 5:51 ` Heiko Schocher
2016-05-11 15:54 ` Kevin Smith
2016-05-12 4:41 ` Heiko Schocher
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox