mirror of
https://github.com/MikronMIK32/mik32-uploader.git
synced 2026-01-01 13:37:03 +03:00
feat: boot mode
This commit is contained in:
parent
18a90599d4
commit
93b0c589dd
@ -47,6 +47,16 @@ class MemoryType(Enum):
|
|||||||
UNKNOWN = -1
|
UNKNOWN = -1
|
||||||
|
|
||||||
|
|
||||||
|
class BootMode(Enum):
|
||||||
|
UNDEFINED = 'undefined'
|
||||||
|
EEPROM = 'eeprom'
|
||||||
|
RAM = 'ram'
|
||||||
|
SPIFI = 'spifi'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.value
|
||||||
|
|
||||||
|
|
||||||
class MemorySection(NamedTuple):
|
class MemorySection(NamedTuple):
|
||||||
type: MemoryType
|
type: MemoryType
|
||||||
offset: int
|
offset: int
|
||||||
@ -200,13 +210,29 @@ class Pages(NamedTuple):
|
|||||||
pages_eeprom: Dict[int, List[int]]
|
pages_eeprom: Dict[int, List[int]]
|
||||||
pages_spifi: Dict[int, List[int]]
|
pages_spifi: Dict[int, List[int]]
|
||||||
|
|
||||||
|
|
||||||
|
def filter_segments(segments: List[Segment], memory_type: MemoryType, boot_type: MemoryType = MemoryType.UNKNOWN) -> List[Segment]:
|
||||||
|
return list(
|
||||||
|
filter(
|
||||||
|
lambda segment:
|
||||||
|
(segment.memory is not None) and
|
||||||
|
((segment.memory.type == memory_type) or (
|
||||||
|
(segment.memory.type == MemoryType.BOOT) and
|
||||||
|
(boot_type == memory_type)
|
||||||
|
)), segments
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def form_pages(segments: List[Segment]) -> Pages:
|
def form_pages(segments: List[Segment]) -> Pages:
|
||||||
pages_eeprom = segments_to_pages(list(filter(
|
pages_eeprom = segments_to_pages(
|
||||||
lambda segment: (segment.memory is not None) and (segment.memory.type == MemoryType.EEPROM), segments)
|
filter_segments(segments, MemoryType.EEPROM),
|
||||||
), 128)
|
128
|
||||||
pages_spifi = segments_to_pages(list(filter(
|
)
|
||||||
lambda segment: (segment.memory is not None) and (segment.memory.type == MemoryType.SPIFI), segments)
|
pages_spifi = segments_to_pages(
|
||||||
), 256)
|
filter_segments(segments, MemoryType.SPIFI),
|
||||||
|
256
|
||||||
|
)
|
||||||
|
|
||||||
return Pages(pages_eeprom, pages_spifi)
|
return Pages(pages_eeprom, pages_spifi)
|
||||||
|
|
||||||
@ -224,6 +250,7 @@ def upload_file(
|
|||||||
openocd_target=openocd_target_path,
|
openocd_target=openocd_target_path,
|
||||||
adapter_speed=adapter_default_speed,
|
adapter_speed=adapter_default_speed,
|
||||||
is_open_console=False,
|
is_open_console=False,
|
||||||
|
boot_mode=BootMode.UNDEFINED
|
||||||
) -> int:
|
) -> int:
|
||||||
"""
|
"""
|
||||||
Write ihex or binary file into MIK32 EEPROM or external flash memory
|
Write ihex or binary file into MIK32 EEPROM or external flash memory
|
||||||
@ -296,7 +323,8 @@ def createParser():
|
|||||||
'--openocd-target', dest='openocd_target', default=openocd_target_path)
|
'--openocd-target', dest='openocd_target', default=openocd_target_path)
|
||||||
parser.add_argument('--open-console', dest='open_console',
|
parser.add_argument('--open-console', dest='open_console',
|
||||||
action='store_true', default=False)
|
action='store_true', default=False)
|
||||||
# parser.add_argument('-b', '--boot-mode', default='undefined')
|
parser.add_argument('-b', '--boot-mode', dest='boot_mode', type=BootMode,
|
||||||
|
choices=list(BootMode), default=BootMode.UNDEFINED)
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
@ -319,6 +347,7 @@ if __name__ == '__main__':
|
|||||||
openocd_target=namespace.openocd_target,
|
openocd_target=namespace.openocd_target,
|
||||||
adapter_speed=namespace.adapter_speed,
|
adapter_speed=namespace.adapter_speed,
|
||||||
is_open_console=namespace.open_console,
|
is_open_console=namespace.open_console,
|
||||||
|
boot_mode=namespace.boot_mode
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
print("Nothing to upload")
|
print("Nothing to upload")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user