TI中文支持网
TI专业的中文技术问题搜集分享网站

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

Part Number:PROCESSOR-SDK-AM335XOther 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, 十分感谢

youlin cao:

[补充] 经过检查am33xx-l4.dtsi spi0, 未发现帖子所述情况

e2e.ti.com/…/processor-sdk-am62p-uboot-cannot-access-spi-flash

,

Taylor:

您好,

已经收到了您的案例,调查需要些时间,感谢您的耐心等待

,

youlin cao:

[补充] 经过 fdtdump  [SDK]/board-support/u-boot-build/spl/u-boot-spl.dtb 没有SPI0节点, 但board-support/u-boot-build/dts/dt.dtb 生成则包含spi0节点

,

Daniel:

您好

这是使用早期 SDK 时 AM335x SPI 引导

https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_3747350

,

youlin cao:

谢谢回复, Daniel ,根据这个帖子我有新的启发。

1. SDK 6我目前不打算使用, uboot代码实现和SDK 9差距较大, 在本次移植前已经评估过;

2. SDK7.3我打算研究下, 如果可以SPL -> UBoot.img启动成功, 那我会对比下和当前SDK9的差别;

3. 目前我正在做的是在SDK9基础上, 修改SPL阶段代码, 加入了starterware 中有关的SPI Flash 读取代码, 绕过DM 驱动, 目前初步读取到了FLASH ID;

,

youlin cao:

[反馈] 关于 2. 我有误解, 是借用SDK7.3的deconfig, 不是直接使用SDK7.3, 否则配置spi deconfig 启动依旧报错

U-Boot 2020.01 (Feb 26 2025 - 10:29:37 +0800)CPU: AM335X-GP rev 2.0
Model: TI AM335x BeagleBone Black
DRAM:512 MiB
WDT:Started with servicing (60s timeout)
NAND:0 MiB
MMC:OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from SPI Flash... Invalid bus 0 (err=-19)
*** Warning - spi_flash_probe_bus_cs() failed, using default environment

,

youlin cao:

[反馈] 经过调试 , SDK6.0.3在新增configs内容后(如原贴所示) 未能支持SPI probe命令

赞(0)
未经允许不得转载:TI中文支持网 » PROCESSOR-SDK-AM335X: beaglebone black Uboot SPL spi flash 启动失败, 报告: SPI probe failed.
分享到: 更多 (0)

© 2025 TI中文支持网   网站地图 鲁ICP备2022002796号-1