[OE-core] [PATCH 2/2] u-boot: added generating the env utils (fixes bug 1800)

Saul Wold sgw at linux.intel.com
Tue Dec 27 22:00:14 UTC 2011


On 12/27/2011 12:35 PM, Frans Meulenbroeks wrote:
> This adds building the u-boot tools for target.
> (fw_printenv, fw_setenv).
> They are put into a separate package
> With these files it becomes possible to modify
> the u-boot environment when linux is booted
>
> The #ifdef's in fw_env.h were needed to avoid compilation issues
> The constants have been changed to more meaningful defaults
> (as 128k flash pages are much more common than 4k pages)
> but can be overridden using a configuration file.
>
> This resolves bug 1800
>
Thanks for the fix, in the future please mark this as [YOCTO #1800]

Reviewing and someone will test also.

Thanks	
	Sau!
> Signed-off-by: Frans Meulenbroeks<fransmeulenbroeks at gmail.com>
>
> ---
> Note: development and testing was done under openembedded classic.
> I've tested it there quite heavily (for mpc8313 if that matters).
> I was requested to provide a patch for oe-core too (to resolve bug 1800)
> so here it is, although at the moment I am unable to test the patch for oe-core.
> I suggest that this is carefully reviewed and tested before being merged.
>
> Frans.
> ---
>   meta/recipes-bsp/u-boot/files/tools_fwenv.patch |   48 +++++++++++++++++++++++
>   meta/recipes-bsp/u-boot/u-boot.inc              |   21 ++++++++-
>   meta/recipes-bsp/u-boot/u-boot_2011.03.bb       |    3 +-
>   meta/recipes-bsp/u-boot/u-boot_2011.06.bb       |    3 +-
>   4 files changed, 70 insertions(+), 5 deletions(-)
>   create mode 100644 meta/recipes-bsp/u-boot/files/tools_fwenv.patch
>
> diff --git a/meta/recipes-bsp/u-boot/files/tools_fwenv.patch b/meta/recipes-bsp/u-boot/files/tools_fwenv.patch
> new file mode 100644
> index 0000000..8e87800
> --- /dev/null
> +++ b/meta/recipes-bsp/u-boot/files/tools_fwenv.patch
> @@ -0,0 +1,48 @@
> +Index: u-boot-2011.03/tools/env/fw_env.h
> +===================================================================
> +--- u-boot-2011.03.orig/tools/env/fw_env.h	2011-03-31 23:45:36.000000000 +0200
> ++++ u-boot-2011.03/tools/env/fw_env.h	2011-12-02 13:55:24.667278362 +0100
> +@@ -27,25 +27,35 @@
> +  * See included "fw_env.config" sample file (TRAB board)
> +  * for notes on configuration.
> +  */
> +-#define CONFIG_FILE     "/etc/fw_env.config"
> ++//#define CONFIG_FILE     "/etc/fw_env.config"
> ++
> ++#include "config.h"
> +
> + #define HAVE_REDUND /* For systems with 2 env sectors */
> +-#define DEVICE1_NAME      "/dev/mtd1"
> +-#define DEVICE2_NAME      "/dev/mtd2"
> ++#define DEVICE1_NAME      "/dev/mtd0"
> ++#define DEVICE2_NAME      "/dev/mtd0"
> + #define DEVICE1_OFFSET    0x0000
> +-#define ENV1_SIZE         0x4000
> +-#define DEVICE1_ESIZE     0x4000
> +-#define DEVICE2_OFFSET    0x0000
> +-#define ENV2_SIZE         0x4000
> +-#define DEVICE2_ESIZE     0x4000
> ++#define ENV1_SIZE         0x2000
> ++#define DEVICE1_ESIZE     0x20000
> ++#define DEVICE1_ENVSECTORS     1
> ++#define DEVICE2_OFFSET    0x20000
> ++#define ENV2_SIZE         0x2000
> ++#define DEVICE2_ESIZE     0x20000
> ++#define DEVICE2_ENVSECTORS     1
> +
> ++#ifndef CONFIG_BAUDRATE
> + #define CONFIG_BAUDRATE		115200
> ++#endif
> ++#ifndef CONFIG_BOOTDELAY
> + #define CONFIG_BOOTDELAY	5	/* autoboot after 5 seconds	*/
> ++#endif
> ++#ifndef CONFIG_BOOTCOMMAND
> + #define CONFIG_BOOTCOMMAND							\
> + 	"bootp; "								\
> + 	"setenv bootargs root=/dev/nfs nfsroot=${serverip}:${rootpath} "	\
> + 	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "	\
> + 	"bootm"
> ++#endif
> +
> + extern int   fw_printenv(int argc, char *argv[]);
> + extern char *fw_getenv  (char *name);
> diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
> index a3f50bc..bbfc6d6 100644
> --- a/meta/recipes-bsp/u-boot/u-boot.inc
> +++ b/meta/recipes-bsp/u-boot/u-boot.inc
> @@ -32,16 +32,31 @@ do_compile () {
>   	unset CPPFLAGS
>   	oe_runmake ${UBOOT_MACHINE}
>   	oe_runmake ${UBOOT_MAKE_TARGET}
> +	oe_runmake tools env HOSTCC="${CC}"
>   }
>
>   do_install () {
> -    install -d ${D}/boot
> -    install ${S}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
> -    ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
> +	install -d ${D}/boot
> +	install ${S}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
> +	ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
> +
> +	if [ -e ${WORKDIR}/fw_env.config ] ; then
> +		install -d ${D}${base_sbindir}
> +		install -d ${D}${sysconfdir}
> +		install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
> +		install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
> +		install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv
> +	fi
> +
>   }
>
>   FILES_${PN} = "/boot"
>
> +PACKAGES += "${PN}-fw-utils"
> +FILES_${PN}-fw-utils = "${sysconfdir} ${base_sbindir}"
> +# u-boot doesn't use LDFLAGS for fw files, needs to get fixed, but until then:
> +INSANE_SKIP_${PN}-fw-utils = True
> +
>   do_deploy () {
>   	install ${S}/u-boot.bin ${DEPLOYDIR}/${UBOOT_IMAGE}
>
> diff --git a/meta/recipes-bsp/u-boot/u-boot_2011.03.bb b/meta/recipes-bsp/u-boot/u-boot_2011.03.bb
> index 1ebdbea..fe10f58 100644
> --- a/meta/recipes-bsp/u-boot/u-boot_2011.03.bb
> +++ b/meta/recipes-bsp/u-boot/u-boot_2011.03.bb
> @@ -19,7 +19,8 @@ SRCREV = "19b54a701811220221fc4d5089a2bb18892018ca"
>   PV = "v2011.03+git${SRCPV}"
>   PR = "r5"
>
> -SRC_URI = "git://git.denx.de/u-boot.git;branch=master;protocol=git"
> +SRC_URI = "git://git.denx.de/u-boot.git;branch=master;protocol=git \
> +           file://tools_fwenv.patch"
>
>   S = "${WORKDIR}/git"
>
> diff --git a/meta/recipes-bsp/u-boot/u-boot_2011.06.bb b/meta/recipes-bsp/u-boot/u-boot_2011.06.bb
> index 8ebdbff..bfe5db7 100644
> --- a/meta/recipes-bsp/u-boot/u-boot_2011.06.bb
> +++ b/meta/recipes-bsp/u-boot/u-boot_2011.06.bb
> @@ -19,7 +19,8 @@ SRCREV = "b1af6f532e0d348b153d5c148369229d24af361a"
>   PV = "v2011.06+git${SRCPV}"
>   PR = "r0"
>
> -SRC_URI = "git://git.denx.de/u-boot.git;branch=master;protocol=git"
> +SRC_URI = "git://git.denx.de/u-boot.git;branch=master;protocol=git \
> +           file://tools_fwenv.patch"
>
>   S = "${WORKDIR}/git"
>




More information about the Openembedded-core mailing list