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, 十分感谢