-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
imx8mm-var-dart: add support for MX8M-MINI SOMs
Signed-off-by: FrancescoFerraro <[email protected]>
- Loading branch information
1 parent
e330a6a
commit 44c1bb8
Showing
1,588 changed files
with
153,177 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
23 changes: 23 additions & 0 deletions
23
boards/dart_mx8mm/cmsis_driver_examples/ecspi/int_loopback_transfer/RTE_Device.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* | ||
* Copyright 2018,2020 NXP | ||
* All rights reserved. | ||
* | ||
* SPDX-License-Identifier: BSD-3-Clause | ||
*/ | ||
|
||
#ifndef _RTE_DEVICE_H | ||
#define _RTE_DEVICE_H | ||
|
||
extern void ECSPI1_InitPins(); | ||
extern void ECSPI1_DeinitPins(); | ||
|
||
/* Driver name mapping. */ | ||
#define RTE_SPI1 1 | ||
#define RTE_SPI1_DMA_EN 0 | ||
|
||
/* ECSPI configuration. */ | ||
#define RTE_SPI1_PIN_INIT ECSPI1_InitPins | ||
#define RTE_SPI1_PIN_DEINIT ECSPI1_DeinitPins | ||
#define RTE_SPI1_TRANSFER_CHANNEL kECSPI_Channel0 | ||
|
||
#endif /* _RTE_DEVICE_H */ |
122 changes: 122 additions & 0 deletions
122
boards/dart_mx8mm/cmsis_driver_examples/ecspi/int_loopback_transfer/armgcc/CMakeLists.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
# CROSS COMPILER SETTING | ||
SET(CMAKE_SYSTEM_NAME Generic) | ||
CMAKE_MINIMUM_REQUIRED (VERSION 3.10.0) | ||
|
||
# THE VERSION NUMBER | ||
SET (Tutorial_VERSION_MAJOR 1) | ||
SET (Tutorial_VERSION_MINOR 0) | ||
|
||
# ENABLE ASM | ||
ENABLE_LANGUAGE(ASM) | ||
|
||
SET(CMAKE_STATIC_LIBRARY_PREFIX) | ||
SET(CMAKE_STATIC_LIBRARY_SUFFIX) | ||
|
||
SET(CMAKE_EXECUTABLE_LIBRARY_PREFIX) | ||
SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX) | ||
|
||
# CURRENT DIRECTORY | ||
SET(ProjDirPath ${CMAKE_CURRENT_SOURCE_DIR}) | ||
|
||
SET(EXECUTABLE_OUTPUT_PATH ${ProjDirPath}/${CMAKE_BUILD_TYPE}) | ||
SET(LIBRARY_OUTPUT_PATH ${ProjDirPath}/${CMAKE_BUILD_TYPE}) | ||
|
||
|
||
project(cmsis_ecspi_int_loopback_transfer) | ||
|
||
set(MCUX_BUILD_TYPES debug release ddr_debug ddr_release flash_debug flash_release) | ||
|
||
set(MCUX_SDK_PROJECT_NAME cmsis_ecspi_int_loopback_transfer.elf) | ||
|
||
if (NOT DEFINED SdkRootDirPath) | ||
SET(SdkRootDirPath ${ProjDirPath}/../../../../../..) | ||
endif() | ||
|
||
include(${ProjDirPath}/flags.cmake) | ||
|
||
include(${ProjDirPath}/config.cmake) | ||
|
||
add_executable(${MCUX_SDK_PROJECT_NAME} | ||
"${ProjDirPath}/../cmsis_ecspi_int_loopback_transfer.c" | ||
"${ProjDirPath}/../pin_mux.c" | ||
"${ProjDirPath}/../pin_mux.h" | ||
"${ProjDirPath}/../RTE_Device.h" | ||
"${ProjDirPath}/../board.c" | ||
"${ProjDirPath}/../board.h" | ||
"${ProjDirPath}/../clock_config.c" | ||
"${ProjDirPath}/../clock_config.h" | ||
"${ProjDirPath}/../fsl_iomuxc.h" | ||
"${ProjDirPath}/../empty_rsc_table.c" | ||
) | ||
|
||
target_include_directories(${MCUX_SDK_PROJECT_NAME} PUBLIC | ||
${ProjDirPath}/.. | ||
) | ||
|
||
set(CMAKE_MODULE_PATH | ||
${SdkRootDirPath}/devices/MIMX8MM6/utilities | ||
${SdkRootDirPath}/devices/MIMX8MM6/utilities/debug_console_lite | ||
${SdkRootDirPath}/devices/MIMX8MM6/drivers | ||
${SdkRootDirPath}/devices/MIMX8MM6/cmsis_drivers | ||
${SdkRootDirPath}/devices/MIMX8MM6 | ||
${SdkRootDirPath}/components/uart | ||
${SdkRootDirPath}/components/lists | ||
${SdkRootDirPath}/CMSIS/Core/Include | ||
${SdkRootDirPath}/CMSIS/Driver/Include | ||
) | ||
|
||
# include modules | ||
include(utility_debug_console_lite_MIMX8MM6) | ||
|
||
include(utility_assert_lite_MIMX8MM6) | ||
|
||
include(driver_clock_MIMX8MM6) | ||
|
||
include(driver_cmsis_ecspi_MIMX8MM6) | ||
|
||
include(driver_ecspi_sdma_MIMX8MM6) | ||
|
||
include(driver_common_MIMX8MM6) | ||
|
||
include(driver_rdc_MIMX8MM6) | ||
|
||
include(device_MIMX8MM6_CMSIS_MIMX8MM6) | ||
|
||
include(component_iuart_adapter_MIMX8MM6) | ||
|
||
include(component_lists_MIMX8MM6) | ||
|
||
include(driver_iuart_MIMX8MM6) | ||
|
||
include(device_MIMX8MM6_startup_MIMX8MM6) | ||
|
||
include(CMSIS_Include_core_cm_MIMX8MM6) | ||
|
||
include(driver_ecspi_MIMX8MM6) | ||
|
||
include(CMSIS_Driver_Include_SPI_MIMX8MM6) | ||
|
||
include(CMSIS_Driver_Include_Common_MIMX8MM6) | ||
|
||
include(driver_sdma_MIMX8MM6) | ||
|
||
include(driver_memory_MIMX8MM6) | ||
|
||
include(utilities_misc_utilities_MIMX8MM6) | ||
|
||
include(device_MIMX8MM6_system_MIMX8MM6) | ||
|
||
|
||
IF(NOT DEFINED TARGET_LINK_SYSTEM_LIBRARIES) | ||
SET(TARGET_LINK_SYSTEM_LIBRARIES "-lm -lc -lgcc -lnosys") | ||
ENDIF() | ||
|
||
TARGET_LINK_LIBRARIES(${MCUX_SDK_PROJECT_NAME} PRIVATE -Wl,--start-group) | ||
|
||
target_link_libraries(${MCUX_SDK_PROJECT_NAME} PRIVATE ${TARGET_LINK_SYSTEM_LIBRARIES}) | ||
|
||
TARGET_LINK_LIBRARIES(${MCUX_SDK_PROJECT_NAME} PRIVATE -Wl,--end-group) | ||
|
||
ADD_CUSTOM_COMMAND(TARGET ${MCUX_SDK_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_OBJCOPY} | ||
-Obinary ${EXECUTABLE_OUTPUT_PATH}/${MCUX_SDK_PROJECT_NAME} ${EXECUTABLE_OUTPUT_PATH}/cmsis_ecspi_int_loopback_transfer.bin) | ||
|
228 changes: 228 additions & 0 deletions
228
...8mm/cmsis_driver_examples/ecspi/int_loopback_transfer/armgcc/MIMX8MM6xxxxx_cm4_ddr_ram.ld
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,228 @@ | ||
/* | ||
** ################################################################### | ||
** Processors: MIMX8MM6CVTKZ | ||
** MIMX8MM6DVTLZ | ||
** | ||
** Compiler: GNU C Compiler | ||
** Reference manual: MX8MMRM, Rev. 0, 02/2019 | ||
** Version: rev. 4.0, 2019-02-18 | ||
** Build: b200330 | ||
** | ||
** Abstract: | ||
** Linker file for the GNU C Compiler | ||
** | ||
** Copyright 2016 Freescale Semiconductor, Inc. | ||
** Copyright 2016-2020 NXP | ||
** All rights reserved. | ||
** | ||
** SPDX-License-Identifier: BSD-3-Clause | ||
** | ||
** http: www.nxp.com | ||
** mail: [email protected] | ||
** | ||
** ################################################################### | ||
*/ | ||
|
||
/* Entry Point */ | ||
ENTRY(Reset_Handler) | ||
|
||
HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x0400; | ||
STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400; | ||
|
||
/* Specify the memory areas */ | ||
MEMORY | ||
{ | ||
m_interrupts (RX) : ORIGIN = 0x7E000000, LENGTH = 0x00000240 | ||
m_text (RX) : ORIGIN = 0x7E000240, LENGTH = 0x001FFDC0 | ||
m_data (RW) : ORIGIN = 0x7E200000, LENGTH = 0x00200000 | ||
m_data2 (RW) : ORIGIN = 0x7E400000, LENGTH = 0x00C00000 | ||
} | ||
|
||
/* Define output sections */ | ||
SECTIONS | ||
{ | ||
/* The startup code goes first into internal RAM */ | ||
.interrupts : | ||
{ | ||
__VECTOR_TABLE = .; | ||
__Vectors = .; | ||
. = ALIGN(4); | ||
KEEP(*(.isr_vector)) /* Startup code */ | ||
. = ALIGN(4); | ||
} > m_interrupts | ||
|
||
.resource_table : | ||
{ | ||
. = ALIGN(8); | ||
KEEP(*(.resource_table)) /* Resource table */ | ||
. = ALIGN(8); | ||
} > m_text | ||
|
||
/* The program code and other data goes into internal RAM */ | ||
.text : | ||
{ | ||
. = ALIGN(4); | ||
*(.text) /* .text sections (code) */ | ||
*(.text*) /* .text* sections (code) */ | ||
*(.rodata) /* .rodata sections (constants, strings, etc.) */ | ||
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */ | ||
*(.glue_7) /* glue arm to thumb code */ | ||
*(.glue_7t) /* glue thumb to arm code */ | ||
*(.eh_frame) | ||
KEEP (*(.init)) | ||
KEEP (*(.fini)) | ||
. = ALIGN(4); | ||
} > m_text | ||
|
||
.ARM.extab : | ||
{ | ||
*(.ARM.extab* .gnu.linkonce.armextab.*) | ||
} > m_text | ||
|
||
.ARM : | ||
{ | ||
__exidx_start = .; | ||
*(.ARM.exidx*) | ||
__exidx_end = .; | ||
} > m_text | ||
|
||
.ctors : | ||
{ | ||
__CTOR_LIST__ = .; | ||
/* gcc uses crtbegin.o to find the start of | ||
the constructors, so we make sure it is | ||
first. Because this is a wildcard, it | ||
doesn't matter if the user does not | ||
actually link against crtbegin.o; the | ||
linker won't look for a file to match a | ||
wildcard. The wildcard also means that it | ||
doesn't matter which directory crtbegin.o | ||
is in. */ | ||
KEEP (*crtbegin.o(.ctors)) | ||
KEEP (*crtbegin?.o(.ctors)) | ||
/* We don't want to include the .ctor section from | ||
from the crtend.o file until after the sorted ctors. | ||
The .ctor section from the crtend file contains the | ||
end of ctors marker and it must be last */ | ||
KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)) | ||
KEEP (*(SORT(.ctors.*))) | ||
KEEP (*(.ctors)) | ||
__CTOR_END__ = .; | ||
} > m_text | ||
|
||
.dtors : | ||
{ | ||
__DTOR_LIST__ = .; | ||
KEEP (*crtbegin.o(.dtors)) | ||
KEEP (*crtbegin?.o(.dtors)) | ||
KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)) | ||
KEEP (*(SORT(.dtors.*))) | ||
KEEP (*(.dtors)) | ||
__DTOR_END__ = .; | ||
} > m_text | ||
|
||
.preinit_array : | ||
{ | ||
PROVIDE_HIDDEN (__preinit_array_start = .); | ||
KEEP (*(.preinit_array*)) | ||
PROVIDE_HIDDEN (__preinit_array_end = .); | ||
} > m_text | ||
|
||
.init_array : | ||
{ | ||
PROVIDE_HIDDEN (__init_array_start = .); | ||
KEEP (*(SORT(.init_array.*))) | ||
KEEP (*(.init_array*)) | ||
PROVIDE_HIDDEN (__init_array_end = .); | ||
} > m_text | ||
|
||
.fini_array : | ||
{ | ||
PROVIDE_HIDDEN (__fini_array_start = .); | ||
KEEP (*(SORT(.fini_array.*))) | ||
KEEP (*(.fini_array*)) | ||
PROVIDE_HIDDEN (__fini_array_end = .); | ||
} > m_text | ||
|
||
__etext = .; /* define a global symbol at end of code */ | ||
__DATA_ROM = .; /* Symbol is used by startup for data initialization */ | ||
|
||
.data : AT(__DATA_ROM) | ||
{ | ||
. = ALIGN(4); | ||
__DATA_RAM = .; | ||
__data_start__ = .; /* create a global symbol at data start */ | ||
*(.data) /* .data sections */ | ||
*(.data*) /* .data* sections */ | ||
KEEP(*(.jcr*)) | ||
. = ALIGN(4); | ||
__data_end__ = .; /* define a global symbol at data end */ | ||
} > m_data | ||
|
||
__CACHE_REGION_START = ORIGIN(m_interrupts); | ||
__CACHE_REGION_SIZE = LENGTH(m_interrupts) + LENGTH(m_text) + LENGTH(m_data); | ||
|
||
__NDATA_ROM = __DATA_ROM + SIZEOF(.data); /* Symbol is used by startup for ncache data initialization */ | ||
|
||
.ncache.init : AT(__NDATA_ROM) | ||
{ | ||
__noncachedata_start__ = .; /* create a global symbol at ncache data start */ | ||
*(NonCacheable.init) | ||
. = ALIGN(4); | ||
__noncachedata_init_end__ = .; /* create a global symbol at initialized ncache data end */ | ||
} > m_data2 | ||
|
||
. = __noncachedata_init_end__; | ||
.ncache : | ||
{ | ||
*(NonCacheable) | ||
. = ALIGN(4); | ||
__noncachedata_end__ = .; /* define a global symbol at ncache data end */ | ||
} > m_data2 | ||
|
||
__DATA_END = __DATA_ROM + (__data_end__ - __data_start__); | ||
text_end = ORIGIN(m_text) + LENGTH(m_text); | ||
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data") | ||
|
||
/* Uninitialized data section */ | ||
.bss : | ||
{ | ||
/* This is used by the startup in order to initialize the .bss section */ | ||
. = ALIGN(4); | ||
__START_BSS = .; | ||
__bss_start__ = .; | ||
*(.bss) | ||
*(.bss*) | ||
*(COMMON) | ||
. = ALIGN(4); | ||
__bss_end__ = .; | ||
__END_BSS = .; | ||
} > m_data | ||
|
||
.heap : | ||
{ | ||
. = ALIGN(8); | ||
__end__ = .; | ||
PROVIDE(end = .); | ||
__HeapBase = .; | ||
. += HEAP_SIZE; | ||
__HeapLimit = .; | ||
__heap_limit = .; /* Add for _sbrk */ | ||
} > m_data | ||
|
||
.stack : | ||
{ | ||
. = ALIGN(8); | ||
. += STACK_SIZE; | ||
} > m_data | ||
|
||
/* Initializes stack on the end of block */ | ||
__StackTop = ORIGIN(m_data) + LENGTH(m_data); | ||
__StackLimit = __StackTop - STACK_SIZE; | ||
PROVIDE(__stack = __StackTop); | ||
|
||
.ARM.attributes 0 : { *(.ARM.attributes) } | ||
|
||
ASSERT(__StackLimit >= __HeapLimit, "region m_data overflowed with stack and heap") | ||
} | ||
|
Oops, something went wrong.