Page tree
Skip to end of metadata
Go to start of metadata

The ROM supports the following Flash interfaces:

NAND Flash启动

NAND contains n copies of FSBL in n first blocks. The ROM code scans blocks from the first and loads the FSBL contained in the first valid block.

NAND在第n个块中包含n个FSBL副本。ROM代码从第一个块扫描块并加载第一个有效块中包含的FSBL。

The ROM code supports FMC (parallel) NANDs and QSPI (serial) NANDs.

ROM代码支持FMC(并行)NAND和QSPI(串行)NAND。

Supported FMC (parallel) NANDs:

ROM代码通过以下参数支持FMC NAND。

Block size
(KBytes )
Page size
(KBytes)
Data widthECC1(bits and code)
12828, 164 (bch), 8 (bch), 1 (hamming)
25648, 164 (bch), 8 (bch), 1 (hamming)
51248, 164 (bch), 8 (bch), 1 (hamming)
51288, 164 (bch), 8 (bch), 1 (hamming)

1: The ROM code supports both FMC NAND with or without on-die ECC. The ECC given here is for NAND without on-die ECC.


Supported QSPI (serial) NANDs:

ROM代码通过以下参数支持QSPI NAND。

Block size
(KBytes)
Page size
(KBytes)
1282
2564
5124
5128


Configuration:

为了读取NAND Flash,ROM代码需要知道page大小,block大小和block数量。 对于FMC NAND,它还需要知道ECC位的宽度和数量。

The ROM code detects NAND parameters storage location by checking OTP WORD9.nand_param_stored_in_otp value.

If OTP WORD9.nand_param_stored_in_otp value is equal to 0 (which is the default) then the NAND shall provide an ONFI compliant parameter table in which the ROM code looks for NAND parameters. “ONFI compliant” means that a NAND provides an ONFI get parameter command that returns a table where at least parameters needed by ROM code are located at standard ONFI offsets.

If OTP WORD9.nand_param_stored_in_otp value is equal to 1, the ROM code looks for NAND parameters in OTP WORD9.

The number of ECC bits is a particular case, as it can be set by OTP even if OTP WORD9.nand_param_stored_in_otp is equal to 0. This is to allow the user to override the recommanded number of ECC bits given by the parameter table of an ONFI NAND.

In case of QSPI NAND boot, the ROM code applies the same AFmuxes as the ones for QSPI NOR.

In case of FMC NAND boot, the ROM code applies the following AFmuxes:

FMC NAND
8 bits
IO namePin id (AF mux)
FMC_NOEPD4 (AF12)
FMC_NWAITPD6 (AF12)
FMC_NWEPD5 (AF12)
FMC_NCEPG9 (AF12)
FMC_ALEPD12 (AF12)
FMC_CLEPD11 (AF12)
FMC_D0PD14 (AF12)
FMC_D1PD15 (AF12)
FMC_D2PD0 (AF12)
FMC_D3PD1 (AF12)
FMC_D4PE7 (AF12)
FMC_D5PE8 (AF12)
FMC_D6PE9 (AF12)
FMC_D7PE10 (AF12)
16 bits complement
IO namePin id (AF mux)
FMC_D8PE11 (AF12)
FMC_D9PE12 (AF12)
FMC_D10PE13 (AF12)
FMC_D11PE14 (AF12)
FMC_D12PE15 (AF12)
FMC_D13PD8 (AF12)
FMC_D14Pd9 (AF12)
FMC_D15PD10 (AF12)

QSPI NOR启动

NOR Flash包含两份FSBL。 ROM代码尝试加载并启动第一个副本。 如果发生故障,它将尝试加载第二个副本。

ROM代码在偏移LBA0处寻找FSBL1,在偏移LBA512处寻找FSBL2。

可以单模式或双模式使用NOR Flash。 在双模式下,两个NOR Flash连接到NOR接口的两个端口,并且两个存储器以隔行模式使用。

Configuration:

The ROM code uses SPI legacy mode MOSI/MISO only (i.e. uses only 2 pins IO0 and IO1 to transfer data).

The ROM code automatically detects single and dual modes.

In dual mode, BK1_NCS shall be connected to BK2_NCS on board.

By default the ROM code applies the following AFmuxes:

QSPI NOR
QSPI NOR (single NOR)
IO namePin id (AF mux)
QUADSPI_CLKPF10 (AF9)
QUADSPI_BK1_NCSPB6 (AF10)
QUADSPI_BK1_IO0PF8 (AF10)
QUADSPI_BK1_IO1PF9 (AF10)
QSPI NOR (dual NOR)
IO namePin id (AF mux)
QUADSPI_CLKPF10 (AF9)
QUADSPI_BK1_NCSPB6 (AF10)
QUADSPI_BK1_IO0PF8 (AF10)
QUADSPI_BK1_IO1PF9 (AF10)
QUADSPI_BK2_IO0PH2 (AF9)
QUADSPI_BK2_IO1PH3 (AF9)

这些默认的AFmux可以被OTP WORD 5到7定义的OTP值覆盖。


SD启动

SD卡包含两个版本的FSBL。ROM代码试图加载并启动第一个副本。如果失败,则尝试加载第二个副本。

ROM代码首先查找GPT。 如果找到它,它将通过查找名称以“ fsbl”开头的前两个GPT条目来找到两个FSBL。 如果找不到GPT,则ROM代码在偏移LBA34处寻找FSBL1,在偏移LBA546处寻找FSBL2。

Configuration:

ROM代码仅使用一个数据位。

默认情况下,ROM代码使用SDMMC1实例。

如果OTP WORD 3 sd_if_id字段值不等于0,则ROM代码使用该字段的值(1或2)确定要使用的SDMMC接口。

默认情况下,ROM代码应用以下AFmuxes:

IO namePin id (AF mux)
SDMMC1_CKPC12 (AF12)
SDMMC1_CMDPD2 (AF12)
SDMMC1_D0PC8 (AF12)
SDMMC1_CDIRPB9 (AF11)
SDMMC1_D0DIRAFMUX OTP needed

如果OTP WORD 3的sd_if_id字段值不等于0,则ROM代码使用由OTP WORD 5到7定义的非默认AFmux值。

请注意,SDMMC1_D0DIR的AFmux没有默认值,如果需要,必须通过OTP WORD 5到7进行应用。

eMMC启动

eMMC在其两个引导区域中包含两个FSBL副本,但一次仅一个引导区域处于活动状态。 ROM代码尝试加载并启动活动引导区域中包含的FSBL副本。

Configuration:

ROM代码仅使用一个数据位。

默认情况下,ROM代码使用SDMMC2实例。

如果OTP WORD 3 emmc_if_id字段值不等于0,则ROM代码使用该字段的值(1或2)确定要使用的SDMMC接口。

默认情况下,ROM代码适用于以下AFmux:

IO namePin id (AF mux)
SDMMC2_CKPE3 (AF09)
SDMMC2_CMDPG6 (AF10)
SDMMC2_D0PB14 (AF09)

如果OTP WORD 3 emmc_if_id字段值不等于0,则ROM代码使用由OTP WORD 5到7定义的非默认AFmux值。

  • No labels