Hello community,
I'm confuse by "FCB" meaning in boot image explanation.
And I have 2 questions about "FCB".
In IMXRT1170 reference manual,
In application note AN12238 i.MX RT Flashloader Use Case
In community thread
Q1. I can't find information about Flash Configuration Block (FCB): in AN12238.
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?
Best regards,
Ishii.
Solved! Go to Solution.
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
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
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.
-------------------------------------------------------------------------------
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
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.
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
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
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.
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
Hello jay_heng,
Thank you for your quick reply.
I say that RT1170 documents have 3 different type FCB.
Name | NOR | NAND | offset | Reference | |
1 | Flash Configuration Block | O | 0x0000 | AN12238 3.2.1 Bootable image | |
2 | FlexSPI Configuration Block | O | O | 0x0400 | IMXRT1170RM 10.6.3.1 FlexSPI Configuration Block |
3 | Firmware Configuration Block | O | 0x0000 | 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?
Best regards,
Ishii.
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
Hello Jay_heng,
Thank you for your quick reply.
I understand that Flash Configuration Block (FCB) == FlexSPI Configuration Block.
Best regards,
Ishii.
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.
-------------------------------------------------------------------------------