# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Memory tools default configuration for Qorvo QPG.

{
    'section': {
        # By default, only these sections will be included
        # when operating by sections.
        'default': ['.text', '.data', '.bss']
    },
    'symbol': {
        'free': {
            # These symbols mark the start or end of areas where memory that
            # does not belong to any symbol is considered unused (rather than
            # a gap that may be in use for some non-symbol purpose, e.g. string
            # constants or alignment).
            'start': ['_sheap', '__dyn_heap_start'],
            'end': ['_eretain', '_eram', '_estack'],
        }
    },
    'region': {
        # Regions are sets of sections that can be used for aggregate reports.
        'sections': {
            'FLASH': [
                '.text',
                '.rom',
                '.native_user_license',
                '.isr_vector',
                '.ARM.exidx',
            ],
            'RAM': [
                '.data',
                '.bss',
                '.heap',
                '.crc',
                '.mw_crc',
                '.ret_hw',
                '.ret_sw',
                '.unused_area',
                '.pkey',
                '.pufr',
                '.lower_ram_retain',
                '.lower_ram_retain_gpmicro_accessible',
                '.higher_ram_noretain',
                '.gpNVM',
            ]
        }
    },
    'collect': {
        # Strip these prefixes from compilation unit paths.
        'prefix': ['/mnt/c/Projects', '/mnt/c']
    },
}
