Adds the U-Boot loader for Banana pi, Cubieboard and Cubieboard2.
This version is patched so that: * ELF and API features are enabled. * The default environment is trimmed to just what's needed to boot. * The saveenv command writes to the file u-boot.env on the FAT partition. * The DTB file name is chosen based on the board model and passed to ubldr using the fdtfile env variable. ubldr loads the DTB from /boot/dtb/ on the FreeBSD partition. * By default, it loads ELF ubldr from file ubldr on the FAT partition to address 0x42000000, and launches it. For information about running FreeBSD on Allwinner SoCs, see https://wiki.freebsd.org/FreeBSD/arm/Allwinner Differential Revision: https://reviews.freebsd.org/D2874 Reviewed by: garga Approved by: garga
This commit is contained in:
parent
c0579a1a86
commit
ae95160278
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=391476
14 changed files with 449 additions and 0 deletions
|
@ -994,7 +994,10 @@
|
|||
SUBDIR += ttyload
|
||||
SUBDIR += tw_cli
|
||||
SUBDIR += tzdialog
|
||||
SUBDIR += u-boot-bananapi
|
||||
SUBDIR += u-boot-beaglebone
|
||||
SUBDIR += u-boot-cubieboard
|
||||
SUBDIR += u-boot-cubieboard2
|
||||
SUBDIR += u-boot-cubox-hummingboard
|
||||
SUBDIR += u-boot-duovero
|
||||
SUBDIR += u-boot-pandaboard
|
||||
|
|
15
sysutils/u-boot-bananapi/Makefile
Normal file
15
sysutils/u-boot-bananapi/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PKGNAMESUFFIX= -bananapi
|
||||
|
||||
COMMENT= Cross-build U-Boot loader for Banana Pi
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
# Local overrides
|
||||
MASTERDIR= ${.CURDIR}/../u-boot-cubieboard
|
||||
DESCR= ${.CURDIR}/pkg-descr
|
||||
MODEL= bananapi
|
||||
CONF_TARGET= Bananapi_defconfig
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
19
sysutils/u-boot-bananapi/pkg-descr
Normal file
19
sysutils/u-boot-bananapi/pkg-descr
Normal file
|
@ -0,0 +1,19 @@
|
|||
U-Boot loader for Banana Pi.
|
||||
|
||||
To install this bootloader, follow the instructions in
|
||||
http://linux-sunxi.org/Bootable_SD_card#Bootloader
|
||||
|
||||
This version is patched so that:
|
||||
* ELF and API features are enabled.
|
||||
* The default environment is trimmed to just what's needed to boot.
|
||||
* The saveenv command writes to the file u-boot.env on the FAT partition.
|
||||
* The DTB file name is chosen based on the board model and passed to ubldr
|
||||
using the fdtfile env variable. ubldr loads the DTB from /boot/dtb/ on
|
||||
the FreeBSD partition.
|
||||
* By default, it loads ELF ubldr from file ubldr on the FAT partition
|
||||
to address 0x42000000, and launches it.
|
||||
|
||||
For information about running FreeBSD on Banana Pi, see
|
||||
https://wiki.freebsd.org/FreeBSD/arm/Allwinner
|
||||
|
||||
For general information about U-Boot see WWW: http://www.denx.de/wiki/U-Boot
|
48
sysutils/u-boot-cubieboard/Makefile
Normal file
48
sysutils/u-boot-cubieboard/Makefile
Normal file
|
@ -0,0 +1,48 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= u-boot
|
||||
PORTVERSION= 2015.04
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= ftp://ftp.denx.de/pub/u-boot/
|
||||
PKGNAMESUFFIX?= -cubieboard
|
||||
|
||||
MAINTAINER= loos@FreeBSD.org
|
||||
COMMENT?= Cross-build U-Boot loader for Cubieboard
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
BUILD_DEPENDS= arm-none-eabi-gcc:${PORTSDIR}/devel/arm-none-eabi-gcc
|
||||
|
||||
MODEL?= cubieboard
|
||||
CONF_TARGET?= Cubieboard_defconfig
|
||||
|
||||
NO_ARCH= yes
|
||||
|
||||
WRKSRC= ${WRKDIR}/u-boot-${DISTVERSION}
|
||||
USES= gmake tar:bzip2
|
||||
SSP_UNSAFE= yes # cross-LD does not support -fstack-protector
|
||||
|
||||
U_BOOT_DIR= share/u-boot/${PORTNAME}${PKGNAMESUFFIX}
|
||||
PLIST_FILES= ${U_BOOT_DIR}/u-boot.img \
|
||||
${U_BOOT_DIR}/u-boot-sunxi-with-spl.bin \
|
||||
${U_BOOT_DIR}/sunxi-spl.bin \
|
||||
${U_BOOT_DIR}/README
|
||||
|
||||
MAKE_ARGS+= ARCH=arm \
|
||||
CROSS_COMPILE=arm-none-eabi-
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} -e "s,%%MODEL%%,${MODEL}," \
|
||||
${WRKSRC}/include/configs/sunxi-common.h
|
||||
|
||||
do-configure:
|
||||
(cd ${WRKSRC}; ${GMAKE} ${CONF_TARGET})
|
||||
|
||||
do-install:
|
||||
${MKDIR} ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
|
||||
${CP} ${WRKSRC}/spl/sunxi-spl.bin ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
|
||||
${CP} ${WRKSRC}/u-boot-sunxi-with-spl.bin ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
|
||||
${CP} ${WRKSRC}/u-boot.img ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
|
||||
${CP} ${.CURDIR}/pkg-descr ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}/README
|
||||
|
||||
.include <bsd.port.mk>
|
2
sysutils/u-boot-cubieboard/distinfo
Normal file
2
sysutils/u-boot-cubieboard/distinfo
Normal file
|
@ -0,0 +1,2 @@
|
|||
SHA256 (u-boot-2015.04.tar.bz2) = 0a1a70df586655f527befa6f12e184e96ed61b126e5a567382321b17200f5d60
|
||||
SIZE (u-boot-2015.04.tar.bz2) = 9471487
|
79
sysutils/u-boot-cubieboard/files/patch-api_api.c
Normal file
79
sysutils/u-boot-cubieboard/files/patch-api_api.c
Normal file
|
@ -0,0 +1,79 @@
|
|||
--- api/api.c.orig 2015-04-13 14:53:03 UTC
|
||||
+++ api/api.c
|
||||
@@ -495,45 +495,47 @@ static int API_env_set(va_list ap)
|
||||
*/
|
||||
static int API_env_enum(va_list ap)
|
||||
{
|
||||
- int i, n;
|
||||
- char *last, **next;
|
||||
+ int i;
|
||||
+ char *last, **next, *s;
|
||||
+ ENTRY *match, search;
|
||||
+ static char *buf;
|
||||
|
||||
last = (char *)va_arg(ap, u_int32_t);
|
||||
|
||||
if ((next = (char **)va_arg(ap, u_int32_t)) == NULL)
|
||||
return API_EINVAL;
|
||||
|
||||
- if (last == NULL)
|
||||
- /* start over */
|
||||
- *next = ((char *)env_get_addr(0));
|
||||
- else {
|
||||
- *next = last;
|
||||
-
|
||||
- for (i = 0; env_get_char(i) != '\0'; i = n + 1) {
|
||||
- for (n = i; env_get_char(n) != '\0'; ++n) {
|
||||
- if (n >= CONFIG_ENV_SIZE) {
|
||||
- /* XXX shouldn't we set *next = NULL?? */
|
||||
- return 0;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (envmatch((uchar *)last, i) < 0)
|
||||
- continue;
|
||||
-
|
||||
- /* try to get next name */
|
||||
- i = n + 1;
|
||||
- if (env_get_char(i) == '\0') {
|
||||
- /* no more left */
|
||||
- *next = NULL;
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- *next = ((char *)env_get_addr(i));
|
||||
- return 0;
|
||||
+ /*
|
||||
+ * This leverages realloc's behavior of growing but never shrinking the
|
||||
+ * existing buffer.
|
||||
+ */
|
||||
+ if (last == NULL) {
|
||||
+ i = 0;
|
||||
+ buf = realloc(buf, 512); /* Start with reasonable size buf. */
|
||||
+ } else {
|
||||
+ buf = realloc(buf, strlen(last) + 1);
|
||||
+ strcpy(buf, last);
|
||||
+ if ((s = strchr(buf, '=')) != NULL)
|
||||
+ *s = 0;
|
||||
+ search.key = buf;
|
||||
+ if ((i = hsearch_r(search, FIND, &match, &env_htab, 0)) == 0) {
|
||||
+ i = API_EINVAL;
|
||||
+ goto done;
|
||||
}
|
||||
}
|
||||
|
||||
+ /* hmatch on empty string is effectively "get next entry after i". */
|
||||
+ if ((i = hmatch_r("", i, &match, &env_htab)) == 0)
|
||||
+ goto done;
|
||||
+ buf = realloc(buf, strlen(match->key) + strlen(match->data) + 2);
|
||||
+ snprintf(buf, buflen, "%s=%s", match->key, match->data);
|
||||
+ *next = buf;
|
||||
return 0;
|
||||
+done:
|
||||
+ free(buf);
|
||||
+ buf = NULL;
|
||||
+ *next = NULL;
|
||||
+ return i;
|
||||
}
|
||||
|
||||
/*
|
28
sysutils/u-boot-cubieboard/files/patch-api_api__storage.c
Normal file
28
sysutils/u-boot-cubieboard/files/patch-api_api__storage.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
--- api/api_storage.c.orig 2015-04-13 14:53:03 UTC
|
||||
+++ api/api_storage.c
|
||||
@@ -107,10 +107,13 @@ static int dev_stor_get(int type, int fi
|
||||
|
||||
if (first) {
|
||||
di->cookie = (void *)get_dev(specs[type].name, 0);
|
||||
- if (di->cookie == NULL)
|
||||
+ if (di->cookie == NULL) {
|
||||
return 0;
|
||||
- else
|
||||
+ } else {
|
||||
found = 1;
|
||||
+ if (specs[type].max_dev > 1)
|
||||
+ *more = 1;
|
||||
+ }
|
||||
|
||||
} else {
|
||||
for (i = 0; i < specs[type].max_dev; i++)
|
||||
@@ -146,7 +149,8 @@ static int dev_stor_get(int type, int fi
|
||||
dd = (block_dev_desc_t *)di->cookie;
|
||||
if (dd->type == DEV_TYPE_UNKNOWN) {
|
||||
debugf("device instance exists, but is not active..");
|
||||
- found = 0;
|
||||
+ di->di_stor.block_count = 0;
|
||||
+ di->di_stor.block_size = 0;
|
||||
} else {
|
||||
di->di_stor.block_count = dd->lba;
|
||||
di->di_stor.block_size = dd->blksz;
|
29
sysutils/u-boot-cubieboard/files/patch-common_cmd__elf.c
Normal file
29
sysutils/u-boot-cubieboard/files/patch-common_cmd__elf.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
--- common/cmd_elf.c.orig 2015-04-13 14:53:03 UTC
|
||||
+++ common/cmd_elf.c
|
||||
@@ -35,22 +35,12 @@ static unsigned long do_bootelf_exec(ulo
|
||||
unsigned long ret;
|
||||
|
||||
/*
|
||||
- * QNX images require the data cache is disabled.
|
||||
- * Data cache is already flushed, so just turn it off.
|
||||
- */
|
||||
- int dcache = dcache_status();
|
||||
- if (dcache)
|
||||
- dcache_disable();
|
||||
-
|
||||
- /*
|
||||
- * pass address parameter as argv[0] (aka command name),
|
||||
- * and all remaining args
|
||||
+ * FreeBSD wants the caches enabled while ubldr runs, and as of r276397
|
||||
+ * the kernel can tolerate being entered with internal (but not external
|
||||
+ * PL310) caches enabled on armv6/7 systems. So don't disable caches
|
||||
+ * here, just launch the program directly.
|
||||
*/
|
||||
ret = entry(argc, argv);
|
||||
-
|
||||
- if (dcache)
|
||||
- dcache_enable();
|
||||
-
|
||||
return ret;
|
||||
}
|
||||
|
19
sysutils/u-boot-cubieboard/files/patch-common_cmd__test.c
Normal file
19
sysutils/u-boot-cubieboard/files/patch-common_cmd__test.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
--- common/cmd_test.c.orig 2015-04-13 14:53:03 UTC
|
||||
+++ common/cmd_test.c
|
||||
@@ -65,9 +65,14 @@ static int do_test(cmd_tbl_t *cmdtp, int
|
||||
char * const *ap;
|
||||
int i, op, left, adv, expr, last_expr, last_unop, last_binop;
|
||||
|
||||
- /* args? */
|
||||
- if (argc < 3)
|
||||
+ /*
|
||||
+ * If no args, that's bogus, return false.
|
||||
+ * If op is -z and no other args, answer is Yes, string is empty.
|
||||
+ */
|
||||
+ if (argc < 2)
|
||||
return 1;
|
||||
+ else if (argc == 2)
|
||||
+ return !(strcmp(argv[1], "-z") == 0);
|
||||
|
||||
#ifdef DEBUG
|
||||
{
|
80
sysutils/u-boot-cubieboard/files/patch-drivers_mmc_mmc.c
Normal file
80
sysutils/u-boot-cubieboard/files/patch-drivers_mmc_mmc.c
Normal file
|
@ -0,0 +1,80 @@
|
|||
--- drivers/mmc/mmc.c.orig 2015-04-13 14:53:03 UTC
|
||||
+++ drivers/mmc/mmc.c
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
static struct list_head mmc_devices;
|
||||
static int cur_dev_num = -1;
|
||||
+static int mmc_error_print_max = -1;
|
||||
|
||||
__weak int board_mmc_getwp(struct mmc *mmc)
|
||||
{
|
||||
@@ -1560,9 +1561,14 @@ void mmc_destroy(struct mmc *mmc)
|
||||
block_dev_desc_t *mmc_get_dev(int dev)
|
||||
{
|
||||
struct mmc *mmc = find_mmc_device(dev);
|
||||
- if (!mmc || mmc_init(mmc))
|
||||
+ if (!mmc)
|
||||
return NULL;
|
||||
|
||||
+ /* If mmc_init fails, mmc->block_dev will be of type
|
||||
+ * DEV_TYPE_UNKNOWN with blksz and lba set to zero.
|
||||
+ */
|
||||
+ mmc_init(mmc);
|
||||
+
|
||||
return &mmc->block_dev;
|
||||
}
|
||||
#endif
|
||||
@@ -1594,7 +1600,7 @@ int mmc_start_init(struct mmc *mmc)
|
||||
err = mmc->cfg->ops->init(mmc);
|
||||
|
||||
if (err)
|
||||
- return err;
|
||||
+ goto done;
|
||||
|
||||
mmc->ddr_mode = 0;
|
||||
mmc_set_bus_width(mmc, 1);
|
||||
@@ -1604,7 +1610,7 @@ int mmc_start_init(struct mmc *mmc)
|
||||
err = mmc_go_idle(mmc);
|
||||
|
||||
if (err)
|
||||
- return err;
|
||||
+ goto done;
|
||||
|
||||
/* The internal partition reset to user partition(0) at every CMD0*/
|
||||
mmc->part_num = 0;
|
||||
@@ -1621,15 +1627,33 @@ int mmc_start_init(struct mmc *mmc)
|
||||
|
||||
if (err && err != IN_PROGRESS) {
|
||||
#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
|
||||
- printf("Card did not respond to voltage select!\n");
|
||||
+ if (mmc_error_print_max < 4) {
|
||||
+ mmc_error_print_max++;
|
||||
+ printf("Card did not respond to voltage select!\n");
|
||||
+
|
||||
+ if (mmc_error_print_max == 4) {
|
||||
+ printf("Discarding further error messages\n");
|
||||
+ }
|
||||
+ }
|
||||
#endif
|
||||
- return UNUSABLE_ERR;
|
||||
+// return UNUSABLE_ERR;
|
||||
+ goto done;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == IN_PROGRESS)
|
||||
mmc->init_in_progress = 1;
|
||||
|
||||
+done:
|
||||
+ if (err) {
|
||||
+ mmc->has_init = 0;
|
||||
+ mmc->block_dev.type = DEV_TYPE_UNKNOWN;
|
||||
+ mmc->block_dev.blksz = 0;
|
||||
+ mmc->block_dev.lba = 0;
|
||||
+ } else {
|
||||
+ mmc->has_init = 1;
|
||||
+ }
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
--- include/configs/sunxi-common.h.orig 2015-04-13 14:53:03 UTC
|
||||
+++ include/configs/sunxi-common.h
|
||||
@@ -406,4 +406,71 @@ extern int soft_i2c_gpio_scl;
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS
|
||||
#endif
|
||||
|
||||
+/*****************************************************************************
|
||||
+ * FreeBSD customizations from here down.
|
||||
+ ****************************************************************************/
|
||||
+
|
||||
+/* Add the API and ELF features needed for ubldr. */
|
||||
+#ifndef CONFIG_SPL_BUILD
|
||||
+#define CONFIG_API
|
||||
+#define CONFIG_CMD_ELF
|
||||
+#define CONFIG_CMD_ENV_EXISTS
|
||||
+#define CONFIG_EFI_PARTITION
|
||||
+#endif
|
||||
+
|
||||
+/* Turn off dcache. */
|
||||
+#ifndef CONFIG_SPL_BUILD
|
||||
+#define CONFIG_SYS_DCACHE_OFF
|
||||
+#define CONFIG_CMD_CACHE
|
||||
+#endif
|
||||
+
|
||||
+/* Save the env to the fat partition. */
|
||||
+#ifndef CONFIG_SPL_BUILD
|
||||
+#undef CONFIG_ENV_IS_NOWHERE
|
||||
+#undef CONFIG_ENV_IS_IN_NAND
|
||||
+#undef CONFIG_ENV_IS_IN_MMC
|
||||
+#undef CONFIG_ENV_IS_IN_SPI_FLASH
|
||||
+#define CONFIG_ENV_IS_IN_FAT
|
||||
+#define CONFIG_FAT_WRITE
|
||||
+#define CONFIG_SYS_MMC_MAX_DEVICE 4
|
||||
+#define FAT_ENV_INTERFACE "mmc"
|
||||
+#define FAT_ENV_DEVICE_AND_PART "0:1"
|
||||
+#define FAT_ENV_FILE "u-boot.env"
|
||||
+#endif
|
||||
+
|
||||
+/* Create a small(ish) boot environment for FreeBSD. */
|
||||
+#ifndef CONFIG_SPL_BUILD
|
||||
+#undef CONFIG_EXTRA_ENV_SETTINGS
|
||||
+#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
+ MEM_LAYOUT_ENV_SETTINGS \
|
||||
+ CONSOLE_STDOUT_SETTINGS \
|
||||
+ "stdin=serial,usbkbd\0" \
|
||||
+ "fdtfile=%%MODEL%%.dtb\0" \
|
||||
+ "console=ttyS0,115200\0" \
|
||||
+ "Fatboot=" \
|
||||
+ "env exists loaderdev || env set loaderdev ${fatdev}; " \
|
||||
+ "env exists UserFatboot && run UserFatboot; " \
|
||||
+ "echo Booting from: ${fatdev} ${bootfile}; " \
|
||||
+ "fatload ${fatdev} ${kernel_addr_r} ${bootfile} && bootelf; " \
|
||||
+ "\0" \
|
||||
+ "Netboot=" \
|
||||
+ "env exists loaderdev || env set loaderdev net; " \
|
||||
+ "env exists UserNetboot && run UserNetboot; " \
|
||||
+ "dhcp ${kernel_addr_r} ${bootfile} && bootelf; " \
|
||||
+ "\0" \
|
||||
+ "preboot=usb start; " \
|
||||
+ "env exists bootfile || env set bootfile ubldr; " \
|
||||
+ "env exists SetupFatdev && run SetupFatdev; " \
|
||||
+ "env exists UserPreboot && run UserPreboot; " \
|
||||
+ "\0" \
|
||||
+ "SetupFatdev=" \
|
||||
+ "env exists fatdev || env set fatdev 'mmc 0'; " \
|
||||
+ "\0"
|
||||
+
|
||||
+#undef CONFIG_BOOTCOMMAND
|
||||
+#define CONFIG_BOOTCOMMAND "run Fatboot"
|
||||
+#undef CONFIG_PREBOOT
|
||||
+#define CONFIG_PREBOOT "run preboot"
|
||||
+#endif
|
||||
+
|
||||
#endif /* _SUNXI_COMMON_CONFIG_H */
|
19
sysutils/u-boot-cubieboard/pkg-descr
Normal file
19
sysutils/u-boot-cubieboard/pkg-descr
Normal file
|
@ -0,0 +1,19 @@
|
|||
U-Boot loader for Cubieboard.
|
||||
|
||||
To install this bootloader, follow the instructions in
|
||||
http://linux-sunxi.org/Bootable_SD_card#Bootloader
|
||||
|
||||
This version is patched so that:
|
||||
* ELF and API features are enabled.
|
||||
* The default environment is trimmed to just what's needed to boot.
|
||||
* The saveenv command writes to the file u-boot.env on the FAT partition.
|
||||
* The DTB file name is chosen based on the board model and passed to ubldr
|
||||
using the fdtfile env variable. ubldr loads the DTB from /boot/dtb/ on
|
||||
the FreeBSD partition.
|
||||
* By default, it loads ELF ubldr from file ubldr on the FAT partition
|
||||
to address 0x42000000, and launches it.
|
||||
|
||||
For information about running FreeBSD on Cubieboard, see
|
||||
https://wiki.freebsd.org/FreeBSD/arm/Allwinner
|
||||
|
||||
For general information about U-Boot see WWW: http://www.denx.de/wiki/U-Boot
|
15
sysutils/u-boot-cubieboard2/Makefile
Normal file
15
sysutils/u-boot-cubieboard2/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PKGNAMESUFFIX= -cubieboard2
|
||||
|
||||
COMMENT= Cross-build U-Boot loader for Cubieboard2
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
# Local overrides
|
||||
MASTERDIR= ${.CURDIR}/../u-boot-cubieboard
|
||||
DESCR= ${.CURDIR}/pkg-descr
|
||||
MODEL= cubieboard2
|
||||
CONF_TARGET= Cubieboard2_defconfig
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
19
sysutils/u-boot-cubieboard2/pkg-descr
Normal file
19
sysutils/u-boot-cubieboard2/pkg-descr
Normal file
|
@ -0,0 +1,19 @@
|
|||
U-Boot loader for Cubieboard2.
|
||||
|
||||
To install this bootloader, follow the instructions in
|
||||
http://linux-sunxi.org/Bootable_SD_card#Bootloader
|
||||
|
||||
This version is patched so that:
|
||||
* ELF and API features are enabled.
|
||||
* The default environment is trimmed to just what's needed to boot.
|
||||
* The saveenv command writes to the file u-boot.env on the FAT partition.
|
||||
* The DTB file name is chosen based on the board model and passed to ubldr
|
||||
using the fdtfile env variable. ubldr loads the DTB from /boot/dtb/ on
|
||||
the FreeBSD partition.
|
||||
* By default, it loads ELF ubldr from file ubldr on the FAT partition
|
||||
to address 0x42000000, and launches it.
|
||||
|
||||
For information about running FreeBSD on Cubieboard, see
|
||||
https://wiki.freebsd.org/FreeBSD/arm/Allwinner
|
||||
|
||||
For general information about U-Boot see WWW: http://www.denx.de/wiki/U-Boot
|
Loading…
Reference in a new issue