Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions pyocd/target/pack/flm_region_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,10 @@ def _update_flash_attributes(
if create_subregions:
self._add_flash_subregions(region, pack_algo, page_size, algo)
else:
# Set attributes on parent flash region. The parent region still has to have these attributes
# even though there are subregions.
# Set parent flash region attributes without creating subregions.
region.attributes['page_size'] = page_size
region.attributes['sector_size'] = sector_sizes[0][1]
region.attributes['erased_byte_value'] = pack_algo.flash_info.value_empty

def _add_flash_subregions(
self,
Expand Down Expand Up @@ -228,3 +228,4 @@ def _add_flash_subregions(
# even though there are subregions.
region.attributes['page_size'] = page_size
region.attributes['sector_size'] = max_sector_size
region.attributes['erased_byte_value'] = pack_algo.flash_info.value_empty
18 changes: 17 additions & 1 deletion test/unit/test_pack.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# pyOCD debugger
# Copyright (c) 2019-2020 Arm Limited
# Copyright (c) 2019-2020,2026 Arm Limited
# Copyright (c) 2021-2023 Chris Reed
# SPDX-License-Identifier: Apache-2.0
#
Expand Down Expand Up @@ -337,6 +337,22 @@ def test_multiple_sector_size(self, builder: FlmFlashRegionBuilder, stm32f42mflm
assert submap[4].sector_size == 0x10000
assert submap[5].sector_size == 0x20000

def test_single_sector_size_erased_value(self, builder: FlmFlashRegionBuilder, nrf5340appflm, monkeypatch):
monkeypatch.setattr(nrf5340appflm.flash_info, 'value_empty', 0x00)
flash = memory_map.FlashRegion(0, length=0x200000, flm=nrf5340appflm)
assert flash.erased_byte_value == 0xff
assert builder.finalise_region(flash)
assert not flash.has_subregions
assert flash.erased_byte_value == 0x00

def test_multiple_sector_size_erased_value(self, builder: FlmFlashRegionBuilder, stm32f42mflm, monkeypatch):
monkeypatch.setattr(stm32f42mflm.flash_info, 'value_empty', 0x00)
flash = memory_map.FlashRegion(0x08000000, length=0x200000, flm=stm32f42mflm)
assert builder.finalise_region(flash)
assert flash.has_subregions
assert flash.erased_byte_value == 0x00
assert all(subregion.erased_byte_value == 0x00 for subregion in flash.submap)

def test_ram_select_default(self, builder: FlmFlashRegionBuilder, nrf5340appflm):
flash = memory_map.FlashRegion(0, length=0x200000, flm=nrf5340appflm)
builder.finalise_region(flash)
Expand Down
Loading