凌云实验室推出的ARM Linux物联网网关开发板IGKBoard(IoT Gateway Kit Board)项目源码
guowenxue
2021-12-16 0cea4f0a61cdcc6a16f54335894cc679b267b1ca
bsp/bootloader/patch/uboot-imx-imx6ull.patch
@@ -1,12 +1,401 @@
diff -Nuar uboot-imx/arch/arm/dts/imx6ul-14x14-evk.dtsi uboot-imx-imx6ull/arch/arm/dts/imx6ul-14x14-evk.dtsi
--- uboot-imx/arch/arm/dts/imx6ul-14x14-evk.dtsi   2021-09-06 16:48:23.000000000 +0800
+++ uboot-imx-imx6ull/arch/arm/dts/imx6ul-14x14-evk.dtsi   2021-12-16 12:53:06.050125641 +0800
@@ -21,7 +21,6 @@
       regulator-name = "VSD_3V3";
       regulator-min-microvolt = <3300000>;
       regulator-max-microvolt = <3300000>;
-      gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
       off-on-delay-us = <20000>;
       enable-active-high;
    };
@@ -83,6 +82,9 @@
    pinctrl-0 = <&pinctrl_enet1>;
    phy-mode = "rmii";
    phy-handle = <&ethphy0>;
+    phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;
+    phy-reset-duration = <50>;
+    phy-reset-post-delay = <15>;
    status = "okay";
 };
@@ -91,14 +93,17 @@
    pinctrl-0 = <&pinctrl_enet2>;
    phy-mode = "rmii";
    phy-handle = <&ethphy1>;
+    phy-reset-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>;
+    phy-reset-duration = <50>;
+    phy-reset-post-delay = <15>;
    status = "okay";
    mdio {
       #address-cells = <1>;
       #size-cells = <0>;
-      ethphy0: ethernet-phy@2 {
-         reg = <2>;
+      ethphy0: ethernet-phy@0 {
+         reg = <0>;
          micrel,led-mode = <1>;
          clocks = <&clks IMX6UL_CLK_ENET_REF>;
          clock-names = "rmii-ref";
@@ -151,21 +156,21 @@
    status = "okay";
    display0: display@0 {
-      bits-per-pixel = <24>;
-      bus-width = <24>;
+      bits-per-pixel = <16>;
+      bus-width = <16>;
       display-timings {
          native-mode = <&timing0>;
          timing0: timing0 {
-         clock-frequency = <9200000>;
-         hactive = <480>;
-         vactive = <272>;
-         hfront-porch = <8>;
-         hback-porch = <4>;
-         hsync-len = <41>;
-         vback-porch = <2>;
-         vfront-porch = <4>;
-         vsync-len = <10>;
+         clock-frequency = <30000000>;
+         hactive = <800>;
+         vactive = <480>;
+         hfront-porch = <40>;
+         hback-porch = <88>;
+         hsync-len = <48>;
+         vback-porch = <32>;
+         vfront-porch = <13>;
+         vsync-len = <3>;
          hsync-active = <0>;
          vsync-active = <0>;
@@ -312,6 +317,7 @@
          MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00   0x1b0b0
          MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01   0x1b0b0
          MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1   0x4001b031
+            MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0 /* ENET1 RESET */
       >;
    };
@@ -327,6 +333,7 @@
          MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00   0x1b0b0
          MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01   0x1b0b0
          MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2   0x4001b031
+            MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04  0x10B0 /* ENET2 RESET */
       >;
    };
@@ -423,7 +430,6 @@
          MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA   0x11088
          MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA   0x11088
          MX6UL_PAD_JTAG_TMS__SAI2_MCLK      0x17088
-         MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04   0x17059
       >;
    };
@@ -448,7 +454,6 @@
       fsl,pins = <
          MX6UL_PAD_BOOT_MODE0__GPIO5_IO10   0x70a1
          MX6UL_PAD_BOOT_MODE1__GPIO5_IO11   0x70a1
-         MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07   0x70a1
          MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08   0x80000000
       >;
    };
@@ -492,9 +497,7 @@
          MX6UL_PAD_SD1_DATA1__USDHC1_DATA1    0x17059
          MX6UL_PAD_SD1_DATA2__USDHC1_DATA2    0x17059
          MX6UL_PAD_SD1_DATA3__USDHC1_DATA3    0x17059
-         MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059 /* SD1 CD */
-         MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT    0x17059 /* SD1 VSELECT */
-         MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x17059 /* SD1 RESET */
+         MX6UL_PAD_UART1_RTS_B__GPIO1_IO19   0x17059 /* SD1 CD */
       >;
    };
diff -Nuar uboot-imx/configs/imx6ull_defconfig uboot-imx-imx6ull/configs/imx6ull_defconfig
--- uboot-imx/configs/imx6ull_defconfig   1970-01-01 08:00:00.000000000 +0800
+++ uboot-imx-imx6ull/configs/imx6ull_defconfig   2021-12-16 13:00:10.426612499 +0800
@@ -0,0 +1,96 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SYS_MEMTEST_START=0x80000000
+CONFIG_SYS_MEMTEST_END=0x88000000
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xE0000
+CONFIG_MX6ULL=y
+CONFIG_TARGET_MX6ULL_14X14_EVK=y
+CONFIG_DM_GPIO=y
+# CONFIG_CMD_QSPIHDR is not set
+CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg"
+CONFIG_BOOTDELAY=3
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="[u-boot@iMX6ULL]# "
+CONFIG_CMD_BOOTZ=y
+# CONFIG_BOOTM_NETBSD is not set
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
+# CONFIG_CMD_BOOTEFI is not set
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_BMP=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_CONTROL=y
+CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_SYS_MMC_ENV_DEV=1
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x83800000
+CONFIG_FASTBOOT_BUF_SIZE=0x40000000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_DM_74X164=y
+CONFIG_DM_I2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_MTD=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SF_DEFAULT_MODE=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_PHYLIB=y
+CONFIG_PHY_MICREL=y
+CONFIG_PHY_MICREL_KSZ8XXX=y
+CONFIG_DM_ETH=y
+CONFIG_DM_ETH_PHY=y
+CONFIG_FEC_MXC=y
+CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_MXC_UART=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_FSL_QSPI=y
+CONFIG_SOFT_SPI=y
+CONFIG_IMX_THERMAL=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+CONFIG_CI_UDC=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_SPLASH_SCREEN=y
+CONFIG_SPLASH_SCREEN_ALIGN=y
diff -Nuar uboot-imx/drivers/net/phy/phy.c uboot-imx-imx6ull/drivers/net/phy/phy.c
--- uboot-imx/drivers/net/phy/phy.c   2021-09-06 16:48:23.000000000 +0800
+++ uboot-imx-imx6ull/drivers/net/phy/phy.c   2021-12-16 12:53:06.054125616 +0800
@@ -182,6 +182,9 @@
 {
    int result;
+    /*  add Soft Reset the PHY by guowenxue, 2021.11.14 */
+    phy_reset(phydev);
+
    if (phydev->autoneg != AUTONEG_ENABLE)
       return genphy_setup_forced(phydev);
diff -Nuar uboot-imx/include/configs/mx6ullevk.h uboot-imx-imx6ull/include/configs/mx6ullevk.h
--- uboot-imx/include/configs/mx6ullevk.h   2021-09-06 16:48:23.000000000 +0800
+++ uboot-imx-imx6ull/include/configs/mx6ullevk.h   2021-12-16 12:53:06.054125616 +0800
@@ -100,124 +100,39 @@
 #else
 #define CONFIG_EXTRA_ENV_SETTINGS \
-   CONFIG_MFG_ENV_SETTINGS \
-   TEE_ENV \
+    "emmc_dev=1\0"\
+    "emmc_ack=1\0"\
    "script=boot.scr\0" \
    "image=zImage\0" \
    "console=ttymxc0\0" \
-   "fdt_high=0xffffffff\0" \
-   "initrd_high=0xffffffff\0" \
-   "fdt_file=undefined\0" \
+   "fdt_file=imx6ull-emmc.dtb\0" \
    "fdt_addr=0x83000000\0" \
-   "tee_addr=0x84000000\0" \
-   "tee_file=undefined\0" \
-   "boot_fdt=try\0" \
-   "ip_dyn=yes\0" \
    "splashimage=0x8c000000\0" \
+    "ipaddr=192.168.2.22\0" \
+    "serverip=192.168.2.2\0" \
    "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
    "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
    "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
-   "mmcautodetect=yes\0" \
-   "mmcargs=setenv bootargs console=${console},${baudrate} " \
-      BOOTARGS_CMA_SIZE \
-      "root=${mmcroot}\0" \
-   "loadbootscript=" \
-      "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
-   "bootscript=echo Running bootscript from mmc ...; " \
-      "source\0" \
+    "mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}\0" \
+    "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+    "bootscript=echo Running bootscript from mmc ...; source\0" \
    "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
    "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
-   "loadtee=fatload mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file}\0" \
+    "bdtb=tftp $fdt_addr $fdt_file && fatwrite mmc 1:1 $fdt_addr $fdt_file $filesize\0" \
+    "bker=tftp $loadaddr $image&& fatwrite mmc 1:1 $loadaddr $image $filesize\0" \
+    "bsys=run bdtb && run bker\0" \
    "mmcboot=echo Booting from mmc ...; " \
+        "mmc dev ${mmcdev}; " \
+        "run loadimage; run loadfdt; " \
       "run mmcargs; " \
-      "if test ${tee} = yes; then " \
-         "run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; " \
-      "else " \
-         "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-            "if run loadfdt; then " \
-               "bootz ${loadaddr} - ${fdt_addr}; " \
-            "else " \
-               "if test ${boot_fdt} = try; then " \
-                  "bootz; " \
-               "else " \
-                  "echo WARN: Cannot load the DT; " \
-               "fi; " \
-            "fi; " \
-         "else " \
-            "bootz; " \
-         "fi; " \
-      "fi;\0" \
-   "netargs=setenv bootargs console=${console},${baudrate} " \
-      BOOTARGS_CMA_SIZE \
-      "root=/dev/nfs " \
-   "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
-      "netboot=echo Booting from net ...; " \
-      "${usb_net_cmd}; " \
-      "run netargs; " \
-      "if test ${ip_dyn} = yes; then " \
-         "setenv get_cmd dhcp; " \
-      "else " \
-         "setenv get_cmd tftp; " \
-      "fi; " \
-      "${get_cmd} ${image}; " \
-      "if test ${tee} = yes; then " \
-         "${get_cmd} ${tee_addr} ${tee_file}; " \
-         "${get_cmd} ${fdt_addr} ${fdt_file}; " \
-         "bootm ${tee_addr} - ${fdt_addr}; " \
-      "else " \
-         "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-            "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-               "bootz ${loadaddr} - ${fdt_addr}; " \
-            "else " \
-               "if test ${boot_fdt} = try; then " \
-                  "bootz; " \
-               "else " \
-                  "echo WARN: Cannot load the DT; " \
-               "fi; " \
-            "fi; " \
-         "else " \
-            "bootz; " \
-         "fi; " \
-      "fi;\0" \
-      "findfdt="\
-         "if test $fdt_file = undefined; then " \
-            "if test $board_name = ULZ-EVK && test $board_rev = 14X14; then " \
-               "setenv fdt_file imx6ulz-14x14-evk.dtb; fi; " \
-            "if test $board_name = EVK && test $board_rev = 9X9; then " \
-               "setenv fdt_file imx6ull-9x9-evk.dtb; fi; " \
-            "if test $board_name = EVK && test $board_rev = 14X14; then " \
-               "setenv fdt_file imx6ull-14x14-evk.dtb; fi; " \
-            "if test $fdt_file = undefined; then " \
-               "echo WARNING: Could not determine dtb to use; " \
-            "fi; " \
-         "fi;\0" \
-      "findtee="\
-         "if test $tee_file = undefined; then " \
-            "if test $board_name = ULZ-EVK && test $board_rev = 14X14; then " \
-               "setenv tee_file uTee-6ulzevk; fi; " \
-            "if test $board_name = EVK && test $board_rev = 9X9; then " \
-               "setenv tee_file uTee-6ullevk; fi; " \
-            "if test $board_name = EVK && test $board_rev = 14X14; then " \
-               "setenv tee_file uTee-6ullevk; fi; " \
-            "if test $tee_file = undefined; then " \
-               "echo WARNING: Could not determine tee to use; " \
-            "fi; " \
-         "fi;\0" \
-
-#define CONFIG_BOOTCOMMAND \
-      "run findfdt;" \
-      "run findtee;" \
-      "mmc dev ${mmcdev};" \
-      "mmc dev ${mmcdev}; if mmc rescan; then " \
-         "if run loadbootscript; then " \
-            "run bootscript; " \
-         "else " \
-            "if run loadimage; then " \
-               "run mmcboot; " \
-            "else run netboot; " \
-            "fi; " \
-         "fi; " \
-      "else run netboot; fi"
+        "run loadbootscript; run bootscript; " \
+        "bootz ${loadaddr} - ${fdt_addr}\0" \
+    "netboot=echo Booting from net ...; " \
+        "tftp $loadaddr $image; tftp $fdt_addr ${fdt_file};" \
+        "run mmcargs; " \
+        "bootz ${loadaddr} - ${fdt_addr}\0" \
+    "bootcmd=run mmcboot\0" \
+    "bbl=tftp ${loadaddr} u-boot-imx6ull-emmc.imx && mmc dev ${mmcdev} 1 && mmc write ${loadaddr} 2 0x500\0"
 #endif
 /* Miscellaneous configurable options */
@@ -238,7 +153,9 @@
    (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 /* environment organization */
+#ifndef CONFIG_SYS_MMC_ENV_DEV
 #define CONFIG_SYS_MMC_ENV_DEV      1   /* USDHC2 */
+#endif
 #define CONFIG_MMCROOT         "/dev/mmcblk1p2"  /* USDHC2 */
 #define CONFIG_IOMUX_LPSR
diff -Nuar uboot-imx/Makefile uboot-imx-imx6ull/Makefile
--- uboot-imx/Makefile   2021-09-06 16:48:23.000000000 +0800
+++ uboot-imx-imx6ull/Makefile   2021-11-09 21:04:40.476902774 +0800
+++ uboot-imx-imx6ull/Makefile   2021-12-16 12:53:06.058125591 +0800
@@ -263,6 +263,9 @@
 CROSS_COMPILE ?=
 endif
 
+ARCH=arm
+CROSS_COMPILE=arm-linux-gnueabihf-
+CROSS_COMPILE=/opt/buildroot/cortexA7/bin/arm-linux-
+
 KCONFIG_CONFIG   ?= .config
 export KCONFIG_CONFIG