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命令
TI中文支持网

