Author: titmuss
Date: Thu Feb 14 07:45:13 2008
New Revision: 1959
URL: http://svn.slimdevices.com?rev=1959&root=Jive&view=rev
Log:
[EMAIL PROTECTED] (orig r1950): titmuss | 2008-02-14 12:15:01 +0000
Bug: 7114
Description:
Download new firmware directly to flash, don't store it in memory first.
Modified:
trunk/ (props changed)
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
Propchange: trunk/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Thu Feb 14 07:45:13 2008
@@ -1,3 +1,3 @@
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:1949
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:1950
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/SN:1083
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/scrolling:1378
Modified:
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
URL:
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua?rev=1959&root=Jive&r1=1958&r2=1959&view=diff
==============================================================================
---
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
(original)
+++
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
Thu Feb 14 07:45:13 2008
@@ -1,8 +1,3 @@
-
--- FIXME at the moment the upgrade stores the kernel and filesystem
--- images in /tmp before writing to flash. when the bootloader and
--- kernel support safe upgrading the flash should be written to as
--- the images are downloaded.
local ipairs, pairs, tonumber, tostring, type = ipairs, pairs, tonumber,
tostring, type
@@ -70,49 +65,31 @@
log:warn("parseVersion failed")
return nil, err
end
+
+ -- disable VOL+ on boot
+ t, err = self:fw_setenv({ sw7 = "" })
+ if not t then
+ log:warn("fw_setenv failed")
+ return nil, err
+ end
+
+ -- erase flash
+ t, err = self:flashErase(self._zImageExtraVersion)
+ if not t then
+ log:warn("flash kernel failed")
+ return nil, err
+ end
+
+ t, err = self:flashErase("root.cramfs")
+ if not t then
+ log:warn("flash filesystem failed")
+ return nil, err
+ end
-- stream the firmware, and update the flash
t, err = self:download(callback)
if not t then
log:warn("download Failed")
- return nil, err
- end
-
- callback(false, "UPDATE_VERIFY")
-
- -- checksum kernel
- t, err = self:checksum(self._zImageExtraVersion, "/tmp/")
- if not t then
- log:warn("file checksum failed")
- return nil, err
- end
-
- -- checksum cramfs
- t, err = self:checksum("root.cramfs", "/tmp/")
- if not t then
- log:warn("file checksum failed")
- return nil, err
- end
-
- callback(false, "UPDATE_WRITE")
-
- -- disable VOL+ on boot
- t, err = self:fw_setenv({ sw7 = "" })
- if not t then
- log:warn("fw_setenv failed")
- return nil, err
- end
-
- -- write images to flash
- t, err = self:flash(self._zImageExtraVersion)
- if not t then
- log:warn("flash kernel failed")
- return nil, err
- end
-
- t, err = self:flash("root.cramfs")
- if not t then
- log:warn("flash filesystem failed")
return nil, err
end
@@ -159,6 +136,26 @@
end
+function processSink(self, prog)
+ local fh, err = io.popen(prog, "w")
+
+ if fh == nil then
+ return function()
+ return false, err
+ end
+ end
+
+ return function(chunk, err)
+ if chunk then
+ return fh:write(chunk)
+ else
+ fh:close()
+ return false
+ end
+ end
+end
+
+
-- zip filter sink to process upgrade zip file
function upgradeSink(self)
local fhsink = nil
@@ -239,9 +236,10 @@
length = 0
-- open file handle
- -- FIXME erase and write flash here
- local fh, err = io.open("/tmp/" .. part,
"w+")
- fhsink = ltn12.sink.file(fh, err)
+ local cmd = "/usr/sbin/nandwrite -qp "
.. self._mtd[part] .. " -"
+ log:warn("flash: ", cmd)
+
+ fhsink = self:processSink(cmd)
end
return 1
@@ -446,22 +444,11 @@
-- flash the image from tmp file
-function flash(self, part)
+function flashErase(self, part)
local cmd, proc
-- erase flash
cmd = "/usr/sbin/flash_eraseall -q " .. self._mtd[part]
- log:warn("flash: ", cmd)
-
- proc = Process(jnt, cmd)
- proc:read(nullProcessSink)
- while proc:status() ~= "dead" do
- -- wait for the process to complete
- Task:yield()
- end
-
- -- write flash
- cmd = "/usr/sbin/nandwrite -qp " .. self._mtd[part] .. " " .. "/tmp/"
.. part
log:warn("flash: ", cmd)
proc = Process(jnt, cmd)
Modified:
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
URL:
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt?rev=1959&root=Jive&r1=1958&r2=1959&view=diff
==============================================================================
---
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
(original)
+++
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/strings.txt
Thu Feb 14 07:45:13 2008
@@ -83,15 +83,6 @@
IT \nCopia aggiornamento in corso
NL \nUpdate wordt gekopieerd
-UPDATE_WRITE
- DA \nInstallerer opdatering
- DE \nAktualisierung wird installiert
- EN \nInstalling Update
- ES \nInstalando actualización
- FR \nInstallation de la mise à jour
- IT \nInstallazione aggiornamento in corso
- NL \nUpdate wordt geïnstalleerd
-
UPDATE_VERIFY
DA \nBekræfter opdatering
DE \nAktualisierung wird geprüft
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins