From 9393cb81acc34d1bd27cc921d8d98e618fb74662 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Fri, 23 Aug 2019 00:14:04 +0800
Subject: [PATCH] update u-boot,linux kernel to compile dtb and zImage into single idb file; update bootstrap,u-boot,linux kernel nandflash partition; update sama5d4_xplained_loader files in folder

---
 linux-bsp/patches/at91bootstrap-sama5d4.patch                  |   10 
 linux-bsp/patches/linux-at91-sama5d4.patch                     |  134 +++++++++++++++++++--
 tools/sama5d4_xplained_loader/demo_linux_nandflash_system.bat  |    2 
 linux-bsp/patches/u-boot-at91-sama5d4.patch                    |   61 +++++-----
 /dev/null                                                      |    0 
 linux-bsp/tarballs/partition.txt                               |   11 +
 tools/setup_env.sh                                             |    2 
 tools/sama5d4_xplained_loader/ReadMe.txt                       |   16 ++
 tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qmlc |    0 
 tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qml  |   76 ++++++++++++
 10 files changed, 259 insertions(+), 53 deletions(-)

diff --git a/linux-bsp/patches/at91bootstrap-sama5d4.patch b/linux-bsp/patches/at91bootstrap-sama5d4.patch
index 91e26f8..d88e7c0 100644
--- a/linux-bsp/patches/at91bootstrap-sama5d4.patch
+++ b/linux-bsp/patches/at91bootstrap-sama5d4.patch
@@ -1,6 +1,6 @@
 diff -Nuar at91bootstrap/build.sh at91bootstrap-sama5d4/build.sh
 --- at91bootstrap/build.sh	1970-01-01 08:00:00.000000000 +0800
-+++ at91bootstrap-sama5d4/build.sh	2019-08-22 18:54:20.707235362 +0800
++++ at91bootstrap-sama5d4/build.sh	2019-08-22 19:29:04.983275344 +0800
 @@ -0,0 +1,71 @@
 +#!/bin/bash
 +
@@ -75,11 +75,11 @@
 +
 diff -Nuar at91bootstrap/.cfg-sama5d4 at91bootstrap-sama5d4/.cfg-sama5d4
 --- at91bootstrap/.cfg-sama5d4	1970-01-01 08:00:00.000000000 +0800
-+++ at91bootstrap-sama5d4/.cfg-sama5d4	2019-08-22 13:18:47.498849159 +0800
++++ at91bootstrap-sama5d4/.cfg-sama5d4	2019-08-23 00:01:11.723588530 +0800
 @@ -0,0 +1,274 @@
 +#
 +# Automatically generated make config: don't edit
-+# Thu Aug 22 13:18:42 2019
++# Thu Aug 22 23:43:05 2019
 +#
 +HAVE_DOT_CONFIG=y
 +# CONFIG_AT91SAM9260EK is not set
@@ -291,7 +291,7 @@
 +#
 +# U-Boot Image Storage Setup
 +#
-+CONFIG_IMG_SIZE="0x000a0000"
++CONFIG_IMG_SIZE="0x00080000"
 +CONFIG_DEBUG=y
 +CONFIG_DEBUG_INFO=y
 +# CONFIG_DEBUG_LOUD is not set
@@ -353,7 +353,7 @@
 +CONFIG_PMC=y
 diff -Nuar at91bootstrap/Makefile at91bootstrap-sama5d4/Makefile
 --- at91bootstrap/Makefile	2019-08-02 17:30:35.000000000 +0800
-+++ at91bootstrap-sama5d4/Makefile	2019-08-22 11:46:05.882742473 +0800
++++ at91bootstrap-sama5d4/Makefile	2019-08-22 19:29:04.983275344 +0800
 @@ -119,6 +119,7 @@
  
  HOSTARCH := $(shell uname -m | sed -e s/arm.*/arm/)
diff --git a/linux-bsp/patches/linux-at91-sama5d4.patch b/linux-bsp/patches/linux-at91-sama5d4.patch
index 5049d2b..e1d12c5 100644
--- a/linux-bsp/patches/linux-at91-sama5d4.patch
+++ b/linux-bsp/patches/linux-at91-sama5d4.patch
@@ -1,6 +1,6 @@
 diff -Nuar linux-at91/arch/arm/boot/dts/at91-sama5d4_xplained.dts linux-at91-sama5d4/arch/arm/boot/dts/at91-sama5d4_xplained.dts
 --- linux-at91/arch/arm/boot/dts/at91-sama5d4_xplained.dts	2019-08-18 17:24:46.000000000 +0800
-+++ linux-at91-sama5d4/arch/arm/boot/dts/at91-sama5d4_xplained.dts	2019-08-20 14:09:32.906035974 +0800
++++ linux-at91-sama5d4/arch/arm/boot/dts/at91-sama5d4_xplained.dts	2019-08-22 23:05:47.351524760 +0800
 @@ -128,6 +128,12 @@
  			spi1: spi@fc018000 {
  				cs-gpios = <&pioB 21 0>;
@@ -14,10 +14,65 @@
  			};
  
  			adc0: adc@fc034000 {
+@@ -201,35 +207,25 @@
+ 			atmel,has-pmecc;
+ 			status = "okay";
+ 
+-			at91bootstrap@0 {
+-				label = "at91bootstrap";
+-				reg = <0x0 0x40000>;
+-			};
+-
+-			bootloader@40000 {
+-				label = "bootloader";
+-				reg = <0x40000 0x80000>;
+-			};
+-
+-			bootloaderenv@c0000 {
+-				label = "bootloader env";
+-				reg = <0xc0000 0xc0000>;
+-			};
+-
+-			dtb@180000 {
+-				label = "device tree";
+-				reg = <0x180000 0x80000>;
+-			};
+-
+-			kernel@200000 {
+-				label = "kernel";
+-				reg = <0x200000 0x600000>;
+-			};
+-
+-			rootfs@800000 {
+-				label = "rootfs";
+-				reg = <0x800000 0x0f800000>;
+-			};
++            bootloader@0 { /* 1MB: 0~40000(bootstrap) 40000~C0000(u-boot.bin) C0000~100000(u-boot.env) */ 
++                label = "bootloader"; 
++                reg = <0x0 0x100000>; 
++            };
++
++            linux@100000 { /* 7MB */ 
++                label = "linux"; 
++                reg = <0x100000 0x700000>;
++            }; 
++
++            rootfs@800000 { /* 200MB */ 
++                label = "rootfs"; 
++                reg = <0x800000 0xc800000>; 
++            };
++
++            apps@800000 { /* 48MB */ 
++                label = "apps"; 
++                reg = <0xD000000 0x3000000>; 
++            };
+ 		};
+ 	};
+ 
 diff -Nuar linux-at91/build.sh linux-at91-sama5d4/build.sh
 --- linux-at91/build.sh	1970-01-01 08:00:00.000000000 +0800
-+++ linux-at91-sama5d4/build.sh	2019-08-22 19:01:50.275243986 +0800
-@@ -0,0 +1,81 @@
++++ linux-at91-sama5d4/build.sh	2019-08-22 23:15:52.059536360 +0800
+@@ -0,0 +1,85 @@
 +#!/bin/bash
 +
 +BOARD=sama5d4
@@ -25,6 +80,9 @@
 +IMGS_PATH=../images
 +IMG_KER=linuxrom-${BOARD}.bin
 +IMG_DTB=linuxrom-${BOARD}.dtb
++IMG_ITB=linuxrom-${BOARD}.itb
++
++IMG_FILES=${IMG_ITB}
 +
 +#INITRAMFS=YES
 +
@@ -44,7 +102,7 @@
 +function do_clean()
 +{
 +    #clean_initramfs
-+    rm -f ${IMG_KER} $IMG_DTB
++    rm -f ${IMG_FILES}
 +    rm -f cscope* tags
 +    make CROSS_COMPILE=${CROSSTOOL} distclean
 +}
@@ -60,22 +118,23 @@
 +    sed -i "s|^\<ARCH\>.*|ARCH\t\t\t?=  arm|g" Makefile 
 +    sed -i "s|^CROSS_COMPILE.*|CROSS_COMPILE\t?=  ${CROSSTOOL}|g" Makefile 
 +
-+    make -j${JOBS} uImage LOADADDR=0x22000000
-+    make -j${JOBS} dtbs
++    make -j${JOBS} 
 +
-+    cp arch/arm/boot/uImage ${IMG_KER} && chmod a+x ${IMG_KER}
-+    cp arch/arm/boot/dts/at91-sama5d4_xplained.dtb ${IMG_DTB} && chmod a+x ${IMG_DTB}
++    echo "mkimage -f linuxrom-${BOARD}.its ${IMG_ITB}"
++    mkimage -f linuxrom-${BOARD}.its ${IMG_ITB} > /dev/null
++    chmod a+x ${IMG_ITB}
 +}
 +
 +function do_install()
 +{
 +    if [ -d $TFTP_PATH ] ;then 
-+        echo "cp ${IMG_KER} ${IMG_DTB} $TFTP_PATH"
-+        cp ${IMG_KER} ${IMG_DTB} $TFTP_PATH
++        echo "cp ${IMG_FILES} $TFTP_PATH"
++        cp ${IMG_FILES} $TFTP_PATH
 +    fi
 +
 +    if [ -d ${IMGS_PATH} ] ; then
-+        cp ${IMG_KER} ${IMG_DTB} $IMGS_PATH
++        echo "cp ${IMG_FILES} $IMGS_PATH"
++        cp ${IMG_FILES} $IMGS_PATH
 +    fi
 +}
 +
@@ -101,7 +160,7 @@
 +
 diff -Nuar linux-at91/.cfg-sama5d4 linux-at91-sama5d4/.cfg-sama5d4
 --- linux-at91/.cfg-sama5d4	1970-01-01 08:00:00.000000000 +0800
-+++ linux-at91-sama5d4/.cfg-sama5d4	2019-08-22 19:01:58.915244152 +0800
++++ linux-at91-sama5d4/.cfg-sama5d4	2019-08-23 00:02:44.587590311 +0800
 @@ -0,0 +1,4073 @@
 +#
 +# Automatically generated file; DO NOT EDIT.
@@ -4178,7 +4237,7 @@
 +# CONFIG_VIRTUALIZATION is not set
 diff -Nuar linux-at91/drivers/net/wireless/ralink/rt2x00/rt2800usb.c linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
 --- linux-at91/drivers/net/wireless/ralink/rt2x00/rt2800usb.c	2019-08-18 17:24:53.000000000 +0800
-+++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2800usb.c	2019-08-20 14:09:32.910035974 +0800
++++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2800usb.c	2019-08-22 23:05:23.819524309 +0800
 @@ -123,7 +123,8 @@
  	if (!test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
  		return false;
@@ -4191,7 +4250,7 @@
  			   "TX status timeout for entry %d in queue %d\n",
 diff -Nuar linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
 --- linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h	2019-08-18 17:24:53.000000000 +0800
-+++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h	2019-08-20 14:09:32.910035974 +0800
++++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h	2019-08-22 23:05:23.819524309 +0800
 @@ -632,7 +632,8 @@
  {
  	if (!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
@@ -4204,7 +4263,7 @@
  /**
 diff -Nuar linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h
 --- linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h	2019-08-18 17:24:53.000000000 +0800
-+++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h	2019-08-20 14:09:32.910035974 +0800
++++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h	2019-08-22 23:05:23.823524309 +0800
 @@ -38,7 +38,7 @@
   * a higher value is required. In that case we use the REGISTER_TIMEOUT_FIRMWARE
   * and EEPROM_TIMEOUT.
@@ -4216,7 +4275,7 @@
  
 diff -Nuar linux-at91/drivers/spi/spidev.c linux-at91-sama5d4/drivers/spi/spidev.c
 --- linux-at91/drivers/spi/spidev.c	2019-08-18 17:24:57.000000000 +0800
-+++ linux-at91-sama5d4/drivers/spi/spidev.c	2019-08-20 14:09:32.910035974 +0800
++++ linux-at91-sama5d4/drivers/spi/spidev.c	2019-08-22 23:05:23.823524309 +0800
 @@ -696,6 +696,7 @@
  static const struct of_device_id spidev_dt_ids[] = {
  	{ .compatible = "rohm,dh2228fv" },
@@ -4225,9 +4284,50 @@
  	{},
  };
  MODULE_DEVICE_TABLE(of, spidev_dt_ids);
+diff -Nuar linux-at91/linuxrom-sama5d4.its linux-at91-sama5d4/linuxrom-sama5d4.its
+--- linux-at91/linuxrom-sama5d4.its	1970-01-01 08:00:00.000000000 +0800
++++ linux-at91-sama5d4/linuxrom-sama5d4.its	2019-08-22 22:54:12.063511423 +0800
+@@ -0,0 +1,37 @@
++/* U-Boot uImage source file for "sama5d4_xplained" */
++ 
++/dts-v1/;
++ 
++/ {
++    description = "U-Boot uImage source file for SAMA5D4 Xplained";
++    #address-cells = <1>;
++ 
++    images {
++        kernel@sama5d4 {
++            description = "Linux kernel for SAMA5D4 Xplained";
++            data = /incbin/("arch/arm/boot/zImage");
++            type = "kernel";
++            arch = "arm";
++            os = "linux";
++            compression = "none";
++            load = <0x20008000>;
++            entry = <0x20008000>;
++        };
++        fdt@sama5d4 {
++            description = "Flattened Device Tree blob for SAMA5D4 Xplained";
++            data = /incbin/("arch/arm/boot/dts/at91-sama5d4_xplained.dtb");
++            type = "flat_dt";
++            arch = "arm";
++            compression = "none";
++        };
++    };
++ 
++    configurations {
++        default = "conf@sama5d4";
++        conf@sama5d4 {
++            description = "Boot Linux kernel with FDT blob";
++            kernel = "kernel@sama5d4";
++            fdt = "fdt@sama5d4";
++        };
++    };
++};
 diff -Nuar linux-at91/Makefile linux-at91-sama5d4/Makefile
 --- linux-at91/Makefile	2019-08-18 17:24:45.000000000 +0800
-+++ linux-at91-sama5d4/Makefile	2019-08-20 14:09:33.046035975 +0800
++++ linux-at91-sama5d4/Makefile	2019-08-22 23:16:11.343536730 +0800
 @@ -1,7 +1,7 @@
  VERSION = 4
  PATCHLEVEL = 9
diff --git a/linux-bsp/patches/u-boot-at91-sama5d4.patch b/linux-bsp/patches/u-boot-at91-sama5d4.patch
index a20c947..24e8766 100644
--- a/linux-bsp/patches/u-boot-at91-sama5d4.patch
+++ b/linux-bsp/patches/u-boot-at91-sama5d4.patch
@@ -1,6 +1,6 @@
 diff -Nuar u-boot-at91/build.sh u-boot-at91-sama5d4/build.sh
 --- u-boot-at91/build.sh	1970-01-01 08:00:00.000000000 +0800
-+++ u-boot-at91-sama5d4/build.sh	2019-08-22 18:55:28.199236657 +0800
++++ u-boot-at91-sama5d4/build.sh	2019-08-22 19:29:07.323275389 +0800
 @@ -0,0 +1,67 @@
 +#!/bin/bash
 +
@@ -71,7 +71,7 @@
 +
 diff -Nuar u-boot-at91/include/configs/sama5d4_xplained.h u-boot-at91-sama5d4/include/configs/sama5d4_xplained.h
 --- u-boot-at91/include/configs/sama5d4_xplained.h	2019-08-04 21:52:13.000000000 +0800
-+++ u-boot-at91-sama5d4/include/configs/sama5d4_xplained.h	2019-08-22 16:37:32.807077915 +0800
++++ u-boot-at91-sama5d4/include/configs/sama5d4_xplained.h	2019-08-22 23:56:21.299582959 +0800
 @@ -38,7 +38,7 @@
  #define CONFIG_USART_BASE		ATMEL_BASE_USART3
  #define	CONFIG_USART_ID			ATMEL_ID_USART3
@@ -81,45 +81,48 @@
  
  /*
   * BOOTP options
-@@ -173,9 +173,9 @@
- #define CONFIG_ENV_OFFSET		0xc0000
- #define CONFIG_ENV_OFFSET_REDUND	0x100000
- #define CONFIG_ENV_SIZE			0x20000
+@@ -170,12 +170,10 @@
+ #elif CONFIG_SYS_USE_NANDFLASH
+ /* bootstrap + u-boot + env in nandflash */
+ #define CONFIG_ENV_IS_IN_NAND
+-#define CONFIG_ENV_OFFSET		0xc0000
+-#define CONFIG_ENV_OFFSET_REDUND	0x100000
+-#define CONFIG_ENV_SIZE			0x20000
 -#define CONFIG_BOOTCOMMAND	"nand read 0x21000000 0x180000 0x80000;" \
-+#define CONFIG_BOOTCOMMAND	"nand read 0x21000000 0x180000 0x40000;" \
- 				"nand read 0x22000000 0x200000 0x600000;" \
+-				"nand read 0x22000000 0x200000 0x600000;" \
 -				"bootz 0x22000000 - 0x21000000"
-+				"bootm 0x22000000 - 0x21000000"
++#define CONFIG_ENV_OFFSET		    0xC0000
++#define CONFIG_ENV_SIZE			    0x20000
++//#define CONFIG_ENV_OFFSET_REDUND	0xa0000
++#define CONFIG_BOOTCOMMAND	"nand read 0x22000000 0x100000 0x700000; bootm 0x22000000" 
  #elif CONFIG_SYS_USE_MMC
  /* bootstrap + u-boot + env in sd card */
  #define CONFIG_ENV_IS_IN_FAT
-@@ -194,6 +194,37 @@
+@@ -194,6 +192,35 @@
  				"bootz 0x22000000 - 0x21000000"
  #endif
  
 +/* add by guowenxue, 2019.08.22 */
++#define CONFIG_FIT              1
 +#define CONFIG_ENV_OVERWRITE    1
 +#define CONFIG_ETHADDR          42:96:ab:be:a7:5e
 +#define CONFIG_IPADDR           192.168.2.199
 +#define CONFIG_SERVERIP         192.168.2.2
 +
 +
-+#define CONFIG_TFTPBOOT         "tftp 0x22000000 linuxrom-sama5d4.bin && tftp 0x21000000 linuxrom-sama5d4.dtb; " \
-+                                "bootm 0x22000000 - 0x21000000"
 +
-+#define CONFIG_BBL              "tftp 0x21000000 u-boot-sama5d4.bin && nand erase 0x40000 0x140000;" \
++#define CONFIG_TFTPBOOT         "tftp 0x22000000 linuxrom-sama5d4.itb && bootm 0x22000000" 
++
++#define CONFIG_BBL              "tftp 0x21000000 u-boot-sama5d4.bin && nand erase 0x40000 0xC0000;" \
 +                                "nand write 0x21000000 0x40000 ${filesize}"
 +     
-+#define CONFIG_BDTB             "tftp 0x21000000 linuxrom-sama5d4.dtb && nand erase 0x180000 0x80000; " \
-+                                "nand write 0x21000000 0x180000 ${filesize}"
-+
-+#define CONFIG_BKR              "tftp 0x22000000 linuxrom-sama5d4.bin && nand erase 0x200000 0x600000; " \
-+                                "nand write 0x22000000 0x200000 ${filesize}"
++#define CONFIG_BKR              "tftp 0x22000000 linuxrom-sama5d4.itb && nand erase 0x100000 0x700000; " \
++                                "nand write 0x22000000 0x100000 ${filesize}"
 +
 +#define CONFIG_BFS              "tftp 0x21000000 rootfs-sama5d4.ubi && nand erase 800000 c800000; " \
 +                                "nand write 0x21000000 800000 ${filesize}"
 +
-+#define CONFIG_BSYS             "run bbl; run bdtb; run bkr; run bfs"
++#define CONFIG_BSYS             "run bbl; run bkr; run bfs"
 +
 +#define CONFIG_CLRAPPS          "nand erase d000000 13000000"
 +
@@ -131,21 +134,22 @@
  #ifdef CONFIG_SYS_USE_MMC
  #define CONFIG_BOOTARGS							\
  	"console=ttyS0,115200 earlyprintk "				\
-@@ -203,8 +234,8 @@
+@@ -201,10 +228,7 @@
+ #else
+ #define CONFIG_BOOTARGS							\
  	"console=ttyS0,115200 earlyprintk "				\
- 	"mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"		\
- 	"256K(env),256k(evn_redundent),256k(spare),"			\
+-	"mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"		\
+-	"256K(env),256k(evn_redundent),256k(spare),"			\
 -	"512k(dtb),6M(kernel)ro,-(rootfs) "				\
 -	"rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs"
-+	"512k(dtb),6M(kernel)ro,200M(rootfs),-(apps) "				\
-+	"rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw"
++	"rootfstype=ubifs ubi.mtd=2 root=ubi0:rootfs rw"
  #endif
  
  #define CONFIG_BAUDRATE			115200
 diff -Nuar u-boot-at91/include/env_default.h u-boot-at91-sama5d4/include/env_default.h
 --- u-boot-at91/include/env_default.h	2019-08-04 21:52:13.000000000 +0800
-+++ u-boot-at91-sama5d4/include/env_default.h	2019-08-22 16:33:49.407073630 +0800
-@@ -76,6 +76,33 @@
++++ u-boot-at91-sama5d4/include/env_default.h	2019-08-22 23:47:56.027573267 +0800
+@@ -76,6 +76,30 @@
  #ifdef	CONFIG_SERVERIP
  	"serverip="	__stringify(CONFIG_SERVERIP)	"\0"
  #endif
@@ -156,9 +160,6 @@
 +#endif
 +#ifdef  CONFIG_BBL
 +	"bbl="	CONFIG_BBL	"\0"
-+#endif
-+#ifdef  CONFIG_BDTB
-+	"bdtb="	CONFIG_BDTB	"\0"
 +#endif
 +#ifdef CONFIG_BKR
 +	"bkr="	CONFIG_BKR	"\0"
@@ -181,7 +182,7 @@
  #endif
 diff -Nuar u-boot-at91/Makefile u-boot-at91-sama5d4/Makefile
 --- u-boot-at91/Makefile	2019-08-04 21:52:12.000000000 +0800
-+++ u-boot-at91-sama5d4/Makefile	2019-08-22 11:46:09.222742538 +0800
++++ u-boot-at91-sama5d4/Makefile	2019-08-22 19:29:07.323275389 +0800
 @@ -194,6 +194,9 @@
  
  #########################################################################
diff --git a/linux-bsp/tarballs/partition.txt b/linux-bsp/tarballs/partition.txt
new file mode 100644
index 0000000..87e8146
--- /dev/null
+++ b/linux-bsp/tarballs/partition.txt
@@ -0,0 +1,11 @@
+
+MT29F4G08: PageSize=2K(0x800) BlockSize=2(Planes)*64Pages=256K(0x40000)   Total: 256M(0x1000,0000)
++-------------------------------------------------------------------------------------------------------
+         ImageName           ImageSize       LoadAddress        Size
+      bootstrap-sama5d4.bin       0x313C          0x000000        0x040000(256K)     
+       u-boot-sama5d4.bin         0x4A37C         0x040000        0x0C0000(512K)
+       u-boot-env(backup)         0x20000         0x0C0000        0x040000(256K)
+
+      linuxrom-sama5d4.bin        0x4A51E8        0x100000        0x700000(7M)
+       rootfs-sama5d4.ubi         0x4240000       0x800000        0xc800000(200M)
+         Apps Partition           48M             0xD000000       0x3000000(48M)
diff --git a/tools/sama5d4_xplained-Loader.zip b/tools/sama5d4_xplained-Loader.zip
deleted file mode 100644
index 71e870d..0000000
--- a/tools/sama5d4_xplained-Loader.zip
+++ /dev/null
Binary files differ
diff --git a/tools/sama5d4_xplained_loader/ReadMe.txt b/tools/sama5d4_xplained_loader/ReadMe.txt
new file mode 100644
index 0000000..0972044
--- /dev/null
+++ b/tools/sama5d4_xplained_loader/ReadMe.txt
@@ -0,0 +1,16 @@
+This project used to autoload bootstrap, u-boot, linux, rootfs image files in folder images into Nandflash by xxx.bat, and it's configured in xxx.qml.
+
+Load Files in images folder:
+   
+MT29F4G08: PageSize=2K(0x800) BlockSize=2(Planes)*64Pages=256K(0x40000)   Total: 256M(0x1000,0000)
++-------------------------------------------------------------------------------------------------------
+         ImageName           ImageSize       LoadAddress        Size
+  bootstrap-sama5d4.bin       0x313C          0x000000        0x040000(256K)     
+   u-boot-sama5d4.bin         0x4A37C         0x040000        0x0C0000(512K)
+   u-boot-env(backup)         0x20000         0x0C0000        0x040000(256K)
+
+  linuxrom-sama5d4.bin        0x4A51E8        0x100000        0x700000(7M)
+   rootfs-sama5d4.ubi         0x4240000       0x800000        0xc800000(200M)
+     Apps Partition           48M             0xD000000       0x3000000(48M)
+
+	
\ No newline at end of file
diff --git a/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.bat b/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.bat
new file mode 100644
index 0000000..982912b
--- /dev/null
+++ b/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.bat
@@ -0,0 +1,2 @@
+sam-ba -x demo_linux_nandflash_system.qml > logfile.log 2>&1
+notepad logfile.log
diff --git a/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qml b/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qml
new file mode 100644
index 0000000..7133bf0
--- /dev/null
+++ b/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qml
@@ -0,0 +1,76 @@
+import SAMBA 3.2
+import SAMBA.Connection.Serial 3.2
+import SAMBA.Device.SAMA5D4 3.2
+
+SerialConnection {
+
+	device: SAMA5D4Xplained {
+		config {
+			nandflash {
+				header: 0xc1e04e07
+			}
+		}
+	}
+
+	function initNand() {
+		/* Placeholder: Nothing to do */
+	}
+
+	function getEraseSize(size) {
+		/* get smallest erase block size supported by applet */
+		var eraseSize
+		for (var i = 0; i <= 32; i++) {
+			eraseSize = 1 << i
+			if ((applet.eraseSupport & eraseSize) !== 0)
+				break;
+		}
+		eraseSize *= applet.pageSize
+
+		/* round up file size to erase block size */
+		return (size + eraseSize - 1) & ~(eraseSize - 1)
+	}
+
+	function eraseWrite(offset, filename, bootfile) {
+		/* get file size */
+		var file = File.open(filename, false)
+		var size = file.size()
+		file.close()
+
+		applet.erase(offset, getEraseSize(size))
+		applet.write(offset, filename, bootfile)
+	}
+
+	onConnectionOpened: {
+		var bootstrapFileName = "images/bootstrap-sama5d4.bin"
+		var ubootFileName = "images/u-boot-sama5d4.bin"
+		var linuxFileNmae = "images/linuxrom-sama5d4.itb"
+		var rootfsFileNmae = "images/rootfs-sama5d4.ubi"
+		
+		print("-I- === Initilize low level (system clocks) ===")
+		initializeApplet("lowlevel")
+
+		print("-I- === Initialize extram ===")
+		initializeApplet("extram")
+
+		print("-I- === Initialize nandflash access ===")
+		initializeApplet("nandflash")
+		
+		print("-I- === Erase nandflash access ===")
+		//applet.erase(0, 0x100000)
+		applet.erase()
+	
+		print("-I- === Load AT91Bootstrap  ===")
+		eraseWrite(0x000000, bootstrapFileName, true)
+
+		print("-I- === Load u-boot   ===")
+		eraseWrite(0x040000, ubootFileName)
+
+		print("-I- === Load linux kernel image  ===")
+		applet.write(0x100000, linuxFileNmae)
+
+		print("-I- === Load UBI rootfs image  ===")
+		applet.write(0x800000, rootfsFileNmae)
+
+		print("-I- === Done. ===")
+	}
+}
diff --git a/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qmlc b/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qmlc
new file mode 100644
index 0000000..a33fabc
--- /dev/null
+++ b/tools/sama5d4_xplained_loader/demo_linux_nandflash_system.qmlc
Binary files differ
diff --git a/tools/setup_env.sh b/tools/setup_env.sh
index 8e1df3f..00590a5 100755
--- a/tools/setup_env.sh
+++ b/tools/setup_env.sh
@@ -55,7 +55,7 @@
         help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf \
         automake groff curl lzop asciidoc lib32z1 lib32ncurses5"
 
-    devtools="u-boot-tools mtd-utils "
+    devtools="u-boot-tools mtd-utils device-tree-compiler"
 
     msg_banner "start apt-get install system devlopment tools(commands)" 
 

--
Gitblit v1.9.1