stm32/boards/LEGO_HUB_NO6/appupdate: Detect filesystem size at runtime.
This changes appupdate.py to get the filesystem size at runtime. This will allow the code to be shared with LEGO_HUB_NO7 which has a similar flash chip with a different size. Signed-off-by: David Lechner <david@pybricks.com>
This commit is contained in:
parent
7cc6df3303
commit
9a51273d96
|
@ -2,13 +2,20 @@
|
|||
# MIT license; Copyright (c) 2022 Damien P. George
|
||||
|
||||
from micropython import const
|
||||
import struct, machine, fwupdate, spiflash
|
||||
import struct, machine, fwupdate, spiflash, pyb
|
||||
|
||||
_IOCTL_BLOCK_COUNT = const(4)
|
||||
_IOCTL_BLOCK_SIZE = const(5)
|
||||
|
||||
_SPIFLASH_UPDATE_KEY_ADDR = const(1020 * 1024)
|
||||
_SPIFLASH_UPDATE_KEY_VALUE = const(0x12345678)
|
||||
|
||||
_FILESYSTEM_ADDR = const(0x8000_0000 + 1024 * 1024)
|
||||
_FILESYSTEM_LEN = const(31 * 1024 * 1024)
|
||||
|
||||
# Roundabout way to get actual filesystem size from config.
|
||||
# This takes into account the 1M "reserved" section of the flash memory.
|
||||
flash = pyb.Flash(start=0)
|
||||
_FILESYSTEM_LEN = flash.ioctl(_IOCTL_BLOCK_COUNT, None) * flash.ioctl(_IOCTL_BLOCK_SIZE, None)
|
||||
|
||||
|
||||
def update_app(filename):
|
||||
|
@ -30,6 +37,8 @@ def update_app(filename):
|
|||
baudrate=50_000_000,
|
||||
)
|
||||
cs = machine.Pin(machine.Pin.board.FLASH_NSS, machine.Pin.OUT, value=1)
|
||||
|
||||
# We can't use pyb.Flash() because we need to write to the "reserved" 1M area.
|
||||
flash = spiflash.SPIFlash(spi, cs)
|
||||
|
||||
# Write the update key and elements to the SPI flash.
|
||||
|
|
Loading…
Reference in New Issue