diff -Nuar at91bootstrap/board/at91sam9x5ek/at91sam9x5ek.h at91bootstrap-loragw/board/at91sam9x5ek/at91sam9x5ek.h --- at91bootstrap/board/at91sam9x5ek/at91sam9x5ek.h 2019-08-02 17:30:35.000000000 +0800 +++ at91bootstrap-loragw/board/at91sam9x5ek/at91sam9x5ek.h 2024-05-22 10:38:47.129395727 +0800 @@ -111,4 +111,11 @@ */ #define CONFIG_SYS_ONE_WIRE_PIN AT91C_PIN_PB(18) + +/* + * recovery button pin, add by guowenxue 2019.12.9 + */ +#define CONFIG_SYS_RECOVERY_BUTTON_PIN AT91C_PIN_PA(24) +#define RECOVERY_BUTTON_NAME "BP4" + #endif /*#ifndef __AT91SAM9X5EK_H__ */ diff -Nuar at91bootstrap/.cfg-loragw at91bootstrap-loragw/.cfg-loragw --- at91bootstrap/.cfg-loragw 1970-01-01 08:00:00.000000000 +0800 +++ at91bootstrap-loragw/.cfg-loragw 2024-05-22 10:38:47.129395727 +0800 @@ -0,0 +1,255 @@ +# +# Automatically generated make config: don't edit +# Mon Dec 9 19:48:21 2019 +# +HAVE_DOT_CONFIG=y +# CONFIG_AT91SAM9260EK is not set +# CONFIG_AT91SAM9261EK is not set +# CONFIG_AT91SAM9263EK is not set +# CONFIG_AT91SAM9RLEK is not set +# CONFIG_AT91SAM9XEEK is not set +# CONFIG_AT91SAM9G10EK is not set +# CONFIG_AT91SAM9G20EK is not set +# CONFIG_AT91SAM9M10G45EK is not set +CONFIG_AT91SAM9X5EK=y +# CONFIG_AT91SAM9N12EK is not set +# CONFIG_SAMA5D3XEK is not set +# CONFIG_SAMA5D3_XPLAINED is not set +# CONFIG_SAMA5D3X_CMP is not set +# CONFIG_SAMA5D4EK is not set +# CONFIG_SAMA5D4_XPLAINED is not set +# CONFIG_SAMA5D2_PTC_EK is not set +# CONFIG_SAMA5D2_XPLAINED is not set +# CONFIG_SAMA5D27_SOM1_EK is not set +# CONFIG_SAMA5D2_LPDDR2SIP_VB is not set +# CONFIG_SAMA5D2_ICP is not set +# CONFIG_VINCO is not set +# CONFIG_AT91SAM9X5_ARIA is not set +# CONFIG_AT91SAM9X5_ARIETTA is not set +# CONFIG_SAMA5D3_ACQUA is not set +# CONFIG_SAMA5D2_ROADRUNNER is not set +# CONFIG_CORE9G25 is not set +# CONFIG_SAMA5D3_LINEA is not set +# CONFIG_PICOSAM9G45 is not set +# CONFIG_SAMA5D3_STEPHAN is not set +CONFIG_BOARDNAME="at91sam9x5ek" +AT91SAM9X5=y +CONFIG_MACH_TYPE="3373" +# CONFIG_OVERRIDE_MACH_TYPE is not set +CONFIG_LINK_ADDR="0x300000" +CONFIG_TOP_OF_MEMORY="0x308000" + +# +# Main Crystal configuration +# +CONFIG_CRYSTAL_12_000MHZ=y +# CONFIG_CRYSTAL_16_000MHZ is not set +# CONFIG_CRYSTAL_16_36766MHZ is not set +# CONFIG_CRYSTAL_18_432MHZ is not set +# CONFIG_CRYSTAL_24_000MHZ is not set +# CONFIG_MCK_BYPASS is not set +ALLOW_CRYSTAL_12_000MHZ=y +CONFIG_CRYSTAL="CRYSTAL_12_000MHZ" +# CONFIG_CPU_CLK_166MHZ is not set +# CONFIG_CPU_CLK_180MHZ is not set +# CONFIG_CPU_CLK_200MHZ is not set +# CONFIG_CPU_CLK_240MHZ is not set +# CONFIG_CPU_CLK_266MHZ is not set +# CONFIG_CPU_CLK_332MHZ is not set +# CONFIG_CPU_CLK_348MHZ is not set +# CONFIG_CPU_CLK_396MHZ is not set +CONFIG_CPU_CLK_400MHZ=y +# CONFIG_CPU_CLK_444MHZ is not set +# CONFIG_CPU_CLK_492MHZ is not set +# CONFIG_CPU_CLK_498MHZ is not set +# CONFIG_CPU_CLK_510MHZ is not set +# CONFIG_CPU_CLK_528MHZ is not set +# CONFIG_CPU_CLK_594MHZ is not set +# CONFIG_CPU_CLK_600MHZ is not set +ALLOW_CPU_CLK_400MHZ=y +# DISABLE_CPU_CLK_240MHZ is not set +# CONFIG_BUS_SPEED_83MHZ is not set +# CONFIG_BUS_SPEED_90MHZ is not set +# CONFIG_BUS_SPEED_100MHZ is not set +# CONFIG_BUS_SPEED_116MHZ is not set +# CONFIG_BUS_SPEED_124MHZ is not set +CONFIG_BUS_SPEED_133MHZ=y +# CONFIG_BUS_SPEED_148MHZ is not set +# CONFIG_BUS_SPEED_164MHZ is not set +# CONFIG_BUS_SPEED_166MHZ is not set +# CONFIG_BUS_SPEED_170MHZ is not set +# CONFIG_BUS_SPEED_176MHZ is not set +# CONFIG_BUS_SPEED_200MHZ is not set +SUPPORT_BUS_SPEED_133MHZ=y +# CPU_HAS_TRUSTZONE is not set +# CONFIG_CPU_V7 is not set +# CONFIG_HAS_PMIC_ACT8865 is not set +# CONFIG_SUPPORT_PM is not set +CONFIG_HAS_ONE_WIRE=y +# CONFIG_HAS_EEPROM is not set +# CONFIG_HAS_EHT0_PHY is not set +# CONFIG_HAS_EHT1_PHY is not set +# CONFIG_HAS_AUDIO_CODEC is not set +# CONFIG_HAS_HDMI is not set +CORE_ARM926EJS=y +# CORE_CORTEX_A5 is not set +CPU_HAS_SCKC=y +# CPU_HAS_H32MXDIV is not set +CPU_HAS_HSMCI0=y +CPU_HAS_HSMCI1=y +# CPU_HAS_HSMCI2 is not set +# CPU_HAS_MCI0 is not set +# CPU_HAS_MCI1 is not set +# CPU_HAS_SDHC0 is not set +# CPU_HAS_SDHC1 is not set +CPU_HAS_SPI0=y +CPU_HAS_SPI1=y +# CPU_HAS_SPI0_IOSET1 is not set +# CPU_HAS_SPI0_IOSET2 is not set +# CPU_HAS_SPI1_IOSET1 is not set +# CPU_HAS_SPI1_IOSET2 is not set +# CPU_HAS_SPI1_IOSET3 is not set +# CPU_HAS_QSPI0 is not set +# CPU_HAS_QSPI1 is not set +# CPU_HAS_QSPI0_IOSET1 is not set +# CPU_HAS_QSPI0_IOSET2 is not set +# CPU_HAS_QSPI0_IOSET3 is not set +# CPU_HAS_QSPI1_IOSET1 is not set +# CPU_HAS_QSPI1_IOSET2 is not set +# CPU_HAS_QSPI1_IOSET3 is not set +# BOARD_HAS_2_BANKS is not set +CPU_HAS_SCLK_BYPASS=y +CPU_HAS_PIO3=y +# CPU_HAS_L2CC is not set +CPU_HAS_PMECC=y +CONFIG_HAS_HW_INFO=y +# CONFIG_TWI is not set +# CONFIG_TWI0 is not set +# CONFIG_TWI1 is not set +# CONFIG_TWI2 is not set +# CONFIG_TWI3 is not set +# CONFIG_MACB is not set +# CONFIG_AES is not set +# CONFIG_LOAD_HW_INFO is not set +CPU_HAS_TWI0=y +CPU_HAS_TWI1=y +CPU_HAS_TWI2=y +# CPU_HAS_TWI3 is not set +# CPU_HAS_AES is not set +# CPU_HAS_PIO4 is not set +# CONFIG_FLEXCOM is not set +# CPU_HAS_FLEXCOM is not set + +# +# Memory selection +# +# CONFIG_SDRAM is not set +# CONFIG_SDDRC is not set +CONFIG_DDRC=y +ALLOW_DATAFLASH=y +# ALLOW_FLASH is not set +ALLOW_NANDFLASH=y +ALLOW_SDCARD=y +# ALLOW_PSRAM is not set +# ALLOW_SDRAM_16BIT is not set + +# +# RAM Configuration +# +# CONFIG_RAM_32MB is not set +# CONFIG_RAM_64MB is not set +CONFIG_RAM_128MB=y +# CONFIG_RAM_256MB is not set +# CONFIG_RAM_512MB is not set +# CONFIG_LPDDR1 is not set +# CONFIG_LPDDR2 is not set +# CONFIG_LPDDR3 is not set +CONFIG_DDR2=y +# CONFIG_DDR3 is not set +# CONFIG_SAMA5D2_LPDDR2 is not set +CONFIG_DATAFLASH=y +# CONFIG_FLASH is not set +# CONFIG_NANDFLASH is not set +# CONFIG_SDCARD is not set +CONFIG_MEMORY="dataflash" +# CONFIG_SPI_FLASH is not set +ALLOW_DATAFLASH_RECOVERY=y +CONFIG_SPI_CLK=33000000 +CONFIG_DATAFLASH_RECOVERY=y +CONFIG_SPI=y +# CONFIG_QSPI is not set + +# +# SPI configuration +# +# CONFIG_SMALL_DATAFLASH is not set +CONFIG_SPI_BUS0=y +# CONFIG_SPI_BUS1 is not set +# CONFIG_SPI_BUS2 is not set +CONFIG_SPI_BOOT_CS0=y +# CONFIG_SPI_BOOT_CS1 is not set +# CONFIG_SPI_BOOT_CS2 is not set +# CONFIG_SPI_BOOT_CS3 is not set +ALLOW_BOOT_FROM_DATAFLASH_CS0=y +# ALLOW_BOOT_FROM_DATAFLASH_CS1 is not set +# ALLOW_BOOT_FROM_DATAFLASH_CS2 is not set +# ALLOW_BOOT_FROM_DATAFLASH_CS3 is not set +# DATAFLASHCARD_ON_CS0 is not set +# DATAFLASHCARD_ON_CS1 is not set +# DATAFLASHCARD_ON_CS2 is not set +# DATAFLASHCARD_ON_CS3 is not set +# CONFIG_DATAFLASHCARD is not set +CONFIG_CARD_SUFFIX="" +CONFIG_SPI_BOOT="AT91C_SPI_PCS0_DATAFLASH" +CONFIG_BOOTSTRAP_MAXSIZE="23000" +CONFIG_PROJECT="dataflash" +CONFIG_LOAD_UBOOT=y +# CONFIG_LOAD_LINUX is not set +# CONFIG_LOAD_NONE is not set +# CONFIG_LOAD_ANDROID is not set +# CONFIG_LOAD_1MB is not set +# CONFIG_LOAD_4MB is not set +# CONFIG_LOAD_64KB is not set +# CONFIG_SKIP_COPY_IMAGE is not set +CONFIG_IMG_ADDRESS="0x00008000" +CONFIG_JUMP_ADDR="0x26F00000" + +# +# U-Boot Image Storage Setup +# +CONFIG_IMG_SIZE="0x00080000" +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_LOUD is not set +# CONFIG_DEBUG_VERY_LOUD is not set +CONFIG_THUMB=y +CONFIG_DISABLE_WATCHDOG=y + +# +# Hardware Initialization Options +# +# CONFIG_HW_DISPLAY_BANNER is not set +CONFIG_HW_INIT=y +# CONFIG_USER_HW_INIT is not set + +# +# Slow Clock Configuration Options +# +CONFIG_SCLK=y +# CONFIG_SCLK_BYPASS is not set +# CONFIG_BACKUP_MODE is not set + +# +# Board Hardware Information Options +# +# CONFIG_LOAD_ONE_WIRE is not set + +# +# Basic Drivers support +# +CONFIG_PIT=y +CONFIG_WDT=y +CONFIG_RSTC=y +CONFIG_USART=y +CONFIG_PIO=y +CONFIG_PMC=y diff -Nuar at91bootstrap/driver/common.c at91bootstrap-loragw/driver/common.c --- at91bootstrap/driver/common.c 2019-08-02 17:30:35.000000000 +0800 +++ at91bootstrap-loragw/driver/common.c 2024-05-22 10:38:47.129395727 +0800 @@ -141,14 +141,16 @@ media = NULL; #endif +#if 0 /* comment by guowenxue, 2019.12.9 */ if (media) usart_puts(media); +#endif if (retval == 0) { #if defined(CONFIG_LOAD_NONE) usart_puts("AT91Bootstrap completed. Can load application via JTAG and jump.\n"); #else - usart_puts("Done to load image\n"); + //usart_puts("Done to load image\n"); /* comment by guowenxue, 2019.12.9 */ #endif } if (retval == -1) { diff -Nuar at91bootstrap/driver/Config.in.dataflash at91bootstrap-loragw/driver/Config.in.dataflash --- at91bootstrap/driver/Config.in.dataflash 2019-08-02 17:30:35.000000000 +0800 +++ at91bootstrap-loragw/driver/Config.in.dataflash 2024-05-22 10:38:47.129395727 +0800 @@ -4,7 +4,7 @@ config ALLOW_DATAFLASH_RECOVERY bool - default n + default y config CONFIG_SPI_CLK int "SPI clock speed" diff -Nuar at91bootstrap/driver/spi_flash.c at91bootstrap-loragw/driver/spi_flash.c --- at91bootstrap/driver/spi_flash.c 2019-08-02 17:30:35.000000000 +0800 +++ at91bootstrap-loragw/driver/spi_flash.c 2024-05-22 10:38:47.129395727 +0800 @@ -582,7 +582,9 @@ df_desc->family = family; switch ( vendor ) { - case MANUFACTURER_ID_ATMEL: { + case MANUFACTURER_ID_ATMEL: + case MANUFACTURER_ID_WINBOND: /* Add by guowenxue 2019.12.9, for support Winbond W25Q64V SPI serialflash */ + { if ((df_desc->family == DF_FAMILY_AT26F) || (df_desc->family == DF_FAMILY_AT26DF)) {