
Hi Fabien,
On 29/06/2016 09:05, Fabien Lahoudere wrote:
In order to simplify the use of various images on various media for nitrogen6x, the configuration of the board must follow the generic distro configuration (doc/README.distro).
In order to boot your old rootfs, move your kernel and your device tree in /boot/. Then create /boot/extlinux/extlinux.conf with for example:
default Buildroot
label Buildroot kernel /boot/zImage append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw fdtdir /boot
Signed-off-by: Fabien Lahoudere fabien.lahoudere@collabora.co.uk
Changes for V2:
- reintegration of deleted env
- changes are applied only if CONFIG_DISTRO_DEFAULTS=y
Changes for V3:
- remove undefined device tree
configs/mx6qsabrelite_defconfig | 1 + configs/nitrogen6dl2g_defconfig | 1 + configs/nitrogen6dl_defconfig | 1 + configs/nitrogen6q2g_defconfig | 1 + configs/nitrogen6q_defconfig | 1 + configs/nitrogen6s1g_defconfig | 1 + configs/nitrogen6s_defconfig | 1 + doc/README.imx6 | 47 +++++++++++++++++++++++++++++++++++++++++ include/configs/mx6_common.h | 24 +++++++++++++++++++++ include/configs/nitrogen6x.h | 36 +++++++++++++++++++++++++------ 10 files changed, 108 insertions(+), 6 deletions(-)
diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig index fa6139a..27b64c4 100644 --- a/configs/mx6qsabrelite_defconfig +++ b/configs/mx6qsabrelite_defconfig @@ -36,3 +36,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig index 02b2462..b1344c6 100644 --- a/configs/nitrogen6dl2g_defconfig +++ b/configs/nitrogen6dl2g_defconfig @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig index 52553f6..f794c08 100644 --- a/configs/nitrogen6dl_defconfig +++ b/configs/nitrogen6dl_defconfig @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig index 11188b7..56cebe0 100644 --- a/configs/nitrogen6q2g_defconfig +++ b/configs/nitrogen6q2g_defconfig @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig index 05bf140..c150b97 100644 --- a/configs/nitrogen6q_defconfig +++ b/configs/nitrogen6q_defconfig @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig index bb081a2..dfd096d 100644 --- a/configs/nitrogen6s1g_defconfig +++ b/configs/nitrogen6s1g_defconfig @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig index 08e91c9..5e2e693 100644 --- a/configs/nitrogen6s_defconfig +++ b/configs/nitrogen6s_defconfig @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary" CONFIG_G_DNL_VENDOR_NUM=0x0525 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5 CONFIG_OF_LIBFDT=y +CONFIG_DISTRO_DEFAULTS=y \ No newline at end of file diff --git a/doc/README.imx6 b/doc/README.imx6 index 1823fb2..36452f6 100644 --- a/doc/README.imx6 +++ b/doc/README.imx6 @@ -138,3 +138,50 @@ c The last "c" command tells kermit (from ckermit package in most distros) to switch from command line mode to communication mode, and when the script is finished, the U-Boot prompt is shown in the same shell.
+3. Using generic distro configuration +-------------------------------------
+In order to simplify the use of various images on various media +for imx6 boards, the configuration of the board must follow the +generic distro configuration (doc/README.distro).
+3.1. Setup uboot configuration for your board +---------------------------------------------
+First, you have to set 'CONFIG_DISTRO_DEFAULTS=y' in your board defconfig
+Some mandatory variable are set in mx6_common.h but can be overwritten like:
- fdtfile with CONFIG_FDTFILE
- fdt_addr_r and fdt_addr with CONFIG_FDTADDR
- ramdisk_addr_r, ramdiskaddr CONFIG_RAMDISKADDR
+You also have to define BOOT_TARGET_DEVICES with available media. +For example added in include/configs/nitrogen6x.h: +#define BOOT_TARGET_DEVICES(func) \
- func(MMC, mmc, 0) \
- func(MMC, mmc, 1) \
- func(SATA, sata, 0) \
- func(USB, usb, 0) \
- func(PXE, pxe, na) \
- func(DHCP, dhcp, na)
+All this configuration should be done before '#include "mx6_common.h"'
+3.2. Setup your distribution +----------------------------
+Set the partition containing /boot/ bootable. +Copy your kernel and device tree in /boot. +Create /boot/extlinux/extlinux.conf on your rootfs and fill it according to specification +at http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/
+For example:
+default Buildroot
+label Buildroot
- kernel /boot/zImage
- append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
- fdtdir /boot
diff --git a/include/configs/mx6_common.h b/include/configs/mx6_common.h index fb49322..4a665d2 100644 --- a/include/configs/mx6_common.h +++ b/include/configs/mx6_common.h @@ -58,6 +58,12 @@ #endif #endif #define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR +#ifndef CONFIG_FDTADDR +#define CONFIG_FDTADDR 0x18000000
I am afraid that this can be a problem. I am not sure that all boards can share the same address.
On most boards, mx6_common is included at the beginning of the configuration file. This means that CONFIG_FDTADDR is surely not set, and it will be set to 0x18000000.
For some boards this could be flawless: for example, I see the "aristainetos" board, it uses as address 0x14000000. But it is set later. It remains just confusing that a CONFIG_FDTADDR is set to a different address as used.
But for other boards I am quite unsure - it could generate some problems.
+#endif +#ifndef CONFIG_RAMDISKADDR +#define CONFIG_RAMDISKADDR 0x13000000 +#endif
/* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE @@ -93,4 +99,22 @@ #define CONFIG_CMD_FUSE #define CONFIG_MXC_OCOTP
+#ifdef CONFIG_DISTRO_DEFAULTS +#include <config_distro_defaults.h>
+#include <config_distro_bootcmd.h>
+#define CONFIG_EXTRA_DEFAULT_ENV_SETTINGS \
- "fdtfile=" CONFIG_FDTFILE "\0" \
- "fdt_addr_r=" __stringify(CONFIG_FDTADDR) "\0" \
- "fdt_addr=" __stringify(CONFIG_FDTADDR) "\0" \
- "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
- "pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
- "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
- "ramdisk_addr_r=" __stringify(CONFIG_RAMDISKADDR) "\0" \
- "ramdiskaddr=" __stringify(CONFIG_RAMDISKADDR) "\0" \
- BOOTENV
+#endif
#endif diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h index b651eb3..c1a3a47 100644 --- a/include/configs/nitrogen6x.h +++ b/include/configs/nitrogen6x.h @@ -10,8 +10,6 @@ #ifndef __CONFIG_H #define __CONFIG_H
-#include "mx6_common.h"
#define CONFIG_MACH_TYPE 3769
/* Size of malloc() pool */ @@ -38,9 +36,9 @@ /* I2C Configs */ #define CONFIG_SYS_I2C #define CONFIG_SYS_I2C_MXC -#define CONFIG_SYS_I2C_MXC_I2C1 /* enable I2C bus 1 */ -#define CONFIG_SYS_I2C_MXC_I2C2 /* enable I2C bus 2 */ -#define CONFIG_SYS_I2C_MXC_I2C3 /* enable I2C bus 3 */ +#define CONFIG_SYS_I2C_MXC_I2C1 /* enable I2C bus 1 */ +#define CONFIG_SYS_I2C_MXC_I2C2 /* enable I2C bus 2 */ +#define CONFIG_SYS_I2C_MXC_I2C3 /* enable I2C bus 3 */ #define CONFIG_SYS_I2C_SPEED 100000 #define CONFIG_I2C_EDID
@@ -113,6 +111,8 @@
#define CONFIG_PREBOOT ""
+#ifndef CONFIG_DISTRO_DEFAULTS
#ifdef CONFIG_CMD_SATA #define CONFIG_DRIVE_SATA "sata " #else @@ -266,6 +266,30 @@ "done\0" \
#endif
+#else
+#if defined(CONFIG_SABRELITE) +#define CONFIG_FDTFILE "imx6q-sabrelite.dtb" +#else +#define CONFIG_FDTFILE "imx6q-nitrogen6x.dtb" +#endif
+#define BOOT_TARGET_DEVICES(func) \
- func(MMC, mmc, 0) \
- func(MMC, mmc, 1) \
- func(SATA, sata, 0) \
- func(USB, usb, 0) \
- func(PXE, pxe, na) \
- func(DHCP, dhcp, na)
+#define CONFIG_EXTRA_ENV_SETTINGS \
- CONFIG_EXTRA_DEFAULT_ENV_SETTINGS
+#endif
+#include "mx6_common.h"
/* Miscellaneous configurable options */ #define CONFIG_SYS_MEMTEST_START 0x10000000 #define CONFIG_SYS_MEMTEST_END 0x10010000 @@ -327,4 +351,4 @@ #define CONFIG_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR #define CONFIG_FASTBOOT_BUF_SIZE 0x07000000
-#endif /* __CONFIG_H */ +#endif /* __CONFIG_H */
Best regards, Stefano Babic