chiark / gitweb /
Send firmware update per page size. The bootloader expects this.
authordaid303 <daid303@gmail.com>
Tue, 6 Nov 2012 07:50:53 +0000 (08:50 +0100)
committerdaid303 <daid303@gmail.com>
Tue, 6 Nov 2012 07:50:53 +0000 (08:50 +0100)
Cura/avr_isp/stk500v2.py

index 245db8e4df6e1cf20c125e0979f722a3740b3c7f..8e246b91ef3aed080f90d3d0ee55838e48042b0f 100644 (file)
@@ -58,15 +58,16 @@ class Stk500v2(ispBase.IspBase):
        \r
        def writeFlash(self, flashData):\r
                #Set load addr to 0, in case we have more then 64k flash we need to enable the address extension\r
-               flashSize = self.chip['pageSize'] * 2 * self.chip['pageCount']\r
+               pageSize = self.chip['pageSize'] * 2\r
+               flashSize = pageSize * self.chip['pageCount']\r
                if flashSize > 0xFFFF:\r
                        self.sendMessage([0x06, 0x80, 0x00, 0x00, 0x00])\r
                else:\r
                        self.sendMessage([0x06, 0x00, 0x00, 0x00, 0x00])\r
                \r
-               loadCount = (len(flashData) + 0xFF) / 0x100\r
+               loadCount = (len(flashData) + pageSize - 1) / pageSize\r
                for i in xrange(0, loadCount):\r
-                       recv = self.sendMessage([0x13, 0x01, 0x00, 0xc1, 0x0a, 0x40, 0x4c, 0x20, 0x00, 0x00] + flashData[(i * 0x100):(i * 0x100 + 0x100)])\r
+                       recv = self.sendMessage([0x13, pageSize >> 8, pageSize & 0xFF, 0xc1, 0x0a, 0x40, 0x4c, 0x20, 0x00, 0x00] + flashData[(i * pageSize):(i * pageSize + pageSize)])\r
                        if self.progressCallback != None:\r
                                self.progressCallback(i + 1, loadCount*2)\r
        \r