What is "FCB" in boot image explanation?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

What is "FCB" in boot image explanation?

Jump to solution
3,568 Views
takayuki_ishii
Contributor IV

Hello community,

 

I'm confuse by "FCB" meaning in boot image explanation.

And I have 2 questions about "FCB".

 

In IMXRT1170 reference manual,

  • 10.6.2.3 Firmware Configuration Block and 10.6.4.3 Firmware Configuration Block (FCB)

In application note AN12238 i.MX RT Flashloader Use Case

  • Flash Configuration Block (FCB):

In community thread

 https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/Generating-a-Bootable-Image-for-the-RT1050/ta-p/...

  • FlexSPI Configuration Block (FCB)

 

Q1. I can't find information about Flash Configuration Block (FCB): in AN12238.

takayuki_ishii_0-1646099762113.png

In Reference Manual, I can find Firmware Configuration Block but it is used for NAND not NOR.

Is it typo of NOR->NAND?

Or it have some table for NOR?

 

Q2. In reference Manual, it say that FlexSPI Configuration Block offset is 0x400.

But IVT is request same offset 0x400 for serial SPI boot.

How do I assign it correctly?

takayuki_ishii_1-1646100060127.png

takayuki_ishii_2-1646100344730.png

 

Best regards,

Ishii.

 

 

0 Kudos
1 Solution
3,532 Views
jay_heng
NXP Employee
NXP Employee

FlexSPI Configuration Block (FCB, aka FDCB) is used to configure FlexSPI peripheral, so it is needed by both NOR and NAND device.

Firmware Configuration Block (FCB, aka NFCB) is used to describe NAND device and bootable image info (IVT is part of bootable image), it is needed by NAND device only. but note that FDCB is part of NFCB for NAND

 

For FlexSPI NOR:

FDCB - offset 0x400

IVT - offset 0x1000

app image - offset specified by IVT

nor_image_unsigned.png

For FlexSPI NAND:

NFCB - first page of NAND first good block

bootable image - address offset specified by NFCB

IVT - offset 0x400 in bootable image range

app image - offset specified by IVT

nand_image_unsigned.png

View solution in original post

0 Kudos
9 Replies
3,557 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,

Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.
Actually, it's hard to explain if you haven't gone through Chapter 10System Boot in the RM.
Except for the FlexSPI NOR (such as QSPI, octal Flash), the other memory devices doesn't support the XIP (Execute in Place ) mode, in another word, the boot image will be copied to the RAM, then to run.
The IVT would be copied with the application code and its offset is relative to the RAM. However, the FCB should be store the first sector or block of these memory devices, it seems like the offset of FCB is relative to the memory devices themselves.
For the FlexSPI NOR, it supports the XIP mode, the offset of the FCB and IVT both are relative to the FlexSPI NOR itself.

Hope this is clear.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
3,546 Views
takayuki_ishii
Contributor IV

Hello @jeremyzhou 

 

Thank you for your comment.

Do you have some information about Flash Configuration Block(FCB) in AN12238.?

I can't find any information about Flash Configuration Block.

In Reference Manual, it have only 2 different FCB

  • Firmware Configuration Block (FCB)
  • FlexSPI Configuration Block

 

About Q2.

I found allocation order of FlexSPI Configuration Block and IVT.

In MCUXpresso SDK sample, it is orderd that FlexSPI Configuration Block is fast and

allocate to offset 0x400 by linker script file.

FlexSPI Configuration Block is allocated to ".boot_hdr.conf"

And IVT is allocated to ".boot_hdr.ivt".

SECTIONS
{
/* Image Vector Table and Boot Data for booting from external flash */
.boot_hdr : ALIGN(4)
{
FILL(0xff) = 0x400 ;
__boot_hdr_start__ = ABSOLUTE(.) ;
KEEP(*(.boot_hdr.conf)) = 0x1000 ;
__boot_hdr_ivt_loadaddr__ = ABSOLUTE(.) ;
KEEP(*(.boot_hdr.ivt)) = 0x1020 ;
__boot_hdr_boot_data_loadaddr__ = ABSOLUTE(.) ;
KEEP(*(.boot_hdr.boot_data)) = 0x1030 ;
__boot_hdr_dcd_loadaddr__ = ABSOLUTE(.) ;
KEEP(*(.boot_hdr.dcd_data))
__boot_hdr_end__ = ABSOLUTE(.) ;
. = 0x2000 ;
} >BOARD_FLASH

 

Best regards,

Ishii.

 

 

0 Kudos
3,533 Views
jay_heng
NXP Employee
NXP Employee

FlexSPI Configuration Block (FCB, aka FDCB) is used to configure FlexSPI peripheral, so it is needed by both NOR and NAND device.

Firmware Configuration Block (FCB, aka NFCB) is used to describe NAND device and bootable image info (IVT is part of bootable image), it is needed by NAND device only. but note that FDCB is part of NFCB for NAND

 

For FlexSPI NOR:

FDCB - offset 0x400

IVT - offset 0x1000

app image - offset specified by IVT

nor_image_unsigned.png

For FlexSPI NAND:

NFCB - first page of NAND first good block

bootable image - address offset specified by NFCB

IVT - offset 0x400 in bootable image range

app image - offset specified by IVT

nand_image_unsigned.png

0 Kudos
3,525 Views
takayuki_ishii
Contributor IV

Hello jay_heng

 

Thank you for  your answer.

Do you have any information about the Flash Configuration Block(FCB) mentioned in the application note AN12238?

 

Best regards,

Ishii.

 

0 Kudos
3,513 Views
jay_heng
NXP Employee
NXP Employee

You can find it in any SDK example project, its prototype is flexspi_nor_config_t.

It is not necessary to understand every member of flexspi_nor_config_t struct, just learn the basic usage in evkmimxrt1170_flexspi_nor_config.c file

0 Kudos
3,510 Views
takayuki_ishii
Contributor IV

Hello jay_heng,

 

Thank you for your quick reply.

 

I say that RT1170 documents have 3 different type FCB.

 NameNORNANDoffset

Reference

1

Flash Configuration BlockO 0x0000

AN12238

3.2.1 Bootable image

2FlexSPI Configuration BlockOO0x0400

IMXRT1170RM

10.6.3.1 FlexSPI Configuration Block

3Firmware Configuration Block O0x0000

IMXRT1170RM

10.6.4.3 Firmware Configuration Block (FCB)

 

I hope to know about 1.Flash Configuration Block (FCB) explained in the application note AN12238.

 

flexspi_nor_config_t is Table 10-18. Serial NOR configuration block in IMXRT1170RM and

it is include 2.FlexSPI Configuration Block as a struture member memCfg.

In Reference Manual 10.6.1.2 FlexSPI Serial NOR Flash Boot Operation, it say that

1. The ROM expects the 512-byte FlexSPI NOR configuration parameters (as explained
in the next section) to be present at offset 0x400 in Serial NOR flash attached to
FLEXSPI_A_SS0_B.

 

And Reference Manual 10.6.3 Serial NOR and NAND Configuration based on FlexSPI Interface, it say that

The ROM SW supports Serial NOR and Serial NAND based on FlexSPI module, using a
448-bytes common FlexSPI configuration block and several specified parameters for
Serial NOR and Serial NAND respectively.

 

The other hand, 3.Firmware Configuration Block (FCB) is allocate to offset 0x0000 but it is NAND only.

 

Both 2.FlexSPI Configuration Block and 3.Firmware Configuration Block (FCB) aren't match

to 1.Flash Configuration Block (FCB).

So, I ask that do you have any information about Flash Configuration Block (FCB) in

application note AN12238?

takayuki_ishii_0-1646207617393.png

 

Best regards,

Ishii.

 

0 Kudos
3,507 Views
jay_heng
NXP Employee
NXP Employee

The Flash Configuration Block (FCB) in AN12238 is FlexSPI Configuration Block (flexspi_nor_config_t).

For i.MXRT1060/1050/1020/1015, FCB offset is 0x0. For i.MXRT1170/1010, FCB offset is 0x400. (this change is caused by security peripheral upgrade BEE -> OTFAD)

AN12238 is mainly for i.MXRT1060/1050/1020/1015, as i.MXRT1170/1010 had not yet been released when this AN came out

0 Kudos
3,504 Views
takayuki_ishii
Contributor IV

Hello Jay_heng,

 

Thank you for your quick reply.

I understand that Flash Configuration Block (FCB) == FlexSPI Configuration Block.

 

Best regards,

Ishii.

 

0 Kudos
3,536 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.
For the RT1170, FCB should be stored at offset 0x400 in Serial NOR flash, however, for the other RT series MCU, like the RT1050, RT1060, etc, the ROM expects the 512-byte FlexSPI NOR configuration parameters to be present at offset 0 in Serial NOR flash.
And you can go through the FlexSPI Serial NOR Flash Boot Operation section in the RM to learn it.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos