diff --git a/tools/upslug2/Makefile b/tools/upslug2/Makefile index 42448b0185..f270c9fbe9 100644 --- a/tools/upslug2/Makefile +++ b/tools/upslug2/Makefile @@ -7,27 +7,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=upslug2 -PKG_VERSION:=20071227 -PKG_SOURCE_URL:=http://svn.nslu2-linux.org/svnroot/upslug2/trunk -PKG_SOURCE_PROTO:=svn -PKG_SOURCE_SUBDIR:=upslug2-$(PKG_VERSION) -PKG_SOURCE_VERSION:=41 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_MIRROR_HASH:=5c69eae3a2affef8f4f7194cfedfdb9175b04ca433f9ae046c85309b42bdb21e +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/fretb/upslug2 +PKG_SOURCE_DATE:=2016-05-16 +PKG_SOURCE_VERSION:=35f0b18c56368f69eef590e7d9fb688fbe624b10 +PKG_MIRROR_HASH:=646856532e5fad240b1697eb94726aafa6712294f608e24892983e6db95fb65f -include $(INCLUDE_DIR)/host-build.mk - -unexport CFLAGS +HOST_FIXUP:=autoreconf -define Host/Configure - (cd $(HOST_BUILD_DIR); \ - aclocal && autoconf && \ - autoheader && \ - automake --add-missing; \ - ) - $(Host/Configure/Default) -endef +include $(INCLUDE_DIR)/host-build.mk ifneq ($(HOST_OS),Linux) HOST_CONFIGURE_ARGS += --with-libpcap diff --git a/tools/upslug2/patches/110-wrt350nv2_support.patch b/tools/upslug2/patches/110-wrt350nv2_support.patch deleted file mode 100644 index eea7cc4d00..0000000000 --- a/tools/upslug2/patches/110-wrt350nv2_support.patch +++ /dev/null @@ -1,279 +0,0 @@ ---- a/nslu2_image.cc -+++ b/nslu2_image.cc -@@ -54,28 +54,44 @@ namespace NSLU2Image { - int &address, int &length) { - address = image.tellg(); - length = buffer_length; -- if (address+length > NSLU2Protocol::FlashSize) -- length = NSLU2Protocol::FlashSize-address; -+ if (address+length > EndAddress) -+ length = EndAddress-address; - if (length > 0) - SafeRead(&image, buffer, length, "image (read)"); - } - -+ virtual void GetBoundaries(int &start, int &end) -+ { -+ start = BaseAddress; -+ end = EndAddress; -+ } -+ - /* Rewind to the start of the image (or the Kernel if not - * doing a complete reprogram). - */ - virtual void Rewind(void) { -- SafeSeek(&image, reprogram ? 0 : NSLU2Protocol::BaseAddress, -+ SafeSeek(&image, reprogram ? 0 : BaseAddress, - "image (seek)"); - } - - private: -+ int BaseAddress; -+ int EndAddress; -+ - /* Validate that this really is an image file. */ - void Validate(const char *i) { - char signature[8]; - - SafeSeek(&image, -8, i, std::ios::end); - SafeRead(&image, signature, 8, i); -- if (memcmp(signature, "eRcOmM", 6) != 0) -+ -+ if (memcmp(signature, "eRcOmM", 6) == 0) { -+ BaseAddress = NSLU2Protocol::BaseAddress; -+ EndAddress = NSLU2Protocol::FlashSize; -+ } else if (memcmp(signature + 1, "sErCoMm", 7) == 0) { -+ BaseAddress = 0; -+ EndAddress = NSLU2Protocol::FlashSize - 0x40000; -+ } else - throw NSLU2Image::FileError(DataError, i, 0); - } - -@@ -93,6 +109,12 @@ namespace NSLU2Image { - virtual ~SynthesiseImage() { - } - -+ void GetBoundaries(int &start, int &end) -+ { -+ start = NSLU2Protocol::BaseAddress; -+ end = NSLU2Protocol::FlashSize; -+ } -+ - /* Get the next block of bytes, returns an address and length, false if - * there is a problem. - */ ---- a/nslu2_image.h -+++ b/nslu2_image.h -@@ -35,6 +35,8 @@ namespace NSLU2Image { - virtual ~Image() { - } - -+ virtual void GetBoundaries(int &start, int &end) = 0; -+ - /* Get the next block of bytes, returns an address and length. - */ - virtual void GetBytes(char *buffer, size_t buffer_length, ---- a/nslu2_upgrade.cc -+++ b/nslu2_upgrade.cc -@@ -95,7 +95,7 @@ namespace NSLU2Upgrade { - - class RealDoUpgrade : public DoUpgrade { - public: -- RealDoUpgrade(Wire *w, Progress *p, bool r) : -+ RealDoUpgrade(Wire *w, Progress *p, bool r, int start, int end) : - wire(w), progress(p), sequenceError(-1), reprogram(r), - lastType(NSLU2Protocol::InvalidType) { - if (reprogram) { -@@ -105,6 +105,8 @@ namespace NSLU2Upgrade { - NSLU2Protocol::UpgradeStartPacket packet(seq); - wire->Send(packet.PacketBuffer(), packet.PacketLength()); - } -+ BaseAddress = start; -+ EndAddress = end; - } - - virtual ~RealDoUpgrade() { -@@ -205,8 +207,8 @@ namespace NSLU2Upgrade { - - }; - -- DoUpgrade *DoUpgrade::MakeDoUpgrade(Wire *wire, Progress *progress, bool reprogram) { -- return new RealDoUpgrade(wire, progress, reprogram); -+ DoUpgrade *DoUpgrade::MakeDoUpgrade(Wire *wire, Progress *progress, bool reprogram, int start, int end) { -+ return new RealDoUpgrade(wire, progress, reprogram, start, end); - } - }; - -@@ -421,13 +423,18 @@ void NSLU2Upgrade::RealDoUpgrade::Upgrad - /* Simple upgrade programs only the addresses beyound BaseAddress, - * reprogram overwrites the whole flash. - */ -- if (!reprogram && address < NSLU2Protocol::BaseAddress) { -+ if (!reprogram && address < BaseAddress) { - length += address; -- if (length <= NSLU2Protocol::BaseAddress) -+ if (length <= BaseAddress) - return; /* nothing to do. */ -- address = NSLU2Protocol::BaseAddress; -+ address = BaseAddress; - length -= address; - } -+ if (!reprogram && address + length > EndAddress) { -+ if (address >= EndAddress) -+ return; /* nothing to do. */ -+ length -= EndAddress - address; -+ } - - #if 1 - /* Skip blocks of 255 valued bytes - the erase clears the flash to this -@@ -495,11 +502,11 @@ void NSLU2Upgrade::RealDoUpgrade::Verify - Finish(); - - /* Verify never verifies anything below BaseAddress. */ -- if (address < NSLU2Protocol::BaseAddress) { -+ if (address < BaseAddress) { - length += address; -- if (length <= NSLU2Protocol::BaseAddress) -+ if (length <= BaseAddress) - return; /* nothing to do. */ -- address = NSLU2Protocol::BaseAddress; -+ address = BaseAddress; - length -= address; - } - ---- a/nslu2_upgrade.h -+++ b/nslu2_upgrade.h -@@ -206,6 +206,8 @@ namespace NSLU2Upgrade { - - class DoUpgrade { - public: -+ int BaseAddress; -+ int EndAddress; - virtual ~DoUpgrade() { - } - -@@ -228,7 +230,7 @@ namespace NSLU2Upgrade { - virtual void Reboot(void) = 0; - /* Reboot the NSLU2. */ - -- static DoUpgrade *MakeDoUpgrade(Wire *wire, Progress *progress, bool reprogram); -+ static DoUpgrade *MakeDoUpgrade(Wire *wire, Progress *progress, bool reprogram, int start, int end); - /* Instantiate a real DoUpgrade, returns NULL if the object - * cannot be instantiated. - * ---- a/upslug2.cc -+++ b/upslug2.cc -@@ -21,8 +21,8 @@ - - class ProgressBar : public UpSlug2::CharacterProgressBar<80> { - public: -- ProgressBar(bool reprogram, const unsigned char *t) : -- UpSlug2::CharacterProgressBar<80>(reprogram, 64), -+ ProgressBar(bool reprogram, const unsigned char *t, int start, int end) : -+ UpSlug2::CharacterProgressBar<80>(reprogram, 64, start, end), - target(t), displayed(false), ticker(0) { - } - -@@ -95,7 +95,7 @@ private: - else if (seen == -1) { - seen = 0; - if (!reprogram) -- sent -= NSLU2Protocol::BaseAddress; -+ sent -= NSLU2Protocol::FlashSize - (EndAddress - BaseAddress); - } else - sent -= seen; - -@@ -423,7 +423,7 @@ int main(int argc, char **argv) { - { 0, 0, 0, 0 } - }; - -- do switch (getopt_long(argc, argv, "he:d:t:f:vUni:Ck:r:R:j:p:P:T:F:E:", options, 0)) { -+ do switch (getopt_long(argc, argv, "he:d:t:f:vUni:Ck:r:R:j:op:P:T:F:E:", options, 0)) { - case -1: if (optind < argc) { - std::fprintf(stderr, "%s: unrecognised option\n", argv[optind]); - std::exit(1); -@@ -523,16 +523,22 @@ done: - - if (mac && got_kernel) { - Pointer wire(NSLU2Upgrade::Wire::MakeWire(device, fromMac, mac, euid)); -- ProgressBar progress(reprogram, mac); -+ int BaseAddress = NSLU2Protocol::BaseAddress; -+ int EndAddress = NSLU2Protocol::FlashSize; - - if (full_image) { /* complete image. */ - /* The full image case allows a complete reprogram. */ -+ NSLU2Image::Image *image_p; - Pointer image( - NSLU2Image::Image::MakeImage( - reprogram, full_image)); -+ image_p = image.p; -+ image_p->GetBoundaries(BaseAddress, EndAddress); -+ ProgressBar progress(reprogram, mac, BaseAddress, EndAddress); - Pointer upgrade( - NSLU2Upgrade::DoUpgrade::MakeDoUpgrade( -- wire.p, &progress, reprogram)); -+ wire.p, &progress, reprogram, -+ BaseAddress, EndAddress)); - progress.FirstDisplay(); - Upgrade(upgrade.p, image.p, no_upgrade, no_verify); - progress.EndDisplay(); -@@ -551,9 +557,11 @@ done: - fis_payload, - product_id, protocol_id, - firmware_version, extra_version)); -+ ProgressBar progress(reprogram, mac, BaseAddress, EndAddress); - Pointer upgrade( - NSLU2Upgrade::DoUpgrade::MakeDoUpgrade( -- wire.p, &progress, false)); -+ wire.p, &progress, false, -+ BaseAddress, EndAddress)); - progress.FirstDisplay(); - Upgrade(upgrade.p, image.p, no_upgrade, no_verify); - progress.EndDisplay(); ---- a/upslug2_progress.h -+++ b/upslug2_progress.h -@@ -161,15 +161,19 @@ namespace UpSlug2 { - Timedout, /* *: timeout on a sent packet for this address. */ - NumberOfStates - } Status; -- -+ int BaseAddress; -+ int EndAddress; -+ - /* reprogram says whether this is a full reprogram (the entire - * flash will be erased) or not (the leading, RedBoot, SysConf - * partitions are not erased). - * resolution should be about 6 for a command line (character) - * progress bar and 8 for a GUI (pixel) progress bar. - */ -- ProgressBar(bool r) : -+ ProgressBar(bool r, int start, int end) : - reprogram(r), timeout(false), retransmit(false), status(Init) { -+ BaseAddress = start; -+ EndAddress = end; - } - - /* lowWaterMark..(highWaterMark-1) bytes are in state 'st', -@@ -179,8 +183,8 @@ namespace UpSlug2 { - /* These initial settings cover the majority of cases - * correctly. - */ -- lowWaterMark = reprogram ? 0 : NSLU2Protocol::BaseAddress; -- highWaterMark = status >= st ? NSLU2Protocol::FlashSize-1 : 0; -+ lowWaterMark = reprogram ? 0 : BaseAddress; -+ highWaterMark = status >= st ? EndAddress-1 : 0; - switch (st) { - case Init: - /* Everything has an initial value... */ -@@ -286,9 +290,9 @@ namespace UpSlug2 { - */ - template class CharacterProgressBar : public ProgressBar { - public: -- CharacterProgressBar(bool reprogram, int n, const char ind[NumberOfStates] = 0) : -+ CharacterProgressBar(bool reprogram, int n, int start, int end, const char ind[NumberOfStates] = 0) : - numberOfCharacters(n > characters || n < 1 ? characters : n), -- ProgressBar(reprogram) { -+ ProgressBar(reprogram, start, end) { - if (ind) - std::memcpy(indicators, ind, NumberOfStates); - else