diff --git a/pyocd/target/pack/flm_region_builder.py b/pyocd/target/pack/flm_region_builder.py index d680a022a..e532b6f88 100644 --- a/pyocd/target/pack/flm_region_builder.py +++ b/pyocd/target/pack/flm_region_builder.py @@ -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, @@ -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 diff --git a/test/unit/test_pack.py b/test/unit/test_pack.py index d80525af6..e4af9c531 100644 --- a/test/unit/test_pack.py +++ b/test/unit/test_pack.py @@ -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 # @@ -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)