From 4f82e344877030a8ef0e83abd6818cf77df35444 Mon Sep 17 00:00:00 2001 From: svastm Date: Wed, 3 Aug 2016 16:42:28 +0200 Subject: [PATCH] [STM32F207ZG] Fix IAR memory init The icf file was not align with other targets and they were no reserved space for NVIC vectors. --- .../TOOLCHAIN_IAR/stm32f207xx.icf | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/hal/targets/cmsis/TARGET_STM/TARGET_STM32F2/TARGET_NUCLEO_F207ZG/TOOLCHAIN_IAR/stm32f207xx.icf b/hal/targets/cmsis/TARGET_STM/TARGET_STM32F2/TARGET_NUCLEO_F207ZG/TOOLCHAIN_IAR/stm32f207xx.icf index 2fbbf41a41..97d4ed2490 100644 --- a/hal/targets/cmsis/TARGET_STM/TARGET_STM32F2/TARGET_NUCLEO_F207ZG/TOOLCHAIN_IAR/stm32f207xx.icf +++ b/hal/targets/cmsis/TARGET_STM/TARGET_STM32F2/TARGET_NUCLEO_F207ZG/TOOLCHAIN_IAR/stm32f207xx.icf @@ -1,31 +1,31 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x08000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; -define symbol __ICFEDIT_region_ROM_end__ = 0x080FFFFF; -define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x20020000; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x400; -define symbol __ICFEDIT_size_heap__ = 0x200; -/**** End of ICF editor section. ###ICF###*/ +/* [ROM = 1024kb = 0x100000] */ +define symbol __intvec_start__ = 0x08000000; +define symbol __region_ROM_start__ = 0x08000000; +define symbol __region_ROM_end__ = 0x080FFFFF; +/* [RAM = 128kb = 0x20000] Vector table dynamic copy: 97 vectors = 388 bytes (0x184) to be reserved in RAM */ +define symbol __NVIC_start__ = 0x20000000; +define symbol __NVIC_end__ = 0x20000187; /*aligned on 8 bytes */ +define symbol __region_RAM_start__ = 0x20000188; +define symbol __region_RAM_end__ = 0x2001FFFF; +/* Memory regions */ define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; +define region ROM_region = mem:[from __region_ROM_start__ to __region_ROM_end__]; +define region RAM_region = mem:[from __region_RAM_start__ to __region_RAM_end__]; -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; +/* Stack and Heap */ +/*Heap 1/4 of ram and stack 1/8*/ +define symbol __size_cstack__ = 0x4000; +define symbol __size_heap__ = 0x8000; +define block CSTACK with alignment = 8, size = __size_cstack__ { }; +define block HEAP with alignment = 8, size = __size_heap__ { }; +define block STACKHEAP with fixed order { block HEAP, block CSTACK }; -initialize by copy { readwrite }; +initialize by copy with packing = zeros { readwrite }; do not initialize { section .noinit }; -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; +place at address mem:__intvec_start__ { readonly section .intvec }; place in ROM_region { readonly }; -place in RAM_region { readwrite, - block CSTACK, block HEAP }; +place in RAM_region { readwrite, block STACKHEAP };