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.

PROCESSOR-SDK-AM335X: beaglebone black Uboot SPL spi flash 启动失败, 报告: SPI probe failed.

Part Number: PROCESSOR-SDK-AM335X
Other Parts Discussed in Thread: TPS65217, TPS65910

硬件环境: BBB / W25Q64 (Flash , 连接SPI0)

软件环境: ti-processor-sdk-linux-am335x-evm-09.01.00.001

配置:  am335x_evm_spiboot_defconfig

CONFIG_ARM=y
CONFIG_ARCH_CPU_INIT=y
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_TI_COMMON_CMD_OPTIONS=y
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x4030ff00
CONFIG_ENV_OFFSET=0x100000
CONFIG_SPL_DM_SPI=y
CONFIG_DEFAULT_DEVICE_TREE="am335x-evm"
#CONFIG_DEFAULT_DEVICE_TREE="am335x-boneblack"
CONFIG_AM33XX=y
CONFIG_CLOCK_SYNTHESIZER=y
# CONFIG_SPL_MMC is not set
CONFIG_SPL=y
CONFIG_SPL_SPI_FLASH_SUPPORT=y
CONFIG_SPL_SPI=y
CONFIG_TIMESTAMP=y
CONFIG_SPL_LOAD_FIT=y
CONFIG_OF_BOARD_SETUP=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BOOTCOMMAND="run findfdt; run init_console; run finduuid; run distro_bootcmd"
CONFIG_LOGLEVEL=3
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_ARCH_MISC_INIT=y
CONFIG_SYS_SPL_MALLOC=y
CONFIG_SYS_SPL_MALLOC_SIZE=0x800000
CONFIG_SPL_FIT_IMAGE_TINY=y
# CONFIG_SPL_FS_EXT4 is not set
CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img"
CONFIG_SPL_MTD_SUPPORT=y
# CONFIG_SPL_NAND_SUPPORT is not set
CONFIG_SPL_DM_SPI_FLASH=y
CONFIG_SPL_SPI_LOAD=y
CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
CONFIG_SYS_MAXARGS=64
CONFIG_SYS_BOOTM_LEN=0x1000000
CONFIG_CMD_SPL=y
CONFIG_SYS_I2C_EEPROM_ADDR_LEN=2
# CONFIG_CMD_FLASH is not set
CONFIG_CMD_NAND=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_BOOTP_DNS2=y
CONFIG_CMD_MTDPARTS=y
# CONFIG_SPL_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk"
CONFIG_ENV_OVERWRITE=y
# CONFIG_ENV_IS_IN_FAT is not set
CONFIG_ENV_IS_IN_SPI_FLASH=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_SPL_ENV_IS_NOWHERE=y
CONFIG_VERSION_VARIABLE=y
CONFIG_NET_RETRY_COUNT=10
CONFIG_BOOTP_SEND_HOSTNAME=y
CONFIG_SPL_OF_TRANSLATE=y
CONFIG_SPL_TI_SYSC=y
CONFIG_BOOTCOUNT_LIMIT=y
CONFIG_SYS_BOOTCOUNT_BE=y
CONFIG_CLK=y
CONFIG_SPL_CLK=y
CONFIG_CLK_CDCE9XX=y
CONFIG_CLK_TI_CTRL=y
CONFIG_DFU_TFTP=y
CONFIG_DFU_MMC=y
CONFIG_DFU_NAND=y
CONFIG_DFU_RAM=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=1
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_I2C=y
CONFIG_MISC=y
CONFIG_SYS_I2C_EEPROM_ADDR=0x50
# CONFIG_SPL_DM_MMC is not set
# CONFIG_MMC_HW_PARTITIONING is not set
CONFIG_MMC_OMAP_HS=y
CONFIG_MTD=y
CONFIG_MTD_RAW_NAND=y
CONFIG_SYS_NAND_ONFI_DETECTION=y
CONFIG_SYS_NAND_PAGE_SIZE=0x800
CONFIG_SYS_NAND_OOBSIZE=0x40
CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
CONFIG_SYS_NAND_U_BOOT_OFFS=0xc0000
CONFIG_DM_SPI_FLASH=y
CONFIG_SF_DEFAULT_SPEED=24000000
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_ATHEROS=y
CONFIG_PHY_SMSC=y
CONFIG_MII=y
CONFIG_DRIVER_TI_CPSW=y
CONFIG_DM_PMIC=y
# CONFIG_SPL_DM_PMIC is not set
CONFIG_PMIC_TPS65217=y
CONFIG_SPL_POWER_TPS65910=y
CONFIG_SPI=y
CONFIG_DM_SPI=y
CONFIG_OMAP3_SPI=y
CONFIG_TIMER=y
CONFIG_OMAP_TIMER=y
CONFIG_USB=y
CONFIG_DM_USB_GADGET=y
CONFIG_USB_MUSB_HOST=y
CONFIG_USB_MUSB_GADGET=y
CONFIG_USB_MUSB_TI=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"
CONFIG_USB_GADGET_VENDOR_NUM=0x0451
CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
CONFIG_USB_ETHER=y
CONFIG_WDT=y
# CONFIG_SPL_WDT is not set
CONFIG_DYNAMIC_CRC_TABLE=y
CONFIG_RSA=y
CONFIG_LZO=y
# CONFIG_OF_LIBFDT_OVERLAY is not set
# CONFIG_SPL_OS_BOOT=y
CONFIG_SPL_SPI_LOAD=y
CONFIG_SPI_FLASH_USE_4K_SECTORS=y
CONFIG_SPL_DM_SPI=y

设备树配置:

spi0_pins: pinmux_spi0_pins {
pinctrl-single,pins = <
    AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_OUTPUT_PULLUP, MUX_MODE0) /* (A17) spi0_sclk.spi0_sclk*/
    AM33XX_PADCONF(AM335X_PIN_SPI0_D0, PIN_OUTPUT_PULLUP, MUX_MODE0) /* (B17) spi0_d0.spi0_d0 */
    AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT_PULLUP, MUX_MODE0) /* (B16) spi0_d1.spi0_d1 */
    AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_OUTPUT_PULLUP, MUX_MODE0) /* (A16) spi0_cs0.spi0_cs0 */
>;
};

&spi0 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&spi0_pins>;
    ti,pindir-d0-out-d1-in = <1>;
    flash:spi_flash@0 {
        #address-cells = <1>;
        #size-cells = <0>;
        compatible = "jedec,spi-nor";
        spi-max-frequency = <20000000>;
        reg = <0>;
    };
};

故障现象:

1. 编译Uboot后, 将MLO.byteswap 烧写至Flash, SPI启动后输出

sf probe 0
sf erase 0 +0x400000

mw.b 0x81000000 0xFF 0x200000
loadb 0x81000000

sf write 0x81000000 0 ${filesize}

启动出现报错(已添加额外打印信息):

U-Boot SPL 2023.04 (Feb 22 2025 - 13:01:38 +0800)
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: preloader_console_init
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi device start

[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi device faild
: -19
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi flash start

[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi flash faild:
-19
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: [#if]OF_REAL Enbale
[#arch#arm#mach-omap2#boot-common.c] spl_boot_device: ret -> 11
[#arch#arm#mach-omap2#boot-common.c] spl_boot_device: BOOT_DEVICE_SPI
[commmon#spl#spl.c] boot_from_devices: start
[commmon#spl#spl.c] boot_from_devices: n_ents 2
[commmon#spl#spl.c] boot_from_devices: you can find code name [path]: arch/arm/i
nclude/asm/arch-am33xx/spl.h
device code [0]: 11
device name: BOOT_DEVICE_SPI

bootdev [0]: 11
[commmon#spl#spl.c] boot_from_devices: try to find the loader
device name: BOOT_DEVICE_SPI
Trying to boot from SPI
[commmon#spl#spl.c] spl_load_image: start.
[commmon#spl#spl.c] spl_load_image: bootdev.boot_device used 11
[commmon#spl#spl_spi.c] spl_spi_load_image: start.
[drivers#mtd#spi#sf-uclass.c] spi_flash_probe start
[drivers#mtd#spi#sf-uclass.c] spi_flash_probe use old style DM mode
Invalid bus 0 (err=-19)
[commmon#spl#spl_spi.c] spl_spi_load_image: SPI probe failed.
device name: BOOT_DEVICE_UART
---------------------------------------------
loader->boot_device [65] found, but not match
---------------------------------------------
SPL: failed to boot from all boot devices (err=-19)
### ERROR ### Please RESET the board ###

 

2. 编译Uboot后, 通过Uart 下载 u-boot-spl.bin u-boot.img 能够正常识别Flash 

U-Boot SPL 2023.04 (Feb 22 2025 - 13:01:38 +0800)
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: preloader_console_init
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi device start

[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi device faild
: -19
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi flash start

[#arch#arm#mach-omap2#boot-common.c] spl_board_init: try to get spi flash faild:
-19
[#arch#arm#mach-omap2#boot-common.c] spl_board_init: [#if]OF_REAL Enbale
[#arch#arm#mach-omap2#boot-common.c] spl_boot_device: ret -> 65
[#arch#arm#mach-omap2#boot-common.c] spl_boot_device: No-SPI
[commmon#spl#spl.c] boot_from_devices: start
[commmon#spl#spl.c] boot_from_devices: n_ents 2
[commmon#spl#spl.c] boot_from_devices: you can find code name [path]: arch/arm/i
nclude/asm/arch-am33xx/spl.h
device code [0]: 65
device name: BOOT_DEVICE_UART

bootdev [0]: 65
[commmon#spl#spl.c] boot_from_devices: try to find the loader
device name: BOOT_DEVICE_SPI
---------------------------------------------
loader->boot_device [11] found, but not match
---------------------------------------------
device name: BOOT_DEVICE_UART
Trying to boot from UART
[commmon#spl#spl.c] spl_load_image: start.
[commmon#spl#spl.c] spl_load_image: bootdev.boot_device used 65
CCCCLoaded 1022316 bytes
Jumping to U-Boot...
[commmon#spl#spl.c] board_init_r: jump_to_image_no_args


U-Boot 2023.04 (Feb 22 2025 - 13:01:38 +0800)

CPU : AM335X-GP rev 2.0
Model: TI AM335x BeagleBone Black
DRAM: 512 MiB
Core: 161 devices, 20 uclasses, devicetree: separate
WDT: Started wdt@44e35000 with servicing every 1000ms (60s timeout)
NAND: 0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from SPIFlash...
[drivers#spi#omap3_spi.c] omap3_spi_probe start.
[drivers#mtd#spi#sf_probe.c] spi_flash_std_probe start
[drivers#mtd#spi#sf_probe.c] spi_flash_std_probe: name spi_flash@0
SF: Detected w25q64cv with page size 256 Bytes, erase size 4 KiB, total 8 MiB
*** Warning - bad CRC, using default environment

3. 问题追查

目前初步定为 drivers/mtd/spi/sf-uclass.c] spi_flash_probe函数出现无法识别

4. 疑问

请问如何配置可支持SPI0 / FLASH 启动Uboot, 十分感谢