diff --git a/targets/CMSIS-OS/ChibiOS/MBN_QUAIL/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/MBN_QUAIL/CMakeLists.txt index fce43366ef..a1841f619b 100644 --- a/targets/CMSIS-OS/ChibiOS/MBN_QUAIL/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/MBN_QUAIL/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x9000") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/NETDUINO3_WIFI/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/NETDUINO3_WIFI/CMakeLists.txt index 8f2a87262a..84886728e8 100644 --- a/targets/CMSIS-OS/ChibiOS/NETDUINO3_WIFI/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/NETDUINO3_WIFI/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x9000") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/CMakeLists.txt index 606443af58..98e479155a 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x2B000") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/nanoCLR/STM32F746xG_CLR.ld b/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/nanoCLR/STM32F746xG_CLR.ld index 8f3cb067db..66fbae064f 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/nanoCLR/STM32F746xG_CLR.ld +++ b/targets/CMSIS-OS/ChibiOS/ST_NUCLEO144_F746ZG/nanoCLR/STM32F746xG_CLR.ld @@ -119,17 +119,8 @@ SECTIONS /* Code rules inclusion.*/ INCLUDE rules_code.ld -/* -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// rules_clr.ld have to be included **BEFORE** the rules_data.ld -// this is because the CRT heap (processed in rules_data.ld) takes up all the remaining free space of the memory region where it's assigned -// the size of the managed heap (processed in rules_clr.ld) is set in each target configuration -// in case it shares the same region as the CRT heap it won't have any room left if the CRT heap is assigned first -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/* +/* Data rules inclusion.*/ +INCLUDE rules_data.ld /* nanoCLR rules inclusion.*/ INCLUDE rules_clr.ld - -/* Data rules inclusion.*/ -INCLUDE rules_data.ld \ No newline at end of file diff --git a/targets/CMSIS-OS/ChibiOS/ST_NUCLEO64_F091RC/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/ST_NUCLEO64_F091RC/CMakeLists.txt index e4c55d2ac7..1ba39eb7c9 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_NUCLEO64_F091RC/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/ST_NUCLEO64_F091RC/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x2000") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/ST_STM32F429I_DISCOVERY/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/ST_STM32F429I_DISCOVERY/CMakeLists.txt index 2e60c295e5..79f04e28c7 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_STM32F429I_DISCOVERY/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/ST_STM32F429I_DISCOVERY/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x29600") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/ST_STM32F4_DISCOVERY/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/ST_STM32F4_DISCOVERY/CMakeLists.txt index 680c53ba79..13b95425bd 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_STM32F4_DISCOVERY/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/ST_STM32F4_DISCOVERY/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x196C0") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/CMakeLists.txt b/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/CMakeLists.txt index 657045bf5e..3022439bc0 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/CMakeLists.txt +++ b/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/CMakeLists.txt @@ -174,8 +174,8 @@ nf_set_linker_options(${NANOCLR_PROJECT_NAME}.elf TRUE) ################################################### # the size of the CLR managed heap is defined here ################################################### -set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x0") -set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__clr_managed_heap_size__=0x4B000") +set_property(TARGET ${NANOBOOTER_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x400,--defsym=__crt_heap_size__=0x400") +set_property(TARGET ${NANOCLR_PROJECT_NAME}.elf APPEND_STRING PROPERTY LINK_FLAGS ",--defsym=__main_stack_size__=0x400,--defsym=__process_stack_size__=0x800,--defsym=__crt_heap_size__=0x1800") # generate output files nf_generate_build_output_files(${NANOBOOTER_PROJECT_NAME}.elf) diff --git a/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/STM32F76xx_CLR.ld b/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/STM32F76xx_CLR.ld index 6eb478991e..c8d18b07d6 100644 --- a/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/STM32F76xx_CLR.ld +++ b/targets/CMSIS-OS/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/STM32F76xx_CLR.ld @@ -119,17 +119,8 @@ SECTIONS /* Code rules inclusion.*/ INCLUDE rules_code.ld -/* -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// rules_clr.ld have to be included **BEFORE** the rules_data.ld -// this is because the CRT heap (processed in rules_data.ld) takes up all the remaining free space of the memory region where it's assigned -// the size of the managed heap (processed in rules_clr.ld) is set in each target configuration -// in case it shares the same region as the CRT heap it won't have any room left if the CRT heap is assigned first -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/* +/* Data rules inclusion.*/ +INCLUDE rules_data.ld /* nanoCLR rules inclusion.*/ INCLUDE rules_clr.ld - -/* Data rules inclusion.*/ -INCLUDE rules_data.ld \ No newline at end of file diff --git a/targets/CMSIS-OS/ChibiOS/common/rules.ld b/targets/CMSIS-OS/ChibiOS/common/rules.ld index e2e42b2e8f..4e323fa89c 100644 --- a/targets/CMSIS-OS/ChibiOS/common/rules.ld +++ b/targets/CMSIS-OS/ChibiOS/common/rules.ld @@ -12,18 +12,8 @@ INCLUDE rules_stacks.ld /* Code rules inclusion.*/ INCLUDE rules_code.ld - -/* -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// rules_clr.ld have to be included **BEFORE** the rules_data.ld -// this is because the CRT heap (processed in rules_data.ld) takes up all the remaining free space of the memory region where it's assigned -// the size of the managed heap (processed in rules_clr.ld) is set in each target configuration -// in case it shares the same region as the CRT heap it won't have any room left if the CRT heap is assigned first -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/* +/* Data rules inclusion.*/ +INCLUDE rules_data.ld /* nanoCLR rules inclusion.*/ INCLUDE rules_clr.ld - -/* Data rules inclusion.*/ -INCLUDE rules_data.ld diff --git a/targets/CMSIS-OS/ChibiOS/common/rules_clr.ld b/targets/CMSIS-OS/ChibiOS/common/rules_clr.ld index 00916afb8c..80cedd4f5c 100644 --- a/targets/CMSIS-OS/ChibiOS/common/rules_clr.ld +++ b/targets/CMSIS-OS/ChibiOS/common/rules_clr.ld @@ -1,21 +1,21 @@ SECTIONS { - /* nanoFramework CLR managed heap section at the specified RAM section.*/ + /* nanoFramework CLR managed heap section at the specified RAM section.*/ .clr_managed_heap (NOLOAD) : { . = ALIGN(8); - PROVIDE(HeapBegin = LOADADDR(.clr_managed_heap)); __clr_managed_heap_base__ = .; - . += __clr_managed_heap_size__; + PROVIDE(HeapBegin = LOADADDR(.clr_managed_heap)); + . = ORIGIN(CLR_MANAGED_HEAP_RAM) + LENGTH(CLR_MANAGED_HEAP_RAM) - LENGTH(ramvt); . = ALIGN(8); __clr_managed_heap_end__ = .; PROVIDE(HeapEnd = .); } > CLR_MANAGED_HEAP_RAM - /* RAM space reserved for the vector table */ + /* RAM space reserved for the vector table */ .RAMVectorTable (NOLOAD) : ALIGN(4) { *(.RAMVectorTable) } > ramvt -} \ No newline at end of file +} diff --git a/targets/CMSIS-OS/ChibiOS/common/rules_data.ld b/targets/CMSIS-OS/ChibiOS/common/rules_data.ld index 1986413d02..78bcf5e789 100644 --- a/targets/CMSIS-OS/ChibiOS/common/rules_data.ld +++ b/targets/CMSIS-OS/ChibiOS/common/rules_data.ld @@ -266,7 +266,8 @@ SECTIONS { . = ALIGN(8); __heap_base__ = .; - . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); + . += __crt_heap_size__; + . = ALIGN(8); __heap_end__ = .; } > HEAP_RAM }