uboot-envtools: update to 2018.03
Several changes has been made: + AES support has been removed by upstream commit c6831c7 (2017-11-14) [remove patch "200-fw_env_no_aes.patch"] + Support for UBI volumes has beed added by upstream commit 34255b9 (2017-11-15) [remove patch "300-support-env-in-ubivol-chardev.patch"] + A command line argument has beed added ("-c") to manually indicate the location of the environment configuration file Also, patch "400-u-boot-2015.10-stdint.patch" is no longer necessary, and the config option to enable UBI support has been removed. Size comparisons: fw_printenv size: Target Before After ar71xx 15,189 bytes 18,133 bytes (+2,944 bytes) ipq40xx 20,873 bytes 20,987 bytes (+114 bytes) mvebu 20,881 bytes 20,991 bytes (+110 bytes) ramips 15,128 bytes 18,072 bytes (+2,944 bytes) OPKG package size: Target Before After ar71xx 11,309 bytes 12,875 bytes (+1,566 bytes) ipq40xx 11,772 bytes 13,299 bytes (+1,527 bytes) mvebu 11,609 bytes 13,114 bytes (+1,505 bytes) ramips 10,975 bytes 12,503 bytes (+1,528 bytes) Compile tested: ipq40xx (musl, glibc, gcc5-musl), ar71xx, mvebu, ramips Run tested: ipq40xx (ASUS RT-AC58U) Signed-off-by: Luis Araneda <luaraneda@gmail.com>v19.07.3_mercusys_ac12_duma
parent
7b758f7f4f
commit
68150d3125
@ -1,9 +0,0 @@
|
|||||||
config UBOOT_ENVTOOLS_UBI
|
|
||||||
bool "Support environment in UBI volume"
|
|
||||||
depends on PACKAGE_uboot-envtools
|
|
||||||
default TARGET_oxnas
|
|
||||||
help
|
|
||||||
Add support for reading and writing U-Boot environment
|
|
||||||
stored in UBI volume(s).
|
|
||||||
|
|
||||||
Increases binary size by about 8 kB
|
|
@ -1,38 +0,0 @@
|
|||||||
--- a/tools/env/fw_env.c
|
|
||||||
+++ b/tools/env/fw_env.c
|
|
||||||
@@ -246,7 +246,7 @@ int fw_printenv (int argc, char *argv[])
|
|
||||||
int i, n_flag;
|
|
||||||
int rc = 0;
|
|
||||||
|
|
||||||
- if (argc >= 2 && strcmp(argv[1], "-a") == 0) {
|
|
||||||
+ if (0 && argc >= 2 && strcmp(argv[1], "-a") == 0) {
|
|
||||||
if (argc < 3) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"## Error: '-a' option requires AES key\n");
|
|
||||||
@@ -325,7 +325,7 @@ int fw_printenv (int argc, char *argv[])
|
|
||||||
int fw_env_close(void)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
- if (aes_flag) {
|
|
||||||
+ if (0 && aes_flag) {
|
|
||||||
ret = env_aes_cbc_crypt(environment.data, 1);
|
|
||||||
if (ret) {
|
|
||||||
fprintf(stderr,
|
|
||||||
@@ -1223,7 +1223,7 @@ int fw_env_open(void)
|
|
||||||
|
|
||||||
crc0 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
|
|
||||||
|
|
||||||
- if (aes_flag) {
|
|
||||||
+ if (0 && aes_flag) {
|
|
||||||
ret = env_aes_cbc_crypt(environment.data, 0);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
@@ -1280,7 +1280,7 @@ int fw_env_open(void)
|
|
||||||
|
|
||||||
crc1 = crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
|
|
||||||
|
|
||||||
- if (aes_flag) {
|
|
||||||
+ if (0 && aes_flag) {
|
|
||||||
ret = env_aes_cbc_crypt(redundant->data, 0);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
@ -1,163 +0,0 @@
|
|||||||
From 6e2630a0fc872d0db34157972f6dc3941f6d66dd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Date: Mon, 19 May 2014 21:38:01 +0200
|
|
||||||
Subject: [PATCH] tools/env: add support for env in ubi volume chardev
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
---
|
|
||||||
tools/env/Makefile | 5 ++++
|
|
||||||
tools/env/fw_env.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++-------
|
|
||||||
2 files changed, 71 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
--- a/tools/env/Makefile
|
|
||||||
+++ b/tools/env/Makefile
|
|
||||||
@@ -24,6 +24,13 @@ ifeq ($(MTD_VERSION),old)
|
|
||||||
HOST_EXTRACFLAGS += -DMTD_OLD
|
|
||||||
endif
|
|
||||||
|
|
||||||
+ifeq ($(UBI),y)
|
|
||||||
+HOST_EXTRACFLAGS += -DUBI
|
|
||||||
+HOST_LOADLIBES = "-Wl,--gc-sections,-lubi-utils"
|
|
||||||
+else
|
|
||||||
+HOST_LOADLIBES = "-Wl,--gc-sections"
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
always := fw_printenv
|
|
||||||
hostprogs-y := fw_printenv
|
|
||||||
|
|
||||||
--- a/tools/env/fw_env.c
|
|
||||||
+++ b/tools/env/fw_env.c
|
|
||||||
@@ -31,6 +31,9 @@
|
|
||||||
# include <mtd/mtd-user.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifdef UBI
|
|
||||||
+# include <libubi.h>
|
|
||||||
+#endif
|
|
||||||
#include "fw_env.h"
|
|
||||||
|
|
||||||
#include <aes.h>
|
|
||||||
@@ -811,6 +814,11 @@ static int flash_write_buf (int dev, int
|
|
||||||
off_t top_of_range; /* end of the last block we may use */
|
|
||||||
loff_t blockstart; /* running start of the current block -
|
|
||||||
MEMGETBADBLOCK needs 64 bits */
|
|
||||||
+#ifdef UBI
|
|
||||||
+ libubi_t *libubi = NULL;/* pointer to libubi struct */
|
|
||||||
+#else
|
|
||||||
+ void *libubi = NULL;
|
|
||||||
+#endif
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -916,7 +924,30 @@ static int flash_write_buf (int dev, int
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (mtd_type != MTD_ABSENT) {
|
|
||||||
+#ifdef UBI
|
|
||||||
+ if (mtd_type == MTD_UBIVOLUME) {
|
|
||||||
+ struct ubi_vol_info volinfo;
|
|
||||||
+ libubi = libubi_open();
|
|
||||||
+ if (libubi)
|
|
||||||
+ rc = ubi_get_vol_info(libubi,
|
|
||||||
+ DEVNAME(dev_current), &volinfo);
|
|
||||||
+ if (libubi && !rc) {
|
|
||||||
+ erasesize = volinfo.leb_size;
|
|
||||||
+ int leb = blockstart / erasesize;
|
|
||||||
+ if (volinfo.type != UBI_STATIC_VOLUME)
|
|
||||||
+ rc = ubi_leb_change_start(libubi, fd,
|
|
||||||
+ leb, erasesize);
|
|
||||||
+ else
|
|
||||||
+ rc = ubi_update_start(libubi, fd,
|
|
||||||
+ erasesize);
|
|
||||||
+ }
|
|
||||||
+ if (libubi && rc) {
|
|
||||||
+ libubi_close(libubi);
|
|
||||||
+ libubi = NULL;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+ if (!libubi && mtd_type != MTD_ABSENT) {
|
|
||||||
erase.start = blockstart;
|
|
||||||
ioctl(fd, MEMUNLOCK, &erase);
|
|
||||||
/* These do not need an explicit erase cycle */
|
|
||||||
@@ -933,7 +964,8 @@ static int flash_write_buf (int dev, int
|
|
||||||
fprintf (stderr,
|
|
||||||
"Seek error on %s: %s\n",
|
|
||||||
DEVNAME (dev), strerror (errno));
|
|
||||||
- return -1;
|
|
||||||
+ processed = -1;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
@@ -943,10 +975,11 @@ static int flash_write_buf (int dev, int
|
|
||||||
if (write (fd, data + processed, erasesize) != erasesize) {
|
|
||||||
fprintf (stderr, "Write error on %s: %s\n",
|
|
||||||
DEVNAME (dev), strerror (errno));
|
|
||||||
- return -1;
|
|
||||||
+ processed = -1;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (mtd_type != MTD_ABSENT)
|
|
||||||
+ if (!libubi && mtd_type != MTD_ABSENT)
|
|
||||||
ioctl(fd, MEMLOCK, &erase);
|
|
||||||
|
|
||||||
processed += erasesize;
|
|
||||||
@@ -957,6 +990,11 @@ static int flash_write_buf (int dev, int
|
|
||||||
if (write_total > count)
|
|
||||||
free (data);
|
|
||||||
|
|
||||||
+out:
|
|
||||||
+#ifdef UBI
|
|
||||||
+ if (libubi)
|
|
||||||
+ libubi_close(libubi);
|
|
||||||
+#endif
|
|
||||||
return processed;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1068,12 +1106,8 @@ static int flash_read (int fd)
|
|
||||||
|
|
||||||
if (S_ISCHR(st.st_mode)) {
|
|
||||||
rc = ioctl(fd, MEMGETINFO, &mtdinfo);
|
|
||||||
- if (rc < 0) {
|
|
||||||
- fprintf(stderr, "Cannot get MTD information for %s\n",
|
|
||||||
- DEVNAME(dev_current));
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
- if (mtdinfo.type != MTD_NORFLASH &&
|
|
||||||
+ if (!rc &&
|
|
||||||
+ mtdinfo.type != MTD_NORFLASH &&
|
|
||||||
mtdinfo.type != MTD_NANDFLASH &&
|
|
||||||
mtdinfo.type != MTD_DATAFLASH &&
|
|
||||||
mtdinfo.type != MTD_UBIVOLUME) {
|
|
||||||
@@ -1081,6 +1115,28 @@ static int flash_read (int fd)
|
|
||||||
mtdinfo.type, DEVNAME(dev_current));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
+#ifdef UBI
|
|
||||||
+ if (rc) {
|
|
||||||
+ libubi_t *libubi;
|
|
||||||
+ struct ubi_vol_info volinfo;
|
|
||||||
+ libubi = libubi_open();
|
|
||||||
+ if (!libubi)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ rc = ubi_get_vol_info(libubi, DEVNAME(dev_current),
|
|
||||||
+ &volinfo);
|
|
||||||
+ if (rc) {
|
|
||||||
+ libubi_close(libubi);
|
|
||||||
+ return -ENODEV;
|
|
||||||
+ }
|
|
||||||
+ memset(&mtdinfo, 0, sizeof(mtdinfo));
|
|
||||||
+ mtdinfo.type = MTD_UBIVOLUME;
|
|
||||||
+ mtdinfo.size = volinfo.data_bytes;
|
|
||||||
+ mtdinfo.erasesize = volinfo.leb_size;
|
|
||||||
+ mtdinfo.writesize = volinfo.leb_size;
|
|
||||||
+ libubi_close(libubi);
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
} else {
|
|
||||||
memset(&mtdinfo, 0, sizeof(mtdinfo));
|
|
||||||
mtdinfo.type = MTD_ABSENT;
|
|
@ -1,13 +0,0 @@
|
|||||||
diff -Naur u-boot-2015.10.orig/tools/env/fw_env.c u-boot-2015.10/tools/env/fw_env.c
|
|
||||||
--- u-boot-2015.10.orig/tools/env/fw_env.c 2016-06-24 12:42:31.152391850 +0200
|
|
||||||
+++ u-boot-2015.10/tools/env/fw_env.c 2016-06-24 12:42:59.080391754 +0200
|
|
||||||
@@ -21,7 +21,8 @@
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
-#include <unistd.h>
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#include <stdint.h>
|
|
||||||
|
|
||||||
#ifdef MTD_OLD
|
|
||||||
# include <stdint.h>
|
|
Loading…
Reference in New Issue