[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