diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_ARM_STD/stm32h743xI.sct b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_ARM_STD/stm32h743xI.sct index 6310a0cb42..be31314ac4 100644 --- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_ARM_STD/stm32h743xI.sct +++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_ARM_STD/stm32h743xI.sct @@ -28,9 +28,6 @@ ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; STM32F767ZI: 2048KB FLASH (0x200000) + 128KB DTCM RAM (0x20000) -; 166 vectors = 664 bytes (0x298) to be reserved in RAM - #if !defined(MBED_APP_START) #define MBED_APP_START 0x08000000 #endif @@ -45,8 +42,8 @@ #define Stack_Size MBED_BOOT_STACK_SIZE -#define MBED_RAM_START 0x20000000 -#define MBED_RAM_SIZE 0x20000 +#define MBED_RAM_START 0x24000000 +#define MBED_RAM_SIZE 0x80000 #define MBED_VECTTABLE_RAM_START (MBED_RAM_START) #define MBED_VECTTABLE_RAM_SIZE 0x298 #define MBED_CRASH_REPORT_RAM_START (MBED_VECTTABLE_RAM_START + MBED_VECTTABLE_RAM_SIZE) @@ -61,7 +58,7 @@ LR_IROM1 MBED_APP_START MBED_APP_SIZE { ; load region size_region *(InRoot$$Sections) .ANY (+RO) } - + RW_m_crash_data MBED_CRASH_REPORT_RAM_START EMPTY MBED_CRASH_REPORT_RAM_SIZE { ; RW data } @@ -71,4 +68,18 @@ LR_IROM1 MBED_APP_START MBED_APP_SIZE { ; load region size_region ARM_LIB_STACK (MBED_RAM0_START+MBED_RAM0_SIZE) EMPTY -Stack_Size { ; stack } + + RW_DMARxDscrTab 0x30040000 0x60 { + *(.RxDecripSection) + } + RW_DMATxDscrTab 0x30040100 0x140 { + *(.TxDecripSection) + } + RW_Rx_Buffb 0x30040400 0x1800 { + *(.RxArraySection) + } + RW_Eth_Ram 0x30044000 0x4000 { + *(.ethusbram) + } + } diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_GCC_ARM/STM32H743xI.ld b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_GCC_ARM/STM32H743xI.ld index 4351303f53..12dfa9020c 100644 --- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_GCC_ARM/STM32H743xI.ld +++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_GCC_ARM/STM32H743xI.ld @@ -18,8 +18,12 @@ M_CRASH_DATA_RAM_SIZE = 0x100; MEMORY { - FLASH (rx) : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE - RAM (rwx) : ORIGIN = 0x20000298, LENGTH = 128K - 0x298 + FLASH (rx) : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE + DTCMRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K + RAM (xrw) : ORIGIN = 0x24000298, LENGTH = 512K - 0x298 /* end = 0x24080000 */ + RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K + RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K + ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K } /* Linker script to place sections and symbol values. Should be used together @@ -180,4 +184,19 @@ SECTIONS /* Check if data + heap + stack exceeds RAM limit */ ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + .lwip_sec (NOLOAD) : { + . = ABSOLUTE(0x30040000); + *(.RxDecripSection) + + . = ABSOLUTE(0x30040100); + *(.TxDecripSection) + + . = ABSOLUTE(0x30040400); + *(.RxArraySection) + + . = ABSOLUTE(0x30044000); + *(.ethusbram) + + } >RAM_D2 AT> FLASH } diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_IAR/stm32h743xI.icf b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_IAR/stm32h743xI.icf index 23cfdbc51c..cd92feee9c 100644 --- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_IAR/stm32h743xI.icf +++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H743xI/device/TOOLCHAIN_IAR/stm32h743xI.icf @@ -7,15 +7,15 @@ define symbol __intvec_start__ = MBED_APP_START; define symbol __region_ROM_start__ = MBED_APP_START; define symbol __region_ROM_end__ = MBED_APP_START + MBED_APP_SIZE - 1; -// 128KB DTCM RAM (0x20000) +// 512KB RAM (0x80000) // Vector table dynamic copy: 166 vectors = 664 bytes (0x298) reserved // Crash data area: 256 bytes (0x100) reserved -define symbol __NVIC_start__ = 0x20000000; -define symbol __NVIC_end__ = 0x20000297; -define symbol __region_CRASH_DATA_RAM_start__ = 0x20000298; // Aligned on 8 bytes -define symbol __region_CRASH_DATA_RAM_end__ = 0x20000397; -define symbol __region_RAM_start__ = 0x20000398; // Aligned on 8 bytes -define symbol __region_RAM_end__ = 0x20000000 + 0x20000 - 1; +define symbol __NVIC_start__ = 0x24000000; +define symbol __NVIC_end__ = 0x24000297; +define symbol __region_CRASH_DATA_RAM_start__ = 0x24000298; // Aligned on 8 bytes +define symbol __region_CRASH_DATA_RAM_end__ = 0x24000397; +define symbol __region_RAM_start__ = 0x24000398; // Aligned on 8 bytes +define symbol __region_RAM_end__ = 0x24000000 + 0x80000 - 1; // Memory regions define memory mem with size = 4G; @@ -23,6 +23,10 @@ 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 region CRASH_DATA_RAM_region = mem:[from __region_CRASH_DATA_RAM_start__ to __region_CRASH_DATA_RAM_end__]; +// Memory region used for ethernet +define region eth_mem_region = mem:[from 0x30044000 to 0x30048000 ]; +place in eth_mem_region { section .ethusbram }; + // Crash data symbols define exported symbol __CRASH_DATA_RAM_START__ = __region_CRASH_DATA_RAM_start__; define exported symbol __CRASH_DATA_RAM_END__ = __region_CRASH_DATA_RAM_end__;