From 1da915ace94b631914c768efcb878e0a6393195e Mon Sep 17 00:00:00 2001 From: Wojtek Rzepecki Date: Fri, 13 Aug 2021 09:02:17 +0200 Subject: [PATCH] [BH-777] Add Bell specific ld script configuration Added bell specific ld script configuration for board memory layout --- board/rt1051/CMakeLists.txt | 8 ++++++ board/rt1051/bellpx/CMakeLists.txt | 8 ++++++ board/rt1051/bellpx/memory_bell_P1.ld | 25 +++++++++++++++++++ board/rt1051/crashdump/crashcatcher_impl.cpp | 2 +- board/rt1051/puretx/CMakeLists.txt | 19 ++++++++++++++ .../memory_T6.ld => puretx/memory_pure_T6.ld} | 0 .../memory_T7.ld => puretx/memory_pure_T7.ld} | 0 cmake/modules/Board.cmake | 7 ++++-- cmake/modules/ProjectConfig.cmake | 17 ------------- module-bsp/board/rt1051/common/board.cpp | 6 ++--- 10 files changed, 69 insertions(+), 23 deletions(-) create mode 100644 board/rt1051/bellpx/CMakeLists.txt create mode 100644 board/rt1051/bellpx/memory_bell_P1.ld create mode 100644 board/rt1051/puretx/CMakeLists.txt rename board/rt1051/{ldscripts/memory_T6.ld => puretx/memory_pure_T6.ld} (100%) rename board/rt1051/{ldscripts/memory_T7.ld => puretx/memory_pure_T7.ld} (100%) diff --git a/board/rt1051/CMakeLists.txt b/board/rt1051/CMakeLists.txt index b07651adbfa21cb903cd245fc05e85c723ba4d54..dfb432b946c37af0d3577c2dfb53827288f34eb2 100644 --- a/board/rt1051/CMakeLists.txt +++ b/board/rt1051/CMakeLists.txt @@ -1,3 +1,11 @@ +add_subdirectory(${BOARD}) + +if (${MEMORY_LINKER_FILE_PATH} STREQUAL "") + message(FATAL_ERROR "Linker RAM layout not provided") +endif() + +set (CMAKE_EXE_LINKER_FLAGS "-nostdlib -Xlinker --gc-sections -Xlinker --sort-section=alignment -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb -Xlinker -print-memory-usage -T ${LDSCRIPTSDIR}/libs.ld -T ${MEMORY_LINKER_FILE_PATH} -T ${LDSCRIPTSDIR}/sections.ld -nostartfiles" CACHE INTERNAL "") + target_sources(board PRIVATE _exit.c diff --git a/board/rt1051/bellpx/CMakeLists.txt b/board/rt1051/bellpx/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..c97dfddb2f149874571c7f10d9050a67c069db11 --- /dev/null +++ b/board/rt1051/bellpx/CMakeLists.txt @@ -0,0 +1,8 @@ +target_compile_definitions( + board + PUBLIC + PROJECT_CONFIG_USER_DYNMEM_SIZE=9*1024*1024 + HW_SDRAM_64_MB=0 +) + +set (MEMORY_LINKER_FILE_PATH "${CMAKE_CURRENT_LIST_DIR}/memory_bell_P1.ld" CACHE INTERNAL "") diff --git a/board/rt1051/bellpx/memory_bell_P1.ld b/board/rt1051/bellpx/memory_bell_P1.ld new file mode 100644 index 0000000000000000000000000000000000000000..2f5472057ebf7d322e3fc82c0a9bc817f0bb287b --- /dev/null +++ b/board/rt1051/bellpx/memory_bell_P1.ld @@ -0,0 +1,25 @@ +/* + * (c) Code Red Technologies Ltd, 2008-2013 + * (c) NXP Semiconductors 2013-2018 + * Generated linker script file for MIMXRT1052xxxxB + * Created from memory.ldt by FMCreateLinkMemory + * Using Freemarker v2.3.23 + * MCUXpresso IDE v10.2.0 [Build 759] [2018-05-15] on 2018-07-30 10:43:20 + * + * Modified by Mudita + */ +MEMORY +{ + /******************************** WARNING *******************************/ + /* */ + /* must be kept in sync with 'board/rt1051/crashdump/crashcatcher_impl.cpp' */ + /* */ + /****************************************************************************/ + + /* Define each memory region */ + SRAM_OC (rwx) : ORIGIN = 0x20200000, LENGTH = 0x10000 /* 64K bytes (alias RAM) */ + /*SRAM_ITC (rwx) : ORIGIN = 0x0, LENGTH = 0x0*/ /* 0K bytes (alias RAM2) */ + SRAM_DTC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x70000 /* 448K bytes (alias RAM3) */ + BOARD_SDRAM_TEXT (rx) : ORIGIN = 0x80000000, LENGTH = 0x0620000 /* 5.something M bytes for application code */ + BOARD_SDRAM_HEAP (rwx) : ORIGIN = 0x80620000, LENGTH = 0x9e0000 /* 9.something M bytes for heap (alias RAM4) */ +} diff --git a/board/rt1051/crashdump/crashcatcher_impl.cpp b/board/rt1051/crashdump/crashcatcher_impl.cpp index 454b6f2a090705519e8acf20e48056ea9be56f2c..007dd16febc3d369e752ed8e2241049bf0431b02 100644 --- a/board/rt1051/crashdump/crashcatcher_impl.cpp +++ b/board/rt1051/crashdump/crashcatcher_impl.cpp @@ -20,7 +20,7 @@ const CrashCatcherMemoryRegion *CrashCatcher_GetMemoryRegions(void) {0x20000000, 0x20070000, CRASH_CATCHER_BYTE}, // intentionally skip text section // BOARD_SDRAM_HEAP -#if defined(PURE_SDRAM_64_MB) && (PURE_SDRAM_64_MB == 1) +#if defined(HW_SDRAM_64_MB) && (HW_SDRAM_64_MB == 1) {0x80620000, 0x84000000, CRASH_CATCHER_BYTE}, #else {0x80620000, 0x81000000, CRASH_CATCHER_BYTE}, diff --git a/board/rt1051/puretx/CMakeLists.txt b/board/rt1051/puretx/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..f2861e30d36825a91e2b1baa0e12ccac3f5a984b --- /dev/null +++ b/board/rt1051/puretx/CMakeLists.txt @@ -0,0 +1,19 @@ +if (${BOARD_REVISION} EQUAL 7) + set (MEMORY_LINKER_FILE_PATH "${CMAKE_CURRENT_LIST_DIR}/memory_pure_T7.ld" CACHE INTERNAL "") + target_compile_definitions( + board + PUBLIC + PROJECT_CONFIG_USER_DYNMEM_SIZE=28*1024*1024 + HW_SDRAM_64_MB=1 + ) +elseif (${BOARD_REVISION} EQUAL 6) + set (MEMORY_LINKER_FILE_PATH "${CMAKE_CURRENT_LIST_DIR}/memory_pure_T6.ld" CACHE INTERNAL "") + target_compile_definitions( + board + PUBLIC + PROJECT_CONFIG_USER_DYNMEM_SIZE=9*1024*1024 + HW_SDRAM_64_MB=0 + ) +else () + message (FATAL_ERROR "Unsupported board revision selected!") +endif () diff --git a/board/rt1051/ldscripts/memory_T6.ld b/board/rt1051/puretx/memory_pure_T6.ld similarity index 100% rename from board/rt1051/ldscripts/memory_T6.ld rename to board/rt1051/puretx/memory_pure_T6.ld diff --git a/board/rt1051/ldscripts/memory_T7.ld b/board/rt1051/puretx/memory_pure_T7.ld similarity index 100% rename from board/rt1051/ldscripts/memory_T7.ld rename to board/rt1051/puretx/memory_pure_T7.ld diff --git a/cmake/modules/Board.cmake b/cmake/modules/Board.cmake index ef75b61d71574c1d49ac6107f4e555d154547da0..915c42162ac66fbc714045fe442c53f39c1fc404 100644 --- a/cmake/modules/Board.cmake +++ b/cmake/modules/Board.cmake @@ -12,12 +12,15 @@ function(add_board_subdirectory) if(NOT DEFINED BOARD) message(FATAL_ERROR "Board is not defined") endif() - + if (${BOARD} STREQUAL "bellpx" OR ${BOARD} STREQUAL "puretx") add_subdirectory_if_exists(${ROOT_DIR}/rt1051) + elseif (${BOARD} STREQUAL "linux") + add_subdirectory_if_exists(${ROOT_DIR}/${BOARD}) + else () + message(FATAL_ERROR "Board unsupported") endif () - add_subdirectory_if_exists(${ROOT_DIR}/${BOARD}) endfunction() macro(select_board) diff --git a/cmake/modules/ProjectConfig.cmake b/cmake/modules/ProjectConfig.cmake index f3f6e458f1bf6008f9a3649ef36d1192e7773993..9392aedecfc201cb71221d98cb162309825ed13a 100644 --- a/cmake/modules/ProjectConfig.cmake +++ b/cmake/modules/ProjectConfig.cmake @@ -49,17 +49,6 @@ else() set (USB_DEVICE_PRODUCT_ID 0x0622 CACHE INTERNAL "Sets USB_DEVICE_PRODUCT_ID to Windows MTP Simulator Product ID") endif() -if(${BOARD} STREQUAL "puretx" AND ${BOARD_REVISION} EQUAL 7) - message("Building for T7 - 64MB SDRAM") - set (MEMORY_LINKER_FILE "memory_T7.ld") - set (PROJECT_CONFIG_USER_DYNMEM_SIZE 28*1024*1024 CACHE INTERNAL "") - set (PURE_SDRAM_64_MB 1 CACHE INTERNAL "") -else() - set (MEMORY_LINKER_FILE "memory_T6.ld") - set (PROJECT_CONFIG_USER_DYNMEM_SIZE 9*1024*1024 CACHE INTERNAL "") - set (PURE_SDRAM_64_MB 0 CACHE INTERNAL "") -endif() - #Config options described in README.md set(PROJECT_CONFIG_DEFINITIONS LOG_USE_COLOR=${LOG_USE_COLOR} @@ -68,8 +57,6 @@ set(PROJECT_CONFIG_DEFINITIONS SYSTEM_VIEW_ENABLED=${SYSTEM_VIEW_ENABLED} USBCDC_ECHO_ENABLED=${USBCDC_ECHO_ENABLED} LOG_LUART_ENABLED=${LOG_LUART_ENABLED} - PROJECT_CONFIG_USER_DYNMEM_SIZE=${PROJECT_CONFIG_USER_DYNMEM_SIZE} - PURE_SDRAM_64_MB=${PURE_SDRAM_64_MB} USB_DEVICE_VENDOR_ID=${USB_DEVICE_VENDOR_ID} USB_DEVICE_PRODUCT_ID=${USB_DEVICE_PRODUCT_ID} MAGIC_ENUM_RANGE_MAX=256 @@ -78,7 +65,3 @@ set(PROJECT_CONFIG_DEFINITIONS message(STATUS "BlueKitchen selected") set(BT_STACK "BlueKitchen") - -if(${PROJECT_TARGET} STREQUAL "TARGET_RT1051") -set(CMAKE_EXE_LINKER_FLAGS "-nostdlib -Xlinker --gc-sections -Xlinker --sort-section=alignment -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb -Xlinker -print-memory-usage -T ${LDSCRIPTSDIR}/libs.ld -T ${LDSCRIPTSDIR}/${MEMORY_LINKER_FILE} -T ${LDSCRIPTSDIR}/sections.ld -nostartfiles" CACHE INTERNAL "") -endif() diff --git a/module-bsp/board/rt1051/common/board.cpp b/module-bsp/board/rt1051/common/board.cpp index b86c0d4cbc525caac05fb4972c648af7b7eba6b9..26c3b4f3986e9676ad75709776242adf7c11d3a2 100644 --- a/module-bsp/board/rt1051/common/board.cpp +++ b/module-bsp/board/rt1051/common/board.cpp @@ -155,7 +155,7 @@ namespace bsp * BOARD_SDRAM_TEXT */ MPU->RBAR = ARM_MPU_RBAR(7, 0x80000000U); -#if defined(PURE_SDRAM_64_MB) && (PURE_SDRAM_64_MB == 1) +#if defined(HW_SDRAM_64_MB) && (HW_SDRAM_64_MB == 1) MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_RO, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB); #else MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_RO, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_16MB); @@ -173,11 +173,11 @@ namespace bsp * BOARD_SDRAM_HEAP */ MPU->RBAR = ARM_MPU_RBAR(9, reinterpret_cast(__sdram_cached_start)); -#if defined(PURE_SDRAM_64_MB) && (PURE_SDRAM_64_MB == 1) +#if defined(HW_SDRAM_64_MB) && (HW_SDRAM_64_MB == 1) MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB); #else MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_16MB); -#endif // PURE_SDRAM_64_MB +#endif // HW_SDRAM_64_MB #endif // SDRAM_IS_SHAREABLE /* Enable MPU */