dingram dingram

NAND Boot Attempt: "No BCB" Error 0x80508001

Discussion created by dingram dingram on Nov 10, 2011
Latest reply on May 28, 2013 by Simon Pearson

To IMX Community:

I am trying to boot Linux 2.6.35.3 (FSL 10.12.01 BSP) on i.MX28 EVK Rev D from NAND, with UBIFS root FS on NAND.  I am getting immediate 0x80508001 error on boot attempt.

Background Info

  • NAND Device:             32 GiB 8-bit MLC NAND (MicronMT29F32G08CBACA)
  • Page size:                   4096 + 224
  • Block size:                   256 pages (1 MiB + 56 KiB)
  • Device size:                4096 blocks (32GiB)
  • UBIFS PEB size:        1024 KiB (1,048,576 bytes)
  • UBIFS LEB size:        1024 KiB - 2 * 4 KiB = 1016 KiB (1,040,384 bytes)
  •                                     (256pages - 2 pages UBI overhead) * 4096 = 1,040,384 bytes
  • Max PEB count:          4095 (4096 blocks - 1 for overhead)

I modified kernel MTD driver files (nand_ids.c, nand_device_info.c, nand_base.c, gpmi-nfc-hal-common.c) to support this NAND device.  Device is recognized during EVK NFS boot and parameters are as intended.

UBIFS for root FS seems to be working fine using ".img" file generated by LTIB.  (Flashed using NFS rootfs export from dev host.)

  1. From LTIB dir:                          cp rootfs ubifs.img.rootfs /tmp
  2. From EVK debug:                     ubiformat /dev/mtd1 -e 0 -f /tmp/rootfs.ubifs.img
  3. To check, from EVK debug (just to observe files):     
  • ubiattach /dev/ubi_ctrl -m1
  • mkdir /mnt/ubifs
  • mount -t ubifs ubi0:rootfs /mnt/ubifs
  • ls -l /mnt/ubifs
  • umount /mnt/ubifs

I prepare NAND boot partition as follows:

  1. From LTIB dir:                                 /ltib -p boot_stream.spec -f
  2. From EVK debug:                           flash_eraseall/dev/mtd0
  3.                                                         kobs-ng init /boot/imx28_ivt_linux.sb

I set EVK boot switches for NAND and attempt to boot EVK. On EVK debug I get immediate "0x80508001", and nothing else.  From documentation this is:

            0x80508001    ERROR_ROM_NAND_DRIVER_NO_BCB

            Unable to find one of the Boot Control Blocks (FCB or DBBT)


Troubleshooting:

  1. Extracted 'kobs-ng-11.03.00' package from i.MX53 'L2.6.35_11.03_ER_source_bundle.tar.gz'. 
    Required minor change to 'discover_boot_rom_version()' in 'main.c' to detect i.MX28, but exactly same results using 'init'.
  2. Wrote EVK test program to read and analyze NAND boot partition /dev/mtd0:
  • Detected 4 FCB's at expected address offsets for "stride" parameter
  • Verified checksum for FCB's
  • Verified Hamming SEC-DED 8 data + 5 parity for 512-byte FCB page
  • Detected 4 DBBT's at expected address offsets for "stride" parameter
  • Verified checksum for DBBT's

Observations:

  1. If I attempt to boot from NAND with erased /dev/mtd0, I get same 0x80508001 error
  2. If I attempt to boot with no NAND device, I get 0x80508002 error ERROR_ROM_NAND_DRIVER_NO_FCB ("Unable to find FCB")

Questions:

  1. Does anyone have details on i.MX boot ROM conditions for generating 0x80508001 error?
  2. Does anyone have any later kobs-ng patches that address this issue?  (It needs a lot of work, e.g., neither "dump" or "extract" work for i.MX28)
  3. Does anyone have any other ideas or information regarding debugging this error code?

 

Thanks,

Darrell

Outcomes