diff options
Diffstat (limited to 'ports/esp8266/modules/flashbdev.py')
-rw-r--r-- | ports/esp8266/modules/flashbdev.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/ports/esp8266/modules/flashbdev.py b/ports/esp8266/modules/flashbdev.py index 404cf3666..652fe9a4b 100644 --- a/ports/esp8266/modules/flashbdev.py +++ b/ports/esp8266/modules/flashbdev.py @@ -2,26 +2,23 @@ import esp class FlashBdev: - SEC_SIZE = 4096 - RESERVED_SECS = 1 - START_SEC = esp.flash_user_start() // SEC_SIZE + RESERVED_SECS - NUM_BLK = 0x6B - RESERVED_SECS - def __init__(self, blocks=NUM_BLK): + def __init__(self, start_sec, blocks): + self.start_sec = start_sec self.blocks = blocks def readblocks(self, n, buf, off=0): # print("readblocks(%s, %x(%d), %d)" % (n, id(buf), len(buf), off)) - esp.flash_read((n + self.START_SEC) * self.SEC_SIZE + off, buf) + esp.flash_read((n + self.start_sec) * self.SEC_SIZE + off, buf) def writeblocks(self, n, buf, off=None): # print("writeblocks(%s, %x(%d), %d)" % (n, id(buf), len(buf), off)) # assert len(buf) <= self.SEC_SIZE, len(buf) if off is None: - esp.flash_erase(n + self.START_SEC) + esp.flash_erase(n + self.start_sec) off = 0 - esp.flash_write((n + self.START_SEC) * self.SEC_SIZE + off, buf) + esp.flash_write((n + self.start_sec) * self.SEC_SIZE + off, buf) def ioctl(self, op, arg): # print("ioctl(%d, %r)" % (op, arg)) @@ -30,7 +27,7 @@ class FlashBdev: if op == 5: # MP_BLOCKDEV_IOCTL_BLOCK_SIZE return self.SEC_SIZE if op == 6: # MP_BLOCKDEV_IOCTL_BLOCK_ERASE - esp.flash_erase(arg + self.START_SEC) + esp.flash_erase(arg + self.start_sec) return 0 @@ -38,5 +35,8 @@ size = esp.flash_size() if size < 1024 * 1024: bdev = None else: + start_sec = esp.flash_user_start() // FlashBdev.SEC_SIZE + if start_sec < 256: + start_sec += 1 # Reserve space for native code # 20K at the flash end is reserved for SDK params storage - bdev = FlashBdev((size - 20480) // FlashBdev.SEC_SIZE - FlashBdev.START_SEC) + bdev = FlashBdev(start_sec, (size - 20480) // FlashBdev.SEC_SIZE - start_sec) |