[U-Boot] am335x based board nand boot crashes to ubi0 error
matti kaasinen
matti.kaasinen at gmail.com
Fri Jan 6 10:23:17 CET 2017
It seems that
http://www.denx.de/wiki/publish/DULG/DULG-enbw_cmc.html#Section_9.1.5.2.
Chapter 9.1.5.3.4. Installing UBI images (if no UBI Volumes exist): is
mentioning a problem like this. Figures in error message are swapped,
though. Anyhow, the root problem could be the fact that my ubiformat
statement misses '-s' switch. I'll try that on Monday.
2017-01-05 16:16 GMT+02:00 matti kaasinen <matti.kaasinen at gmail.com>:
> Hi!
> I would need help related to nand boot with am335x based board. Board
> boots from mmc (sd card), but not from nand flash.
> I have been using yocto/poky build system with meta-ti layer that brings
> up u-boot-ti-staging. Current u-boot version is 2016.05 and
> linux-ti-staging-rt-4.4.
>
> I have used am335x_evm config (include/configs/am335x_evm.h) that I have
> made minor modifications to suit it to my board. Most of the modifications
> are made to board/ti/am335x/board.c and mux.c to adapt to different
> memories and pin mappings and lack of card id eeprom.
>
> This story is "follow up" to http://lists.denx.de/
> pipermail/u-boot/2017-January/277168.html. So, I2C was initialized
> somehow when booting from mmc, but not when booting from nand.
>
> "Follow up" part:
> Board did still not start booting kernel even though I2C init problem was
> fixed.
>
> The reason was that boot_targets variable has been assigned with
> mmc0 legacy_mmc0 mmc1 legacy_mmc1 nand0 pxe dhcp
> when main u-boot is brought up. These values are iterated when
> distro_bootcmd is executed.
> distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target};
> done
> I made minor modification to distro_bootcmd:
> distro_bootcmd=for target in ${boot_targets}; do echo "======= ${target}
> =======" ; run bootcmd_${target}; done
> Please find the distro_bootcmd running results below:
> => run distro_bootcmd
> ======= mmc0 =======
> Card did not respond to voltage select!
> ======= legacy_mmc0 =======
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ======= mmc1 =======
> data abort
> pc : [<8ff70fa0>] lr : [<8ff701e9>]
> reloc pc : [<8081dfa0>] lr : [<8081d1e9>]
> sp : 8ef286f0 ip : 8ff5891d fp : 00000003
> r10: 8ffb3b18 r9 : 8ef32ed8 r8 : 8ef41b10
> r7 : 8ff584bd r6 : 8ef39478 r5 : 8ef39500 r4 : 47810000
> r3 : 8ff70f91 r2 : 00014892 r1 : 00000000 r0 : 8ef39500
> Flags: nZCv IRQs off FIQs on Mode SVC_32
> Resetting CPU ...
>
> So, MMC1 was troublemaker this time.
> I removed mmc1 from that command - I do not have mmc1 on my board.
> => setenv boot_targets ' mmc0 legacy_mmc0 nand0 '
>
> Please find modified command results below:
> => run distro_bootcmd
> ======= mmc0 =======
> Card did not respond to voltage select!
> ======= legacy_mmc0 =======
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ======= nand0 =======
> ## Error: "bootcmd_nand0" not defined
>
> NOTE!! Is this a bug in u-boot-ti? There is no bootcmd_nand0 in u-boot
> memory at this time. However, there is bootcmd_nand. So, I changed nand0 to
> nand
> => setenv boot_targets ' mmc0 legacy_mmc0 nand'
> => run distro_bootcmd
> ======= mmc0 =======
> Card did not respond to voltage select!
> ======= legacy_mmc0 =======
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ======= nand =======
> Booting from nand ...
>
> NAND read: device 0 offset 0x80000, size 0x40000
> 262144 bytes read: OK
>
> NAND read: device 0 offset 0x200000, size 0x800000
> 8388608 bytes read: OK
> Kernel image @ 0x82000000 [ 0x000000 - 0x2c4fd8 ]
> ## Flattened Device Tree blob at 88000000
> Booting using the fdt blob at 0x88000000
> Loading Device Tree to 8ef1b000, end 8ef27614 ... OK
>
> Starting kernel ...
>
> [ 0.000000] Booting Linux on physical CPU 0x0
> [ 0.000000] Initializing cgroup subsys cpu
>
> ....... lots of listing and then ......
> [ 1.172458] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
> [ 1.179257] nand: Micron MT29F2G08ABAEAWP
> [ 1.183469] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048,
> OOB size: 64
> [ 1.191491] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme
> [ 1.197164] 10 ofpart partitions found on MTD device 8000000.nand
> [ 1.203607] Creating 10 MTD partitions on "8000000.nand":
> [ 1.209285] 0x000000000000-0x000000020000 : "NAND.SPL"
> [ 1.216261] 0x000000020000-0x000000040000 : "NAND.SPL.backup1"
> [ 1.223834] 0x000000040000-0x000000060000 : "NAND.SPL.backup2"
> [ 1.231275] 0x000000060000-0x000000080000 : "NAND.SPL.backup3"
> [ 1.238794] 0x000000080000-0x0000000c0000 : "NAND.u-boot-spl-os"
> [ 1.246571] 0x0000000c0000-0x0000001c0000 : "NAND.u-boot"
> [ 1.254316] 0x0000001c0000-0x0000001e0000 : "NAND.u-boot-env"
> [ 1.261612] 0x0000001e0000-0x000000200000 : "NAND.u-boot-env.backup1"
> [ 1.269653] 0x000000200000-0x000000a00000 : "NAND.kernel"
> [ 1.283112] 0x000000a00000-0x000010000000 : "NAND.file-system"
> [ 1.520856] tps65217 0-0024: TPS65217 ID 0xe version 1.2
> [ 1.526486] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
> [ 1.533461] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
> [ 1.539830] ubi0: attaching mtd9
> [ 1.543810] ubi0 error: validate_ec_hdr: bad VID header offset 512,
> expected 2048
> [ 1.551672] ubi0 error: validate_ec_hdr: bad EC header
> [ 1.557063] Erase counter header dump:
> [ 1.560998] magic 0x55424923
> [ 1.564930] version 1
> [ 1.568041] ec 1
> [ 1.571151] vid_hdr_offset 512
> [ 1.574444] data_offset 2048
> [ 1.577831] image_seq 1630296601
> [ 1.581762] hdr_crc 0x988c84d
> [ 1.585600] erase counter header hexdump:
> [ 1.589844] CPU: 0 PID: 1 Comm: swapper Not tainted
> 4.4.39-rt49-g9d47072444 #2
> [ 1.597427] Hardware name: Generic AM33XX (Flattened Device Tree)
> [ 1.603824] Backtrace:
> [ 1.606422] [<c0013380>] (dump_backtrace) from [<c001357c>]
> (show_stack+0x18/0x1c)
> [ 1.614370] r7:00000000 r6:00000001 r5:cf027000 r4:cf419000
> [ 1.620337] [<c0013564>] (show_stack) from [<c0295998>]
> (dump_stack+0x24/0x28)
> [ 1.627937] [<c0295974>] (dump_stack) from [<c03c1e24>]
> (validate_ec_hdr+0xc0/0x12c)
> [ 1.636077] [<c03c1d64>] (validate_ec_hdr) from [<c03c2a6c>]
> (ubi_io_read_ec_hdr+0x168/0x218)
> [ 1.645047] r7:cf027000 r6:55424923 r5:cf419000 r4:00000000
> [ 1.651012] [<c03c2904>] (ubi_io_read_ec_hdr) from [<c03c75d0>]
> (ubi_attach+0x164/0x14b8)
> [ 1.659607] r10:cf3e3c80 r9:c07d5b1c r8:00000000 r7:cf027000
> r6:00000000 r5:cf027000
> [ 1.667854] r4:00000000
> [ 1.670519] [<c03c746c>] (ubi_attach) from [<c03bc768>]
> (ubi_attach_mtd_dev+0x6d0/0xc50)
> [ 1.679011] r10:00000800 r9:00000840 r8:cf3d8400 r7:cf027000
> r6:00000000 r5:cf3d8400
> [ 1.687256] r4:fffff800
> [ 1.689923] [<c03bc098>] (ubi_attach_mtd_dev) from [<c0743300>]
> (ubi_init+0x1c8/0x250)
> [ 1.698240] r10:0000006e r9:c079d600 r8:00000000 r7:c0756734
> r6:c0756738 r5:cf3d8400
> [ 1.706487] r4:00000000
> [ 1.709153] [<c0743138>] (ubi_init) from [<c00096a4>]
> (do_one_initcall+0x98/0x1e0)
> [ 1.717099] r8:00000000 r7:cf3e6a80 r6:c07623a0 r5:c0743138 r4:c07623a0
> [ 1.724169] [<c000960c>] (do_one_initcall) from [<c0722e84>]
> (kernel_init_freeable+0x138/0x1dc)
> [ 1.733301] r8:c07225ec r7:c0751838 r6:c0751834 r5:c079d600 r4:00000007
> [ 1.740386] [<c0722d4c>] (kernel_init_freeable) from [<c053948c>]
> (kernel_init+0x10/0xf0)
> [ 1.748973] r10:00000000 r9:00000000 r8:00000000 r7:00000000
> r6:00000000 r5:c053947c
> [ 1.757220] r4:00000000
> [ 1.759887] [<c053947c>] (kernel_init) from [<c000f980>]
> (ret_from_fork+0x14/0x34)
> [ 1.767835] r5:c053947c r4:00000000
> [ 1.771596] ubi0 error: ubi_io_read_ec_hdr: validation failed for PEB 0
> [ 1.778549] ubi0 error: ubi_attach_mtd_dev: failed to attach mtd9,
> error -22
> [ 1.785991] UBI error: cannot attach mtd9
> [ 1.790295] hctosys: unable to open rtc device (rtc0)
> [ 1.801005] UBIFS error (pid: 1): cannot open "ubi0:rootfs", error
> -19VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0): error
> -19
> [ 1.814905] Please append a correct "root=" boot option; here are the
> available partitions:
> [ 1.823726] 1f00 128 mtdblock0 (driver?)
> [ 1.829039] 1f01 128 mtdblock1 (driver?)
> [ 1.834351] 1f02 128 mtdblock2 (driver?)
> [ 1.839661] 1f03 128 mtdblock3 (driver?)
> [ 1.844974] 1f04 256 mtdblock4 (driver?)
> [ 1.850282] 1f05 1024 mtdblock5 (driver?)
> [ 1.855606] 1f06 128 mtdblock6 (driver?)
> [ 1.860915] 1f07 128 mtdblock7 (driver?)
> [ 1.866245] 1f08 8192 mtdblock8 (driver?)
> [ 1.871553] 1f09 251904 mtdblock9 (driver?)
> [ 1.876884] Kernel panic - not syncing: VFS: Unable to mount root fs on
> unknown-block(0,0)
>
> Now I'm terrified!!
> This reminds me for years back when I tried to boot from 3.x kernel
> written ubifs partition from u-boot.
> I never managed in that. I could touch ubifs filesystem from Linux or
> u-boot, but if I did so from Linux, I could not touch it from u-boot
> anymore and vice versa.
> Later on it worked with newer u-boot.
>
> Procedure I did now from SD card booted linux 4.4 for writing rootfs to
> mtdblock9 is listed below:
> -------------------------------------------------
> flash_erase /dev/mtd9 0 0 > /dev/null
> ubiformat /dev/mtd9 > /dev/null
>
> ubiattach -p /dev/mtd9 > /dev/null
> ubimkvol -N rootfs -m /dev/ubi0 > /dev/null
> mkdir -p /mnt/flash
> mount -t ubifs ubi0:rootfs /mnt/flash > /dev/null
>
> tar -C /mnt/flash -xf rootfs.tgz > /dev/null
> sync
> umount /mnt/flash > /dev/null
> ubidetach -p /dev/mtd9 > /dev/null
> -------------------------------------------------
> Did I do anything wrong in creating that? It is quite accessible from
> Linux.
> Do anyone know how to fix this problem? Have nand boot been tested with
> am335x_evm board? I'm somewhat worried about that as there was that nand0
> device in boot_targets...
>
> Thanks,
> Matti
>
>
More information about the U-Boot
mailing list