[U-Boot] [PATCH 3/3] doc: imx: Add documentation for nandbcb command

Shyam Saini
2019-06-18T07:57:13Z

Hi Lukasz,

> Hi Shyam,
>
> > Signed-off-by: Shyam Saini <shyam.saini@amarulasolutions.com>
> > ---
> > doc/imx/common/imx6.txt | 74
> > +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74
> > insertions(+)
> >
> > diff --git a/doc/imx/common/imx6.txt b/doc/imx/common/imx6.txt
> > index eab88353f6..0b5061128c 100644
> > --- a/doc/imx/common/imx6.txt
> > +++ b/doc/imx/common/imx6.txt
> > @@ -88,3 +88,77 @@ Reading bank 4:
> >
> > Word 0x00000002: 9f027772 00000004
> >
> > +NAND Boot on i.MX6 with SPL support
> > +--------------------------------------
> > +
> > +Writing/updating boot image in nand device is not straight forward in
> > +i.MX6 platform and it requires boot control block(BCB) to be
> > configured. +
> > +BCB contains two data structures, Firmware Configuration Block(FCB)
> > and +Discovered Bad Block Table(DBBT). FCB has nand timings, DBBT
> > search area, +and firmware. See IMX6DQRM Section 8.5.2.2
> > +for more information.
> > +
> > +We can't use 'nand write' command to write SPL/firmware image
> > directly +like other platforms does. So we need special setup to
> > write BCB block +as per IMX6QDL reference manual 'nandbcb update'
> > command do that job. +
> > +for nand boot, up on reset bootrom look for FCB structure in
> > +first block's if FCB found the nand timings are loaded for
> > +further reads. once FCB read done, DTTB will be loaded and
> > +finally firmware will be loaded which is boot image.
> > +
> > +cmd_nandbcb will create FCB these structures
> > +by taking mtd partition as an example.
>
> I think that the above sentence has a wrong order. Could you rewrite it?
I'll fix this in next version.

>
> > +- initial code will erase entire partition
> > +- followed by FCB setup, like first 2 blocks for FCB/DBBT write,
> > + and next block for FW1/SPL
> > +- write firmware at FW1 block and
> > +- finally write fcb/dttb in first 2 block.
> > +
> > +Typical NAND BCB layout:
> > +=======================
> > +
> > + no.of blocks = partition size / erasesize
> > + no.of fcb/dbbt blocks = 2
> > + FW1 offset = no.of fcb/dbbt
> > +
> > +block 0 1 2
> > + -------------------------------
> > + |FCB/DBBT 0|FCB/DBBT 1| FW 1 |
> > + --------------------------------
> > +
> > +On summary, nandbcb update will
> > +- erase the entire partition
> > +- create BCB by creating 2 FCB/BDDT block followed by
> > + 1 FW blocks based on partition size and erasesize.
> > +- fill FCB/DBBT structures
> > +- write FW/SPL in FW1
> > +- write FCB/DBBT in first 2 blocks
> > +
> > +step-1: write SPL
> > +
> > +icorem6qdl> ext4load mmc 0:1 $loadaddr SPL
> > +39936 bytes read in 10 ms (3.8 MiB/s)
> > +
> > +icorem6qdl> nandbcb update $loadaddr spl $filesize
> > +device 0 offset 0x0, size 0x9c00
> > +Erasing at 0x1c0000 -- 100% complete.
> > +NAND fw write: 0x80000 offset, 0xb000 bytes written: OK
> > +
> > +step-2: write u-boot-dtb.img
> > +
> > +icorem6qdl> nand erase.part uboot
> > +
> > +NAND erase.part: device 0 offset 0x200000, size 0x200000
> > +Erasing at 0x3c0000 -- 100% complete.
> > +OK
> > +
> > +icorem6qdl> ext4load mmc 0:1 $loadaddr u-boot-dtb.img
> > +589094 bytes read in 37 ms (15.2 MiB/s)
> > +
> > +icorem6qdl> nand write ${loadaddr} uboot ${filesize}
> > +
> > +NAND write: device 0 offset 0x200000, size 0x8fd26
> > + 589094 bytes written: OK
> > +icorem6qdl>
>
> Would it be possible to provide nandbcb show command (I guess that I
> can dump it with plain nand read)?

As of now, fcb/dbbt structure are set only with nandbcb command
so before "nand info" we have to run nandbcb atleast once.

If we consider kobs-ng in linux it prints fcb content when we write some image
so it means fcb is already populated at that time.

> It would present the FCB/DBBT structure. Do you think it is
> needed/feasible ?

Not sure if is it needed or not
if you have any proposal or suggestion about this then please let me know.

Thanks a lot,
Shyam

> Best regards,
>
> Lukasz Majewski
>
> --
>
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de