diff -Nuar u-boot-at91/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c u-boot-at91-loragw/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c --- u-boot-at91/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c 2024-05-22 11:40:07.019509486 +0800 @@ -164,6 +164,7 @@ #if defined(CONFIG_USB_OHCI_NEW) || defined(CONFIG_USB_EHCI) void at91_uhp_hw_init(void) { +#if 0 /* comment by guowenxue 2020.12.4, PD18 conflict with Relay control board on LoRaGW V2 */ /* Enable VBus on UHP ports */ at91_set_pio_output(AT91_PIO_PORTD, 18, 0); /* port A */ at91_set_pio_output(AT91_PIO_PORTD, 19, 0); /* port B */ @@ -171,6 +172,7 @@ /* port C is OHCI only */ at91_set_pio_output(AT91_PIO_PORTD, 20, 0); /* port C */ #endif +#endif } #endif diff -Nuar u-boot-at91/board/atmel/at91sam9x5ek/at91sam9x5ek.c u-boot-at91-loragw/board/atmel/at91sam9x5ek/at91sam9x5ek.c --- u-boot-at91/board/atmel/at91sam9x5ek/at91sam9x5ek.c 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/board/atmel/at91sam9x5ek/at91sam9x5ek.c 2024-05-22 11:40:07.019509486 +0800 @@ -263,6 +263,9 @@ /* adress of boot parameters */ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; + /* PD18 is for relay and active on lowlevel, add by guowenxue 2020.12.4 */ + at91_set_pio_output(AT91_PIO_PORTD, 18, 1); + #ifdef CONFIG_CMD_NAND at91sam9x5ek_nand_hw_init(); #endif diff -Nuar u-boot-at91/common/autoboot.c u-boot-at91-loragw/common/autoboot.c --- u-boot-at91/common/autoboot.c 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/common/autoboot.c 2024-05-22 11:40:07.019509486 +0800 @@ -161,9 +161,11 @@ */ if (bootdelay >= 0) { if (tstc()) { /* we got a key press */ - (void) getc(); /* consume input */ - puts("\b\b\b 0"); - abort = 1; /* don't auto boot */ + if(27==getc()) /* Only get ECS key will skip autoboot, add by guowenxue 2019.12.10 */ + { + puts("\b\b\b 0"); + abort = 1; /* don't auto boot */ + } } } #endif @@ -174,14 +176,12 @@ ts = get_timer(0); do { if (tstc()) { /* we got a key press */ - abort = 1; /* don't auto boot */ - bootdelay = 0; /* no more delay */ -# ifdef CONFIG_MENUKEY - menukey = getc(); -# else - (void) getc(); /* consume input */ -# endif - break; + if(27==getc()) /* Only get ECS key will skip autoboot, add by guowenxue 2019.12.10 */ + { + abort = 1; /* don't auto boot */ + bootdelay = 0; /* no more delay */ + break; + } } udelay(10000); } while (!abort && get_timer(ts) < 1000); diff -Nuar u-boot-at91/common/board_r.c u-boot-at91-loragw/common/board_r.c --- u-boot-at91/common/board_r.c 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/common/board_r.c 2024-05-22 11:40:07.019509486 +0800 @@ -427,6 +427,17 @@ else set_default_env(NULL); + /* add by guowenxue, 2019.12.10. For auto detect rootfs type for 4K/2K nandflash */ + if( !getenv("nand_pagesize") ) + { + char buf[64]={'\0'}; + extern int g_nand_erasesize; /* defined in drivers/mtd/nand/atmel_nand.c */ + + snprintf(buf, sizeof(buf), "p%dk", g_nand_erasesize); + setenv("nand_pagesize", buf); + saveenv(); + } + /* Initialize from environment */ load_addr = getenv_ulong("loadaddr", 16, load_addr); #if defined(CONFIG_SYS_EXTBDINFO) diff -Nuar u-boot-at91/drivers/mtd/nand/atmel_nand.c u-boot-at91-loragw/drivers/mtd/nand/atmel_nand.c --- u-boot-at91/drivers/mtd/nand/atmel_nand.c 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/drivers/mtd/nand/atmel_nand.c 2024-05-22 11:40:07.019509486 +0800 @@ -20,6 +20,8 @@ #include #include +int g_nand_erasesize; /* add by guowenxue, 2019.12.10 */ + #ifdef CONFIG_ATMEL_NAND_HWECC /* Register access macros */ @@ -1519,6 +1521,7 @@ if (!ret) nand_register(devnum); + g_nand_erasesize = mtd->writesize/1024; /* add by guowenxue, 2019.12.10 */ return ret; } diff -Nuar u-boot-at91/include/configs/at91sam9x5ek.h u-boot-at91-loragw/include/configs/at91sam9x5ek.h --- u-boot-at91/include/configs/at91sam9x5ek.h 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/include/configs/at91sam9x5ek.h 2024-05-22 11:40:07.019509486 +0800 @@ -52,7 +52,7 @@ #define CONFIG_ATMEL_LCD_RGB565 #define CONFIG_SYS_CONSOLE_IS_IN_ENV -#define CONFIG_BOOTDELAY 3 +#define CONFIG_BOOTDELAY 1 /* * BOOTP options @@ -98,7 +98,7 @@ #ifdef CONFIG_CMD_SF #define CONFIG_ATMEL_SPI #define CONFIG_SPI_FLASH -#define CONFIG_SPI_FLASH_ATMEL +#define CONFIG_SPI_FLASH_WINBOND /* modify by guowenxue, 2019.12.09 */ #define CONFIG_SF_DEFAULT_SPEED 30000000 #endif @@ -182,15 +182,13 @@ "0x22000000 0x200000 0x300000; " \ "bootm 0x22000000" #elif defined(CONFIG_SYS_USE_SPIFLASH) -/* bootstrap + u-boot + env + linux in spi flash */ -#define CONFIG_ENV_IS_IN_SPI_FLASH -#define CONFIG_ENV_OFFSET 0x5000 -#define CONFIG_ENV_SIZE 0x3000 -#define CONFIG_ENV_SECT_SIZE 0x1000 -#define CONFIG_ENV_SPI_MAX_HZ 30000000 -#define CONFIG_BOOTCOMMAND "sf probe 0; " \ - "sf read 0x22000000 0x100000 0x300000; " \ - "bootm 0x22000000" + +/* bootstrap + u-boot in SPI flash and env + linux in nandflash, modify by guowenxue */ +#define CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_OFFSET 0xC0000 +#define CONFIG_ENV_SIZE 0x20000 +#define CONFIG_BOOTCOMMAND "nand read 0x22000000 0x100000 0x700000; bootm 0x22000000" + #elif defined(CONFIG_SYS_USE_DATAFLASH) /* bootstrap + u-boot + env + linux in data flash */ #define CONFIG_ENV_IS_IN_SPI_FLASH @@ -220,12 +218,35 @@ #else #define CONFIG_BOOTARGS \ "console=ttyS0,115200 earlyprintk " \ - "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro," \ - "256k(env),256k(env_redundant),256k(spare)," \ - "512k(dtb),6M(kernel)ro,-(rootfs) " \ - "rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw" + "rootfstype=ubifs ubi.mtd=2 root=ubi0:rootfs rw" #endif +/* Add by guowenxue, 2019.12.9 */ +#define CONFIG_FIT 1 +#define CONFIG_ENV_OVERWRITE 1 +#define CONFIG_ETHADDR 42:96:ab:be:a7:5d +#define CONFIG_IPADDR 192.168.2.196 +#define CONFIG_SERVERIP 192.168.2.2 + +#define CONFIG_BOARDNAME "LoRaGW" +#define CONFIG_TFTPBOOT "tftp 0x22000000 linuxrom-${boardname}.itb && bootm 0x22000000" + +#define CONFIG_BBL "sf probe && tftp 0x22000000 bootstrap-${boardname}.bin && " \ + "tftp 0x23000000 u-boot-${boardname}.bin && " \ + "sf erase 0 A0000 && sf write 0x22000000 0 3000 && sf write 0x23000000 8000 80000" + +#define CONFIG_BKR "tftp 0x22000000 linuxrom-${boardname}.itb && nand erase 0x100000 0x700000; " \ + "nand write 0x22000000 0x100000 ${filesize}" + +#define CONFIG_BFS "tftp 0x21000000 rootfs-${boardname}.ubi-${nand_pagesize} && nand erase 800000 6400000; " \ + "nand write 0x21000000 800000 ${filesize}" + +#define CONFIG_BSYS "run bkr; run bfs" +#define CONFIG_CLRAPPS "nand erase d000000 13000000" +#define CONFIG_CLRENV "nand erase 0 100000" +#define CONFIG_DBGRUN "run bfs; run tb" +/* add end */ + #define CONFIG_BAUDRATE 115200 #define CONFIG_SYS_PROMPT "U-Boot> " diff -Nuar u-boot-at91/include/env_default.h u-boot-at91-loragw/include/env_default.h --- u-boot-at91/include/env_default.h 2019-12-09 22:12:00.000000000 +0800 +++ u-boot-at91-loragw/include/env_default.h 2024-05-22 11:40:07.019509486 +0800 @@ -76,6 +76,35 @@ #ifdef CONFIG_SERVERIP "serverip=" __stringify(CONFIG_SERVERIP) "\0" #endif +/* add by guowenxue, 2019.08.22 */ +#ifdef CONFIG_BOARDNAME + "boardname=" CONFIG_BOARDNAME "\0" +#endif +#ifdef CONFIG_TFTPBOOT + "tb=" CONFIG_TFTPBOOT "\0" +#endif +#ifdef CONFIG_BBL + "bbl=" CONFIG_BBL "\0" +#endif +#ifdef CONFIG_BKR + "bkr=" CONFIG_BKR "\0" +#endif +#ifdef CONFIG_BFS + "bfs=" CONFIG_BFS "\0" +#endif +#ifdef CONFIG_BSYS + "bsys=" CONFIG_BSYS "\0" +#endif +#ifdef CONFIG_CLRAPPS + "clrapps=" CONFIG_CLRAPPS "\0" +#endif +#ifdef CONFIG_CLRENV + "clrenv=" CONFIG_CLRENV "\0" +#endif +#ifdef CONFIG_DBGRUN + "dbg=" CONFIG_DBGRUN "\0" +#endif +/* add end */ #ifdef CONFIG_SYS_AUTOLOAD "autoload=" CONFIG_SYS_AUTOLOAD "\0" #endif