Description
Enviroonment
mbed-os-example-blinky
7cc5542 Merge pull request #161 from adbridge/master
mbed-os
f2abdcb Merge pull request #9639 from michalpasztamobica/esp8266_connect_timeout
Description
I would like to override memory spec of cmsis pack on NUMAKER_PFM_M2351 but meet inconsistent symbol generation behavior when overriding target.mbed_ram_start
/target.mbed_ram_start
. To re-produce my test results, run mbed compile -m NUMAKER_PFM_M2351 -t ARMC6
under mbed-os-example-blinky directory.
-
No override and then compile
Get:
BUILD/NUMAKER_PFM_M2351/ARMC6/.profile-c:{ "flags": [ "-D__ASSERT_MSG", "-std=gnu99", "--target=arm-arm-none-eabi", "-DMBED_RAM_SIZE=0x18000", "-DMBED_RAM_START=0x20000000", "-DMBED_ROM_SIZE=0x80000", "-DMBED_ROM_START=0x0",
MBED_RAM_START
/MBED_RAM_SIZE
are generated from cmsis pack. -
Override and then compile
Override rom/ram spec:
mbed_app.json:{ "target_overrides": { ...... "NUMAKER_PFM_M2351": { "target.mbed_rom_start": "0x10040000", "target.mbed_rom_size": "0x40000", "target.mbed_ram_start": "0x30008000", "target.mbed_ram_size": "0x10000"
Get:
BUILD/NUMAKER_PFM_M2351/ARMC6/.profile-c:{ "flags": [ "-D__ASSERT_MSG", "-std=gnu99", "--target=arm-arm-none-eabi", "-DAPPLICATION_ADDR=0x10040000", "-DAPPLICATION_RAM_ADDR=0x30008000", "-DAPPLICATION_RAM_SIZE=0x10000", "-DAPPLICATION_SIZE=0x40000", "-DMBED_ROM_SIZE=0x40000", "-DMBED_ROM_START=0x10040000",
APPLICATION_RAM_ADDR
/APPLICATION_RAM_SIZE
are generated fromtarget.mbed_ram_start
/target.mbed_ram_size
overrides, butMBED_RAM_START
/MBED_RAM_SIZE
are not generated. -
Override + change to
get_all_active_memories
In mbed-os/tools/config/init.py, if I comment outif (self.has_ram_regions):
indef get_all_active_memories
:
mbed-os\tools\config_init_.py:def get_all_active_memories(self, memory_list): """Get information of all available rom/ram memories in the form of dictionary {Memory: [start_addr, size]}. Takes in the argument, a list of all available regions within the ram/rom memory""" # Override rom_start/rom_size # # This is usually done for a target which: # 1. Doesn't support CMSIS pack, or # 2. Supports TrustZone and user needs to change its flash partition ...... for memory in valid_memories: mem_start, mem_size = self._get_mem_specs( [memory], cmsis_part, "Not enough information in CMSIS packs to build a bootloader " "project" ) if memory=='IROM1' or memory=='PROGRAM_FLASH': mem_start = getattr(self.target, "mbed_rom_start", False) or mem_start mem_size = getattr(self.target, "mbed_rom_size", False) or mem_size memory = 'ROM' elif memory == 'IRAM1' or memory == 'SRAM_OC' or \ memory == 'SRAM_UPPER' or memory == 'SRAM': # Comment out for generating MBED_RAM_SIZE/MBED_RAM_START symbols #if (self.has_ram_regions): # continue mem_start = getattr(self.target, "mbed_ram_start", False) or mem_start mem_size = getattr(self.target, "mbed_ram_size", False) or mem_size memory = 'RAM'
Get:
BUILD/NUMAKER_PFM_M2351/ARMC6/.profile-c:{ "flags": [ "-D__ASSERT_MSG", "-std=gnu99", "--target=arm-arm-none-eabi", "-DAPPLICATION_ADDR=0x10040000", "-DAPPLICATION_RAM_ADDR=0x30008000", "-DAPPLICATION_RAM_SIZE=0x10000", "-DAPPLICATION_SIZE=0x40000", "-DMBED_RAM_SIZE=0x10000", "-DMBED_RAM_START=0x30008000", "-DMBED_ROM_SIZE=0x40000", "-DMBED_ROM_START=0x10040000",
Both
APPLICATION_RAM_ADDR
/APPLICATION_RAM_SIZE
andMBED_RAM_START
/MBED_RAM_SIZE
are generated fromtarget.mbed_ram_start
/target.mbed_ram_size
overrides. ButMBED_RAM_START
/MBED_RAM_SIZE
are duplicated in BUILD/NUMAKER_PFM_M2351/ARMC6/.profile-ld:{ "flags": [ "--cpu=cortex-m23", "--keep=os_cb_sections", "--legacyalign", "--predefine=\"-DDOMAIN_NS=0x1\"", "--predefine=\"-DMBED_APP_SIZE=0x40000\"", "--predefine=\"-DMBED_APP_START=0x10040000\"", "--predefine=\"-DMBED_BOOT_STACK_SIZE=4096\"", "--predefine=\"-DMBED_RAM_SIZE=0x10000\"", "--predefine=\"-DMBED_RAM_SIZE=0x10000\"", "--predefine=\"-DMBED_RAM_START=0x30008000\"", "--predefine=\"-DMBED_RAM_START=0x30008000\"", "--predefine=\"-DMBED_ROM_SIZE=0x40000\"", "--predefine=\"-DMBED_ROM_START=0x10040000\"",
What I expect is that MBED_RAM_START
/MBED_RAM_SIZE
are available in both .profile-c (for source files) and .profile-ld (for linker files) regardless of override.
Issue request type
[ ] Question
[ ] Enhancement
[X] Bug