summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2016-01-12 14:06:54 -0800
committerStefan Agner <stefan.agner@toradex.com>2016-01-12 14:06:54 -0800
commita57cc2c988482010061b9e68344fdf1969889763 (patch)
tree5c050337492ce27c09b47421b123980b5a79f8d9 /tools
initial commit, FreeRTOS_BSP_1.0.0_iMX7D
Diffstat (limited to 'tools')
-rw-r--r--tools/cmake_toolchain_files/armgcc.cmake68
-rw-r--r--tools/cmake_toolchain_files/armgcc_force_cpp.cmake68
-rw-r--r--tools/trace32/attach_imx7d_m4.cmm117
3 files changed, 253 insertions, 0 deletions
diff --git a/tools/cmake_toolchain_files/armgcc.cmake b/tools/cmake_toolchain_files/armgcc.cmake
new file mode 100644
index 0000000..c1a8dc7
--- /dev/null
+++ b/tools/cmake_toolchain_files/armgcc.cmake
@@ -0,0 +1,68 @@
+INCLUDE(CMakeForceCompiler)
+
+# TOOLCHAIN EXTENSION
+IF(WIN32)
+ SET(TOOLCHAIN_EXT ".exe")
+ELSE()
+ SET(TOOLCHAIN_EXT "")
+ENDIF()
+
+# EXECUTABLE EXTENSION
+SET (CMAKE_EXECUTABLE_SUFFIX ".elf")
+
+# CMAKE_BUILD_TYPE
+IF(NOT CMAKE_BUILD_TYPE MATCHES Debug)
+ SET (CMAKE_BUILD_TYPE Release)
+ENDIF()
+
+# TOOLCHAIN_DIR AND NANO LIBRARY
+SET(TOOLCHAIN_DIR $ENV{ARMGCC_DIR})
+STRING(REGEX REPLACE "\\\\" "/" TOOLCHAIN_DIR "${TOOLCHAIN_DIR}")
+
+IF(NOT TOOLCHAIN_DIR)
+ MESSAGE(FATAL_ERROR "***Please set ARMGCC_DIR in envionment variables***")
+ENDIF()
+
+MESSAGE(STATUS "TOOLCHAIN_DIR: " ${TOOLCHAIN_DIR})
+
+# TARGET_TRIPLET
+SET(TARGET_TRIPLET "arm-none-eabi")
+
+SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_DIR}/bin)
+SET(TOOLCHAIN_INC_DIR ${TOOLCHAIN_DIR}/${TARGET_TRIPLET}/include)
+SET(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_DIR}/${TARGET_TRIPLET}/lib)
+
+SET(CMAKE_SYSTEM_NAME Generic)
+SET(CMAKE_SYSTEM_PROCESSOR arm)
+
+CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT} GNU)
+CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++${TOOLCHAIN_EXT} GNU)
+SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT})
+
+SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy CACHE INTERNAL "objcopy tool")
+SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objdump CACHE INTERNAL "objdump tool")
+
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g" CACHE INTERNAL "c compiler flags debug")
+SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g" CACHE INTERNAL "cxx compiler flags debug")
+SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g" CACHE INTERNAL "asm compiler flags debug")
+SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "linker flags debug")
+
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 " CACHE INTERNAL "c compiler flags release")
+SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 " CACHE INTERNAL "cxx compiler flags release")
+SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE}" CACHE INTERNAL "asm compiler flags release")
+SET(CMAKE_EXE_LINKER_FLAGS_RELESE "${CMAKE_EXE_LINKER_FLAGS_RELESE}" CACHE INTERNAL "linker flags release")
+
+SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}/${TARGET_TRIPLET} ${EXTRA_FIND_PATH})
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+IF(CMAKE_BUILD_TYPE MATCHES Release)
+ SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/release)
+ SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/release)
+ELSEIF(CMAKE_BUILD_TYPE MATCHES Debug)
+ SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/debug)
+ SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/debug)
+ENDIF()
+
+MESSAGE(STATUS "BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
diff --git a/tools/cmake_toolchain_files/armgcc_force_cpp.cmake b/tools/cmake_toolchain_files/armgcc_force_cpp.cmake
new file mode 100644
index 0000000..5100b60
--- /dev/null
+++ b/tools/cmake_toolchain_files/armgcc_force_cpp.cmake
@@ -0,0 +1,68 @@
+INCLUDE(CMakeForceCompiler)
+
+# TOOLCHAIN EXTENSION
+IF(WIN32)
+ SET(TOOLCHAIN_EXT ".exe")
+ELSE()
+ SET(TOOLCHAIN_EXT "")
+ENDIF()
+
+# EXECUTABLE EXTENSION
+SET (CMAKE_EXECUTABLE_SUFFIX ".elf")
+
+# CMAKE_BUILD_TYPE
+IF(NOT CMAKE_BUILD_TYPE MATCHES Debug)
+ SET (CMAKE_BUILD_TYPE Release)
+ENDIF()
+
+# TOOLCHAIN_DIR AND NANO LIBRARY
+SET(TOOLCHAIN_DIR $ENV{ARMGCC_DIR})
+STRING(REGEX REPLACE "\\\\" "/" TOOLCHAIN_DIR "${TOOLCHAIN_DIR}")
+
+IF(NOT TOOLCHAIN_DIR)
+ MESSAGE(FATAL_ERROR "***Please set ARMGCC_DIR in envionment variables***")
+ENDIF()
+
+MESSAGE(STATUS "TOOLCHAIN_DIR: " ${TOOLCHAIN_DIR})
+
+# TARGET_TRIPLET
+SET(TARGET_TRIPLET "arm-none-eabi")
+
+SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_DIR}/bin)
+SET(TOOLCHAIN_INC_DIR ${TOOLCHAIN_DIR}/${TARGET_TRIPLET}/include)
+SET(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_DIR}/${TARGET_TRIPLET}/lib)
+
+SET(CMAKE_SYSTEM_NAME Generic)
+SET(CMAKE_SYSTEM_PROCESSOR arm)
+
+CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++${TOOLCHAIN_EXT} GNU)
+CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++${TOOLCHAIN_EXT} GNU)
+SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT})
+
+SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy CACHE INTERNAL "objcopy tool")
+SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objdump CACHE INTERNAL "objdump tool")
+
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g" CACHE INTERNAL "c compiler flags debug")
+SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g" CACHE INTERNAL "cxx compiler flags debug")
+SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g" CACHE INTERNAL "asm compiler flags debug")
+SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "linker flags debug")
+
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 " CACHE INTERNAL "c compiler flags release")
+SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 " CACHE INTERNAL "cxx compiler flags release")
+SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE}" CACHE INTERNAL "asm compiler flags release")
+SET(CMAKE_EXE_LINKER_FLAGS_RELESE "${CMAKE_EXE_LINKER_FLAGS_RELESE}" CACHE INTERNAL "linker flags release")
+
+SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}/${TARGET_TRIPLET} ${EXTRA_FIND_PATH})
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+IF(CMAKE_BUILD_TYPE MATCHES Release)
+ SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/release)
+ SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/release)
+ELSEIF(CMAKE_BUILD_TYPE MATCHES Debug)
+ SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/debug)
+ SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/debug)
+ENDIF()
+
+MESSAGE(STATUS "BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
diff --git a/tools/trace32/attach_imx7d_m4.cmm b/tools/trace32/attach_imx7d_m4.cmm
new file mode 100644
index 0000000..a044c86
--- /dev/null
+++ b/tools/trace32/attach_imx7d_m4.cmm
@@ -0,0 +1,117 @@
+; Script to attach to a running system, halt the CPU,
+; and display the ASM code
+;
+
+screen.on
+
+; Debugger Reset
+
+winpage.reset
+area.reset
+WINPOS 0. 26. 75. 8. 0. 0. W000
+area
+
+print "resetting ICD..."
+
+System.Down
+Break.Delete
+MAP.RESet
+TASK.RESet
+sYmbol.RESet
+Data.PROLOG.RESet
+Data.EPILOG.RESet
+sYmbol.AutoLoad.CHECK OFF ; disable dynamic autoloader
+sYmbol.AutoLoad.RESet ; reset autoloader list
+MMU.RESet
+
+; setup of ICD JTAG
+
+print "initializing JTAG..."
+SYStem.CPU CORTEXA7MPCORE
+SYStem.CONFIG.CHIPIRPOST 0x0
+SYStem.CONFIG.CHIPIRPRE 0x0
+SYStem.CONFIG.CHIPDRPOST 0x0
+SYStem.CONFIG.CHIPDRPRE 0x0
+SYStem.CONFIG.DAPIRPOST 0x0
+SYStem.CONFIG.DAPIRPRE 0x0
+SYStem.CONFIG.DAPDRPOST 0x0
+SYStem.CONFIG.DAPDRPRE 0x0
+
+;diag 3411
+
+SYStem.CONFIG.MEMORYACCESSPORT 0
+SYStem.CONFIG.DEBUGACCESSPORT 1
+system.CONFIG.COREDEBUG.BASE DAP:0xb0070000
+SYStem.Option DACR ON ; give Debugger global write permissions
+TrOnchip.Set DABORT OFF ; used by Linux OS for page miss!
+TrOnchip.Set PABORT OFF ; used by Linux OS for page miss!
+TrOnchip.Set UNDEF OFF ; let UNDEF be handled by Linux OS
+SYStem.Option MMU OFF ; no space ids used (yet)
+SYStem.JtagClock 1.0MHz
+SETUP.IMASKASM ON ; lock interrupts while single stepping
+
+; Use on-chip breakpoints
+Break.SELect PROGRAM ONCHIP
+Break.SELect READ ONCHIP
+Break.SELect WRITE ONCHIP
+Break.SELect ALPHA ONCHIP
+Break.SELect BETA ONCHIP
+Break.SELect CHARLY ONCHIP
+Break.SELect DELTA ONCHIP
+Break.SELect ECHO ONCHIP
+
+SYStem.Option EnReset OFF ;do not allow the jtag to reset the target
+SYS.m attach
+; wait until reset is complete
+wait 1.s
+if run()
+ Break
+
+; Open a Code Window -- we like to see something
+
+WINPOS 0. 0. 75. 20.
+Data.List
+
+; wait until reset is complete
+wait 1.s
+if run()
+ Break
+
+; enable ocram epdc
+per.set.field ZSD:0x30340004 %LE %LONG 0x40000000 1
+
+; Make sure M4 is hung up
+per.set.field ZSD:0x3039000c %LE %LONG 0x00000001 1
+
+; Open M4 clocks
+
+; Prepare M4 entry
+; Stack at TCMU
+D.S ZSD:0x00180000 %LE %LONG 0x20008000
+; Code at BootRom
+D.S ZSD:0x00180004 %LE %LONG 0x00000009
+; Loop code
+D.S ZSD:0x00180008 %LE %LONG 0xe7fee7fe
+
+; Enable M4
+per.set.field ZSD:0x3039000c %LE %LONG 0x00000008 1
+per.set.field ZSD:0x3039000c %LE %LONG 0x00000001 0
+
+print "initializing M4 JTAG..."
+SYStem.CPU CortexM4F
+
+SYStem.CONFIG.MEMORYACCESSPORT 4
+SYStem.CONFIG.DEBUGACCESSPORT 4
+system.CONFIG.COREDEBUG.BASE DAP:0xE0000000
+
+SYStem.Option EnReset OFF ;do not allow the jtag to reset the target
+SYStem.m attach
+; wait until reset is complete
+wait 1.s
+
+if run()
+ Break
+
+data.load.elf "E:\FSL_FreeRTOS_BSP_1.0.0_iMX7D\examples\imx7d_val_m4\demo_apps\hello_world\armgcc\debug\hello_world.elf" /verify
+
+enddo