~aleteoryx/muditaos

1da915ace94b631914c768efcb878e0a6393195e — Wojtek Rzepecki 4 years ago 8fbdd6e
[BH-777] Add Bell specific ld script configuration

Added bell specific ld script configuration for
board memory layout
M board/rt1051/CMakeLists.txt => board/rt1051/CMakeLists.txt +8 -0
@@ 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

A board/rt1051/bellpx/CMakeLists.txt => board/rt1051/bellpx/CMakeLists.txt +8 -0
@@ 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 "")

A board/rt1051/bellpx/memory_bell_P1.ld => board/rt1051/bellpx/memory_bell_P1.ld +25 -0
@@ 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) */
}

M board/rt1051/crashdump/crashcatcher_impl.cpp => board/rt1051/crashdump/crashcatcher_impl.cpp +1 -1
@@ 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},

A board/rt1051/puretx/CMakeLists.txt => board/rt1051/puretx/CMakeLists.txt +19 -0
@@ 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 ()

R board/rt1051/ldscripts/memory_T6.ld => board/rt1051/puretx/memory_pure_T6.ld +0 -0
R board/rt1051/ldscripts/memory_T7.ld => board/rt1051/puretx/memory_pure_T7.ld +0 -0
M cmake/modules/Board.cmake => cmake/modules/Board.cmake +5 -2
@@ 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)

M cmake/modules/ProjectConfig.cmake => cmake/modules/ProjectConfig.cmake +0 -17
@@ 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()

M module-bsp/board/rt1051/common/board.cpp => module-bsp/board/rt1051/common/board.cpp +3 -3
@@ 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<std::uintptr_t>(__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 */