大家好、
我正在使用基于 DRA722的定制板。如果关闭调试消息、我无法从 QSPI 闪存启动。但在打开调试打印的情况下、我能够成功启动。现在我已将 QSPI 闪存配置为以8MHz 运行。如果使用更高的频率、这也会导致故障。
原因可能是什么?
QSPI 闪存器件型号:mt25ql02gc
此致、
Murugan S
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Rishabh、
当我将 include/configs/board.h 文件中的 CONFIG_SF_DEFAULT 速度值保留为默认76.8 MHz 时,QSPI 引导中出现以下错误:
发现合适
SPI_REACK_BUS:总线:0 CS:0
SPI_xfer:总线:0 cs:0位 len:0标志:4
启用时钟模块- 4a008778
启用时钟模块- 4a008780
Clocks-common.c:禁用时钟模块- 4a008778
Clocks-common.c:禁用时钟模块- 4a008780
SPI_xfer:总线:0 cs:0位 len:0标志:8
SPI_RELEASE_BUS:总线:0 CS:0
FIT 读取扇区40000、扇区=1468、dst=807ffa00、计数=1468
SPL_LOAD_SIMPLE_FIT:找不到/图像节点:-11
SPL:无法从所有引导设备引导
###错误###请重置电路板###
当我将 CONFIG_SF_DEFAULT_SPEED 的值降低到6MHz 时,我可以成功引导:
发现合适
SPI_REACK_BUS:总线:0 CS:0
SPI_xfer:总线:0 cs:0位 len:0标志:4
启用时钟模块- 4a008778
启用时钟模块- 4a008780
Clocks-common.c:禁用时钟模块- 4a008778
Clocks-common.c:禁用时钟模块- 4a008780
SPI_xfer:总线:0 cs:0位 len:0标志:8
SPI_RELEASE_BUS:总线:0 CS:0
FIT 读取扇区40000、扇区=1468、dst=807ffa00、计数=1468
DATA_OFFSET=0、DATA_SIZE=47180
U-Boot 大小为47180、数据为80800000
对齐图像读取:dst=80800000、src_sector=405bc、sectors =47180
SPI_REACK_BUS:总线:0 CS:0
SPI_xfer:总线:0 cs:0位 len:0标志:4
启用时钟模块- 4a008778
启用时钟模块- 4a008780
Clocks-common.c:禁用时钟模块- 4a008778
Clocks-common.c:禁用时钟模块- 4a008780
SPI_xfer:总线:0 cs:0位 len:0标志:8
SPI_RELEASE_BUS:总线:0 CS:0
图像:dst=80800000、data_offset=5bc、size=47180
选择配置'RA72-EVM'、FDT 'FDT@2'
时基故障:选择的'DRA72-EVM'
SPI_REACK_BUS:总线:0 CS:0
SPI_xfer:总线:0 cs:0位 len:0标志:4
启用时钟模块- 4a008778
启用时钟模块- 4a008780
Clocks-common.c:禁用时钟模块- 4a008778
Clocks-common.c:禁用时钟模块- 4a008780
SPI_xfer:总线:0 cs:0位 len:0标志:8
SPI_RELEASE_BUS:总线:0 CS:0
将 FDT 读数对齐:dst 80847180、src_Sector = 9b1d0、Sectors 12a7c
FDT:dst=80847180、data_offset=5b1d0、size=12a7c
跳转到 U-Boot
已加载-跳转到 U-Boot...
initcall:8082313d
initcall:80827e21
注意:我没有更改 dra7-EVM.dts 或 dra72-EVM-common.dtsi 中的值、其中默认值为76.8MHz
这些是我的其他与 QSPI 闪存相关的配置:
1)在 drivers/MTD/SPI/SF_params.c 中、我添加了:
{"mt25ql02g"、 0x20ba22、0x1044、 64 * 1024、 1024、 RD_NORM、 WR_QPP}、
2)在 drivers/spi/ti_qspi.c 中、我在引用 SPI 闪存数据表中的命令后进行了一些更改(我在 SF_internal.h 中进行了相同的更改):
#define QSPI_CMD_READ (0x13 << 0) //默认0x03
#define QSPI_CMD_READ_DUAL (0x3c << 0)//默认值0x6b
#define QSPI_CMD_READ_QUAD (0x6c << 0)
#define QSPI_CMD_READ_FAST (0x0c << 0)//默认0x0B
#define QSPI_SETUP0_NUM_A_bytes (0x3 << 8)
#define QSPI_SETUP0_NUM_D_Bytes_NO_BITS (0x0 << 10)
#define QSPI_SETUP0_NUM_D_Bytes_8_Bits (0x1 << 10)
#define QSPI_SETUP0_READ_NORMAL (0x0 << 12)
#define QSPI_SETUP0_READ_DUAL (0x1 << 12)
#define QSPI_SETUP0_READ_QUAD (0x3 << 12)
#define QSPI_CMD_WRITE (0x12 << 16)
#define QSPI_NUM_Dummy_bits (0x0 << 24)
SPI 闪存的数据表:e2e.ti.com/.../MT25Q_5F00_QLKT_5F00_U_5F00_512_5F00_ABB_5F00_0.pdf
此致、
Murugan S
Murugan、
U-Boot 能够正确读取 QSPI 中的数据、但 MLO 无法正确读取、这让我感到惊讶。 QSPI 驱动程序代码在两者之间完全相同。 我们需要对此进行进一步调查。
您的 SYSBOOT 设置是什么? 您是否从 QSPI 引导? 这个问题很重要、因为它会告诉我们引导 ROM 是否能够无问题地访问 QSPI。
现在,您是否可以运行以下测试?
#define CONFIG_SF_DEFAULT_SPEED 48000000
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_3
#undef CONFIG_TI_EDMA3
#undef CONFIG_QSPI_QUAD_SUPPORT
此致、
Venkat