forked from xuos/xiuos
				
			Merge pull request 'add xidatong bsp on nuttx' (#12) from ok1052 into prepare_for_master
ok
This commit is contained in:
		
						commit
						c214d5e281
					
				| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# For a description of the syntax of this configuration file,
 | 
				
			||||||
 | 
					# see the file kconfig-language.txt in the NuttX tools repository.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ARCH_BOARD_XIDATONG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					choice
 | 
				
			||||||
 | 
						prompt "Boot Flash"
 | 
				
			||||||
 | 
						default XIDATONG_HYPER_FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config XIDATONG_HYPER_FLASH
 | 
				
			||||||
 | 
						bool "HYPER Flash"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config XIDATONG_QSPI_FLASH
 | 
				
			||||||
 | 
						bool "QSPI Flash"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					endchoice # Boot Flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config XIDATONG_SDRAM
 | 
				
			||||||
 | 
						bool "Enable SDRAM"
 | 
				
			||||||
 | 
						default n
 | 
				
			||||||
 | 
						select IMXRT_SEMC_INIT_DONE
 | 
				
			||||||
 | 
						---help---
 | 
				
			||||||
 | 
							Activate DCD configuration of SDRAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,74 @@
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					# boards/arm/imxrt/xidatong/configs/knsh/Make.defs
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					# contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					# this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					# ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					# "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					# License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					# License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					# under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOPDIR)/.config
 | 
				
			||||||
 | 
					include $(TOPDIR)/tools/Config.mk
 | 
				
			||||||
 | 
					include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LDSCRIPT1 = memory.ld
 | 
				
			||||||
 | 
					LDSCRIPT2 = kernel-space.ld
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT1)}"
 | 
				
			||||||
 | 
					  ARCHSCRIPT += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT2)}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT1)
 | 
				
			||||||
 | 
					  ARCHSCRIPT += -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT2)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
 | 
				
			||||||
 | 
					  ARCHOPTIMIZATION = -g
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifneq ($(CONFIG_DEBUG_NOOPT),y)
 | 
				
			||||||
 | 
					  ARCHOPTIMIZATION += $(MAXOPTIMIZATION)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ARCHCFLAGS = -fno-builtin
 | 
				
			||||||
 | 
					ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
 | 
				
			||||||
 | 
					ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -fno-strict-aliasing
 | 
				
			||||||
 | 
					ARCHWARNINGSXX = -Wall -Wshadow -Wundef
 | 
				
			||||||
 | 
					ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
 | 
				
			||||||
 | 
					CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 | 
				
			||||||
 | 
					CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
 | 
				
			||||||
 | 
					CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
 | 
				
			||||||
 | 
					CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
 | 
				
			||||||
 | 
					AFLAGS := $(CFLAGS) -D__ASSEMBLY__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NXFLATLDFLAGS1 = -r -d -warn-common
 | 
				
			||||||
 | 
					NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
 | 
				
			||||||
 | 
					LDNXFLATFLAGS = -e main -s 2048
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Loadable module definitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LDMODULEFLAGS = -r -e module_initialize
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
 | 
				
			||||||
 | 
					  LDFLAGS += -g
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is autogenerated: PLEASE DO NOT EDIT IT.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You can use "make menuconfig" to make any modifications to the installed .config file.
 | 
				
			||||||
 | 
					# You can then do "make savedefconfig" to generate a new defconfig file that includes your
 | 
				
			||||||
 | 
					# modifications.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# CONFIG_ARCH_RAMFUNCS is not set
 | 
				
			||||||
 | 
					CONFIG_ADD_NUTTX_FETURES=y
 | 
				
			||||||
 | 
					CONFIG_ARCH="arm"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD="xidatong"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD_XIDATONG=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP="imxrt"
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_IMXRT=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_INTERRUPTSTACK=10240
 | 
				
			||||||
 | 
					CONFIG_ARCH_STACKDUMP=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_DCACHE=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_ICACHE=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_LAZYFPU=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_USEBASEPRI=y
 | 
				
			||||||
 | 
					CONFIG_ARM_MPU=y
 | 
				
			||||||
 | 
					CONFIG_BOARD_LOOPSPERMSEC=104926
 | 
				
			||||||
 | 
					CONFIG_BUILD_PROTECTED=y
 | 
				
			||||||
 | 
					CONFIG_FS_PROCFS=y
 | 
				
			||||||
 | 
					CONFIG_IDLETHREAD_STACKSIZE=2048
 | 
				
			||||||
 | 
					CONFIG_IMXRT_LPUART1=y
 | 
				
			||||||
 | 
					CONFIG_INTELHEX_BINARY=y
 | 
				
			||||||
 | 
					CONFIG_LPUART1_SERIAL_CONSOLE=y
 | 
				
			||||||
 | 
					CONFIG_NSH_ARCHINIT=y
 | 
				
			||||||
 | 
					CONFIG_NSH_DISABLE_MKRD=y
 | 
				
			||||||
 | 
					CONFIG_NSH_FILEIOSIZE=512
 | 
				
			||||||
 | 
					CONFIG_NSH_LINELEN=64
 | 
				
			||||||
 | 
					CONFIG_NSH_READLINE=y
 | 
				
			||||||
 | 
					CONFIG_NUTTX_USERSPACE=0x60200000
 | 
				
			||||||
 | 
					CONFIG_PASS1_BUILDIR="boards/arm/imxrt/xidatong/kernel"
 | 
				
			||||||
 | 
					CONFIG_RAM_SIZE=524288
 | 
				
			||||||
 | 
					CONFIG_RAM_START=0x20200000
 | 
				
			||||||
 | 
					CONFIG_SCHED_HPWORK=y
 | 
				
			||||||
 | 
					CONFIG_SCHED_WAITPID=y
 | 
				
			||||||
 | 
					CONFIG_START_DAY=8
 | 
				
			||||||
 | 
					CONFIG_START_MONTH=6
 | 
				
			||||||
 | 
					CONFIG_SYSTEM_NSH=y
 | 
				
			||||||
 | 
					CONFIG_SYS_RESERVED=9
 | 
				
			||||||
 | 
					CONFIG_USER_ENTRYPOINT="nsh_main"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,85 @@
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					# boards/arm/imxrt/xidatong/configs/libcxxtest/Make.defs
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					# contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					# this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					# ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					# "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					# License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					# License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					# under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOPDIR)/.config
 | 
				
			||||||
 | 
					include $(TOPDIR)/tools/Config.mk
 | 
				
			||||||
 | 
					include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_ARMV7M_DTCM),y)
 | 
				
			||||||
 | 
					  LDSCRIPT = flash-dtcm.ld
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  LDSCRIPT = flash-ocram.ld
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
 | 
				
			||||||
 | 
					  ARCHOPTIMIZATION = -g
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifneq ($(CONFIG_DEBUG_NOOPT),y)
 | 
				
			||||||
 | 
					  ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing \
 | 
				
			||||||
 | 
					                      -fno-strength-reduce -fomit-frame-pointer
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ARCHCFLAGS = -fno-builtin
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CXX_EXCEPTION),y)
 | 
				
			||||||
 | 
					  ARCHCPUFLAGSXX = -fno-builtin
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  ARCHCPUFLAGSXX = -fno-builtin -fno-exceptions -fcheck-new
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef #-fno-strict-aliasing
 | 
				
			||||||
 | 
					ARCHWARNINGSXX = -Wall -Wshadow -Wundef
 | 
				
			||||||
 | 
					ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
 | 
				
			||||||
 | 
					CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 | 
				
			||||||
 | 
					CXXFLAGS  = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) \
 | 
				
			||||||
 | 
					            $(ARCHCPUFLAGS) $(ARCHXXINCLUDES)
 | 
				
			||||||
 | 
					CXXFLAGS += $(ARCHDEFINES) $(EXTRAFLAGS) -pipe -std=c++11
 | 
				
			||||||
 | 
					CXXFLAGS += -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
 | 
				
			||||||
 | 
					CXXFLAGS += -pedantic -D_DEBUG -D_LIBCPP_BUILD_STATIC -D_LIBCPP_NO_EXCEPTIONS
 | 
				
			||||||
 | 
					CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
 | 
				
			||||||
 | 
					CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
 | 
				
			||||||
 | 
					AFLAGS := $(CFLAGS) -D__ASSEMBLY__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NXFLATLDFLAGS1 = -r -d -warn-common
 | 
				
			||||||
 | 
					NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
 | 
				
			||||||
 | 
					LDNXFLATFLAGS = -e main -s 2048
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Loadable module definitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LDMODULEFLAGS = -r -e module_initialize
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
 | 
				
			||||||
 | 
					  LDFLAGS += -g
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is autogenerated: PLEASE DO NOT EDIT IT.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You can use "make menuconfig" to make any modifications to the installed .config file.
 | 
				
			||||||
 | 
					# You can then do "make savedefconfig" to generate a new defconfig file that includes your
 | 
				
			||||||
 | 
					# modifications.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					CONFIG_ADD_NUTTX_FETURES=y
 | 
				
			||||||
 | 
					CONFIG_ARCH="arm"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD="xidatong"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD_XIDATONG=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP="imxrt"
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_IMXRT=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_INTERRUPTSTACK=10240
 | 
				
			||||||
 | 
					CONFIG_ARCH_STACKDUMP=y
 | 
				
			||||||
 | 
					CONFIG_BOARD_LATE_INITIALIZE=y
 | 
				
			||||||
 | 
					CONFIG_BOARD_LOOPSPERMSEC=20000
 | 
				
			||||||
 | 
					CONFIG_BUILTIN=y
 | 
				
			||||||
 | 
					CONFIG_CLOCK_MONOTONIC=y
 | 
				
			||||||
 | 
					CONFIG_C99_BOOL8=y
 | 
				
			||||||
 | 
					CONFIG_FS_PROCFS=y
 | 
				
			||||||
 | 
					CONFIG_HAVE_CXX=y
 | 
				
			||||||
 | 
					CONFIG_IDLETHREAD_STACKSIZE=2048
 | 
				
			||||||
 | 
					CONFIG_IMXRT_LPUART1=y
 | 
				
			||||||
 | 
					CONFIG_INTELHEX_BINARY=y
 | 
				
			||||||
 | 
					CONFIG_LIBCXX=y
 | 
				
			||||||
 | 
					CONFIG_LIBCXXABI=y
 | 
				
			||||||
 | 
					CONFIG_LIBC_FLOATINGPOINT=y
 | 
				
			||||||
 | 
					CONFIG_LIBC_LOCALTIME=y
 | 
				
			||||||
 | 
					CONFIG_LIBM=y
 | 
				
			||||||
 | 
					CONFIG_LPUART1_SERIAL_CONSOLE=y
 | 
				
			||||||
 | 
					CONFIG_NSH_BUILTIN_APPS=y
 | 
				
			||||||
 | 
					CONFIG_NSH_FILEIOSIZE=512
 | 
				
			||||||
 | 
					CONFIG_NSH_LINELEN=64
 | 
				
			||||||
 | 
					CONFIG_NSH_READLINE=y
 | 
				
			||||||
 | 
					CONFIG_RAM_SIZE=536870912
 | 
				
			||||||
 | 
					CONFIG_RAM_START=0x20200000
 | 
				
			||||||
 | 
					CONFIG_SCHED_CPULOAD=y
 | 
				
			||||||
 | 
					CONFIG_SCHED_HPWORK=y
 | 
				
			||||||
 | 
					CONFIG_SCHED_WAITPID=y
 | 
				
			||||||
 | 
					CONFIG_START_DAY=14
 | 
				
			||||||
 | 
					CONFIG_START_MONTH=3
 | 
				
			||||||
 | 
					CONFIG_SYSTEM_NSH=y
 | 
				
			||||||
 | 
					CONFIG_USER_ENTRYPOINT="nsh_main"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,67 @@
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is autogenerated: PLEASE DO NOT EDIT IT.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You can use "make menuconfig" to make any modifications to the installed .config file.
 | 
				
			||||||
 | 
					# You can then do "make savedefconfig" to generate a new defconfig file that includes your
 | 
				
			||||||
 | 
					# modifications.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# CONFIG_ARCH_LEDS is not set
 | 
				
			||||||
 | 
					CONFIG_ADD_NUTTX_FETURES=y
 | 
				
			||||||
 | 
					CONFIG_ARCH="arm"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD="xidatong"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD_XIDATONG=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP="imxrt"
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_IMXRT=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_INTERRUPTSTACK=10240
 | 
				
			||||||
 | 
					CONFIG_ARCH_STACKDUMP=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_DCACHE=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_ICACHE=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_USEBASEPRI=y
 | 
				
			||||||
 | 
					CONFIG_BOARD_LOOPSPERMSEC=104926
 | 
				
			||||||
 | 
					CONFIG_BUILTIN=y
 | 
				
			||||||
 | 
					CONFIG_CLOCK_MONOTONIC=y
 | 
				
			||||||
 | 
					CONFIG_ETH0_PHY_KSZ8081=y
 | 
				
			||||||
 | 
					CONFIG_FS_PROCFS=y
 | 
				
			||||||
 | 
					CONFIG_IDLETHREAD_STACKSIZE=2048
 | 
				
			||||||
 | 
					CONFIG_IMXRT_ENET=y
 | 
				
			||||||
 | 
					CONFIG_IMXRT_LPUART1=y
 | 
				
			||||||
 | 
					CONFIG_INTELHEX_BINARY=y
 | 
				
			||||||
 | 
					CONFIG_LIBC_HOSTNAME="i.MXRT1050 EVK"
 | 
				
			||||||
 | 
					CONFIG_LPUART1_SERIAL_CONSOLE=y
 | 
				
			||||||
 | 
					CONFIG_NET=y
 | 
				
			||||||
 | 
					CONFIG_NETDEV_STATISTICS=y
 | 
				
			||||||
 | 
					CONFIG_NETINIT_NOMAC=y
 | 
				
			||||||
 | 
					CONFIG_NETUTILS_TELNETD=y
 | 
				
			||||||
 | 
					CONFIG_NET_ARP_SEND=y
 | 
				
			||||||
 | 
					CONFIG_NET_BROADCAST=y
 | 
				
			||||||
 | 
					CONFIG_NET_ICMP=y
 | 
				
			||||||
 | 
					CONFIG_NET_ICMP_SOCKET=y
 | 
				
			||||||
 | 
					CONFIG_NET_ICMPv6=y
 | 
				
			||||||
 | 
					CONFIG_NET_ICMPv6_NEIGHBOR=y
 | 
				
			||||||
 | 
					CONFIG_NET_ICMPv6_SOCKET=y
 | 
				
			||||||
 | 
					CONFIG_NET_IPv6=y
 | 
				
			||||||
 | 
					CONFIG_NET_SOCKOPTS=y
 | 
				
			||||||
 | 
					CONFIG_NET_STATISTICS=y
 | 
				
			||||||
 | 
					CONFIG_NET_TCP=y
 | 
				
			||||||
 | 
					CONFIG_NET_TCPBACKLOG=y
 | 
				
			||||||
 | 
					CONFIG_NET_TCP_WRITE_BUFFERS=y
 | 
				
			||||||
 | 
					CONFIG_NET_UDP=y
 | 
				
			||||||
 | 
					CONFIG_NET_UDP_WRITE_BUFFERS=y
 | 
				
			||||||
 | 
					CONFIG_NSH_ARCHINIT=y
 | 
				
			||||||
 | 
					CONFIG_NSH_BUILTIN_APPS=y
 | 
				
			||||||
 | 
					CONFIG_NSH_FILEIOSIZE=512
 | 
				
			||||||
 | 
					CONFIG_NSH_LINELEN=64
 | 
				
			||||||
 | 
					CONFIG_NSH_READLINE=y
 | 
				
			||||||
 | 
					CONFIG_RAM_SIZE=524288
 | 
				
			||||||
 | 
					CONFIG_RAM_START=0x20200000
 | 
				
			||||||
 | 
					CONFIG_SCHED_LPWORK=y
 | 
				
			||||||
 | 
					CONFIG_SCHED_HPWORK=y
 | 
				
			||||||
 | 
					CONFIG_SCHED_WAITPID=y
 | 
				
			||||||
 | 
					CONFIG_START_DAY=14
 | 
				
			||||||
 | 
					CONFIG_START_MONTH=3
 | 
				
			||||||
 | 
					CONFIG_SYSTEM_NSH=y
 | 
				
			||||||
 | 
					CONFIG_SYSTEM_PING6=y
 | 
				
			||||||
 | 
					CONFIG_SYSTEM_PING=y
 | 
				
			||||||
 | 
					CONFIG_USER_ENTRYPOINT="nsh_main"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is autogenerated: PLEASE DO NOT EDIT IT.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You can use "make menuconfig" to make any modifications to the installed .config file.
 | 
				
			||||||
 | 
					# You can then do "make savedefconfig" to generate a new defconfig file that includes your
 | 
				
			||||||
 | 
					# modifications.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					CONFIG_ADD_NUTTX_FETURES=y
 | 
				
			||||||
 | 
					CONFIG_ARCH="arm"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD="xidatong"
 | 
				
			||||||
 | 
					CONFIG_ARCH_BOARD_XIDATONG=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP="imxrt"
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_IMXRT=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y
 | 
				
			||||||
 | 
					CONFIG_ARCH_INTERRUPTSTACK=10240
 | 
				
			||||||
 | 
					CONFIG_ARCH_STACKDUMP=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_DCACHE=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_ICACHE=y
 | 
				
			||||||
 | 
					CONFIG_ARMV7M_USEBASEPRI=y
 | 
				
			||||||
 | 
					CONFIG_BOARD_LOOPSPERMSEC=104926
 | 
				
			||||||
 | 
					CONFIG_BUILTIN=y
 | 
				
			||||||
 | 
					CONFIG_CLOCK_MONOTONIC=y
 | 
				
			||||||
 | 
					CONFIG_EXAMPLES_HELLO=y
 | 
				
			||||||
 | 
					CONFIG_FS_PROCFS=y
 | 
				
			||||||
 | 
					CONFIG_IDLETHREAD_STACKSIZE=2048
 | 
				
			||||||
 | 
					CONFIG_IMXRT_LPUART1=y
 | 
				
			||||||
 | 
					CONFIG_INTELHEX_BINARY=y
 | 
				
			||||||
 | 
					CONFIG_LPUART1_SERIAL_CONSOLE=y
 | 
				
			||||||
 | 
					CONFIG_NSH_ARCHINIT=y
 | 
				
			||||||
 | 
					CONFIG_NSH_BUILTIN_APPS=y
 | 
				
			||||||
 | 
					CONFIG_NSH_DISABLE_IFUPDOWN=y
 | 
				
			||||||
 | 
					CONFIG_NSH_FILEIOSIZE=512
 | 
				
			||||||
 | 
					CONFIG_NSH_LINELEN=64
 | 
				
			||||||
 | 
					CONFIG_NSH_READLINE=y
 | 
				
			||||||
 | 
					CONFIG_RAM_SIZE=524288
 | 
				
			||||||
 | 
					CONFIG_RAM_START=0x20200000
 | 
				
			||||||
 | 
					CONFIG_SCHED_HPWORK=y
 | 
				
			||||||
 | 
					CONFIG_SCHED_WAITPID=y
 | 
				
			||||||
 | 
					CONFIG_START_DAY=14
 | 
				
			||||||
 | 
					CONFIG_START_MONTH=3
 | 
				
			||||||
 | 
					CONFIG_SYSTEM_NSH=y
 | 
				
			||||||
 | 
					CONFIG_USER_ENTRYPOINT="nsh_main"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,367 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/include/board.h
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file board.h
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __BOARDS_ARM_IMXRT_XIDATONG_INCLUDE_BOARD_H
 | 
				
			||||||
 | 
					#define __BOARDS_ARM_IMXRT_XIDATONG_INCLUDE_BOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Do not include i.MXRT header files here */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Clocking *****************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Set VDD_SOC to 1.25V */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_VDD_SOC (0x12)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Set Arm PLL (PLL1) to  fOut    = (24Mhz * ARM_PLL_DIV_SELECT/2) /
 | 
				
			||||||
 | 
					 *                                  ARM_PODF_DIVISOR
 | 
				
			||||||
 | 
					 *                        600Mhz  = (24Mhz * ARM_PLL_DIV_SELECT/2) /
 | 
				
			||||||
 | 
					 *                                  ARM_PODF_DIVISOR
 | 
				
			||||||
 | 
					 *                        ARM_PLL_DIV_SELECT = 100
 | 
				
			||||||
 | 
					 *                        ARM_PODF_DIVISOR   = 2
 | 
				
			||||||
 | 
					 *                        600Mhz  = (24Mhz * 100/2) / 2
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     AHB_CLOCK_ROOT             = PLL1fOut / IMXRT_AHB_PODF_DIVIDER
 | 
				
			||||||
 | 
					 *     1Hz to 600 MHz             = 600Mhz / IMXRT_ARM_CLOCK_DIVIDER
 | 
				
			||||||
 | 
					 *                        IMXRT_ARM_CLOCK_DIVIDER = 1
 | 
				
			||||||
 | 
					 *                        600Mhz  = 600Mhz / 1
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     PRE_PERIPH_CLK_SEL         = PRE_PERIPH_CLK_SEL_PLL1
 | 
				
			||||||
 | 
					 *     PERIPH_CLK_SEL             = 1 (0 select PERIPH_CLK2_PODF,
 | 
				
			||||||
 | 
					 *                                     1 select PRE_PERIPH_CLK_SEL_PLL1)
 | 
				
			||||||
 | 
					 *     PERIPH_CLK                 = 600Mhz
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     IPG_CLOCK_ROOT             = AHB_CLOCK_ROOT / IMXRT_IPG_PODF_DIVIDER
 | 
				
			||||||
 | 
					 *                       IMXRT_IPG_PODF_DIVIDER = 4
 | 
				
			||||||
 | 
					 *                       150Mhz = 600Mhz / 4
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     PERCLK_CLOCK_ROOT          = IPG_CLOCK_ROOT /
 | 
				
			||||||
 | 
					 *                                  IMXRT_PERCLK_PODF_DIVIDER
 | 
				
			||||||
 | 
					 *                       IMXRT_PERCLK_PODF_DIVIDER = 9
 | 
				
			||||||
 | 
					 *                       16.6Mhz  = 150Mhz / 9
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     SEMC_CLK_ROOT              = 600Mhz / IMXRT_SEMC_PODF_DIVIDER
 | 
				
			||||||
 | 
					 *                                           (labeled AIX_PODF in 18.2)
 | 
				
			||||||
 | 
					 *                       IMXRT_SEMC_PODF_DIVIDER = 8
 | 
				
			||||||
 | 
					 *                       75Mhz    = 600Mhz / 8
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Set Sys PLL (PLL2) to  fOut    = (24Mhz * (20+(2*(DIV_SELECT)))
 | 
				
			||||||
 | 
					 *                        528Mhz  = (24Mhz * (20+(2*(1)))
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Set USB1 PLL (PLL3) to fOut    = (24Mhz * 20)
 | 
				
			||||||
 | 
					 *                         480Mhz = (24Mhz * 20)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Set LPSPI PLL3 PFD0 to fOut    = (480Mhz / 12 * 18)
 | 
				
			||||||
 | 
					 *                        720Mhz  = (480Mhz / 12 * 18)
 | 
				
			||||||
 | 
					 *                         90Mhz  = (720Mhz / LSPI_PODF_DIVIDER)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Set LPI2C PLL3 / 8 to   fOut   = (480Mhz / 8)
 | 
				
			||||||
 | 
					 *                         60Mhz  = (480Mhz / 8)
 | 
				
			||||||
 | 
					 *                         12Mhz  = (60Mhz / LSPI_PODF_DIVIDER)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * These clock frequencies can be verified via the CCM_CLKO1 pin and sending
 | 
				
			||||||
 | 
					 * the appropriate clock to it with something like;
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   putreg32( <Clk number> | CCM_CCOSR_CLKO1_EN ,   IMXRT_CCM_CCOSR);
 | 
				
			||||||
 | 
					 *   imxrt_config_gpio(GPIO_CCM_CLKO1);
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_XTAL_FREQUENCY       24000000
 | 
				
			||||||
 | 
					#define BOARD_CPU_FREQUENCY        528000000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_PRE_PERIPH_CLK_SEL   CCM_CBCMR_PRE_PERIPH_CLK_SEL_PLL1
 | 
				
			||||||
 | 
					#define IMXRT_PERIPH_CLK_SEL       CCM_CBCDR_PERIPH_CLK_SEL_PRE_PERIPH
 | 
				
			||||||
 | 
					#define IMXRT_ARM_PLL_DIV_SELECT   100
 | 
				
			||||||
 | 
					#define IMXRT_ARM_PODF_DIVIDER     2
 | 
				
			||||||
 | 
					#define IMXRT_AHB_PODF_DIVIDER     1
 | 
				
			||||||
 | 
					#define IMXRT_IPG_PODF_DIVIDER     4
 | 
				
			||||||
 | 
					#define IMXRT_PERCLK_CLK_SEL       CCM_CSCMR1_PERCLK_CLK_SEL_IPG_CLK_ROOT
 | 
				
			||||||
 | 
					#define IMXRT_PERCLK_PODF_DIVIDER  9
 | 
				
			||||||
 | 
					#define IMXRT_SEMC_PODF_DIVIDER    8
 | 
				
			||||||
 | 
					#define IMXRT_LPSPI_CLK_SELECT     CCM_CBCMR_LPSPI_CLK_SEL_PLL3_PFD0
 | 
				
			||||||
 | 
					#define IMXRT_LSPI_PODF_DIVIDER    8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_LPSPI_CLK_SELECT     CCM_CBCMR_LPSPI_CLK_SEL_PLL3_PFD0
 | 
				
			||||||
 | 
					#define IMXRT_LSPI_PODF_DIVIDER    8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_LPI2C_CLK_SELECT     CCM_CSCDR2_LPI2C_CLK_SEL_PLL3_60M
 | 
				
			||||||
 | 
					#define IMXRT_LSI2C_PODF_DIVIDER   5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_USDHC1_CLK_SELECT    CCM_CSCMR1_USDHC1_CLK_SEL_PLL2_PFD0
 | 
				
			||||||
 | 
					#define IMXRT_USDHC1_PODF_DIVIDER  2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_SYS_PLL_SELECT       CCM_ANALOG_PLL_SYS_DIV_SELECT_22
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_USB1_PLL_DIV_SELECT  CCM_ANALOG_PLL_USB1_DIV_SELECT_20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// #define BOARD_CPU_FREQUENCY \
 | 
				
			||||||
 | 
					//   (BOARD_XTAL_FREQUENCY * (IMXRT_ARM_PLL_DIV_SELECT / 2)) / IMXRT_ARM_PODF_DIVIDER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Define this to enable tracing */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					#  define IMXRT_TRACE_PODF_DIVIDER 1
 | 
				
			||||||
 | 
					#  define IMXRT_TRACE_CLK_SELECT   CCM_CBCMR_TRACE_CLK_SEL_PLL2_PFD0
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LED definitions **********************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* There are four LED status indicators located on the EVK Board.
 | 
				
			||||||
 | 
					 *  The functions of these LEDs include:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   - Main Power Supply(D3)
 | 
				
			||||||
 | 
					 *     Green: DC 5V main supply is normal.
 | 
				
			||||||
 | 
					 *     Red:   J2 input voltage is over 5.6V.
 | 
				
			||||||
 | 
					 *     Off:   The board is not powered.
 | 
				
			||||||
 | 
					 *   - Reset RED LED(D15)
 | 
				
			||||||
 | 
					 *   - OpenSDA LED(D16)
 | 
				
			||||||
 | 
					 *   - USER LED(D18)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Only a single LED, D18, is under software control.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LED index values for use with board_userled() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_USERLED     0
 | 
				
			||||||
 | 
					#define BOARD_NLEDS       1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LED bits for use with board_userled_all() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_USERLED_BIT (1 << BOARD_USERLED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This LED is not used by the board port unless CONFIG_ARCH_LEDS is
 | 
				
			||||||
 | 
					 * defined.  In that case, the usage by the board port is defined in
 | 
				
			||||||
 | 
					 * include/board.h and src/imxrt_autoleds.c. The LED is used to encode
 | 
				
			||||||
 | 
					 * OS-related events as follows:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   -------------------- ----------------------------- ------
 | 
				
			||||||
 | 
					 *   SYMBOL                   Meaning                   LED
 | 
				
			||||||
 | 
					 *   -------------------- ----------------------------- ------
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LED_STARTED       0  /* NuttX has been started  OFF    */
 | 
				
			||||||
 | 
					#define LED_HEAPALLOCATE  0  /* Heap has been allocated OFF    */
 | 
				
			||||||
 | 
					#define LED_IRQSENABLED   0  /* Interrupts enabled      OFF    */
 | 
				
			||||||
 | 
					#define LED_STACKCREATED  1  /* Idle stack created      ON     */
 | 
				
			||||||
 | 
					#define LED_INIRQ         2  /* In an interrupt         N/C    */
 | 
				
			||||||
 | 
					#define LED_SIGNAL        2  /* In a signal handler     N/C    */
 | 
				
			||||||
 | 
					#define LED_ASSERTION     2  /* An assertion failed     N/C    */
 | 
				
			||||||
 | 
					#define LED_PANIC         3  /* The system has crashed  FLASH  */
 | 
				
			||||||
 | 
					#undef  LED_IDLE             /* Not used                       */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Thus if the LED is statically on, NuttX has successfully  booted and is,
 | 
				
			||||||
 | 
					 * apparently, running normally.  If the LED is flashing at approximately
 | 
				
			||||||
 | 
					 * 2Hz, then a fatal error has been detected and the system has halted.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Button definitions *******************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The IMXRT board has one external user button
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 1. SW8 (IRQ88)   GPIO5-00
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BUTTON_SW8        0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BUTTON_SW8_BIT    (1 << BUTTON_SW8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SDIO *********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Pin drive characteristics - drive strength in particular may need tuning
 | 
				
			||||||
 | 
					 * for specific boards, but has been checked by scope on the EVKB to make
 | 
				
			||||||
 | 
					 * sure shapes are square with minimal ringing.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_USDHC1_DATA0   GPIO_USDHC1_DATA0_1  /* GPIO_SD_B0_02 */
 | 
				
			||||||
 | 
					#define GPIO_USDHC1_DATA1   GPIO_USDHC1_DATA1_1  /* GPIO_SD_B0_03 */
 | 
				
			||||||
 | 
					#define GPIO_USDHC1_DATA2   GPIO_USDHC1_DATA2_1  /* GPIO_SD_B0_04 */
 | 
				
			||||||
 | 
					#define GPIO_USDHC1_DATA3   GPIO_USDHC1_DATA3_1  /* GPIO_SD_B0_05 */
 | 
				
			||||||
 | 
					#define GPIO_USDHC1_CLK     GPIO_USDHC1_CLK_1    /* GPIO_SD_B0_01 */
 | 
				
			||||||
 | 
					#define GPIO_USDHC1_CMD     GPIO_USDHC1_CMD_1    /* GPIO_SD_B0_00 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PIN_USDHC1_D0       (GPIO_USDHC1_DATA0 | IOMUX_USDHC1_DATAX_DEFAULT)
 | 
				
			||||||
 | 
					#define PIN_USDHC1_D1       (GPIO_USDHC1_DATA1 | IOMUX_USDHC1_DATAX_DEFAULT)
 | 
				
			||||||
 | 
					#define PIN_USDHC1_D2       (GPIO_USDHC1_DATA2 | IOMUX_USDHC1_DATAX_DEFAULT)
 | 
				
			||||||
 | 
					#define PIN_USDHC1_D3       (GPIO_USDHC1_DATA3 | IOMUX_USDHC1_DATAX_DEFAULT)
 | 
				
			||||||
 | 
					#define PIN_USDHC1_DCLK     (GPIO_USDHC1_CLK   | IOMUX_USDHC1_CLK_DEFAULT)
 | 
				
			||||||
 | 
					#define PIN_USDHC1_CMD      (GPIO_USDHC1_CMD   | IOMUX_USDHC1_CMD_DEFAULT)
 | 
				
			||||||
 | 
					#define PIN_USDHC1_CD       (GPIO_USDHC1_CD_2  | IOMUX_USDHC1_CLK_DEFAULT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 386 KHz for initial inquiry stuff */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_USDHC_IDMODE_PRESCALER    USDHC_SYSCTL_SDCLKFS_DIV256
 | 
				
			||||||
 | 
					#define BOARD_USDHC_IDMODE_DIVISOR      USDHC_SYSCTL_DVS_DIV(2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 24.8MHz for other modes */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_USDHC_MMCMODE_PRESCALER   USDHC_SYSCTL_SDCLKFS_DIV8
 | 
				
			||||||
 | 
					#define BOARD_USDHC_MMCMODE_DIVISOR     USDHC_SYSCTL_DVS_DIV(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_USDHC_SD1MODE_PRESCALER   USDHC_SYSCTL_SDCLKFS_DIV8
 | 
				
			||||||
 | 
					#define BOARD_USDHC_SD1MODE_DIVISOR     USDHC_SYSCTL_DVS_DIV(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_USDHC_SD4MODE_PRESCALER   USDHC_SYSCTL_SDCLKFS_DIV8
 | 
				
			||||||
 | 
					#define BOARD_USDHC_SD4MODE_DIVISOR     USDHC_SYSCTL_DVS_DIV(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LCD **********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LCD
 | 
				
			||||||
 | 
					/* LCD controller */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA23    (GPIO_LCD_DATA23_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA22    (GPIO_LCD_DATA22_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA21    (GPIO_LCD_DATA21_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA20    (GPIO_LCD_DATA20_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA19    (GPIO_LCD_DATA19_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA18    (GPIO_LCD_DATA18_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA17    (GPIO_LCD_DATA17_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA16    (GPIO_LCD_DATA16_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA15    (GPIO_LCD_DATA15_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA14    (GPIO_LCD_DATA14_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA13    (GPIO_LCD_DATA13_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA12    (GPIO_LCD_DATA12_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA11    (GPIO_LCD_DATA11_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA10    (GPIO_LCD_DATA10_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA09    (GPIO_LCD_DATA09_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA08    (GPIO_LCD_DATA08_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA07    (GPIO_LCD_DATA07_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA06    (GPIO_LCD_DATA06_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA05    (GPIO_LCD_DATA05_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA04    (GPIO_LCD_DATA04_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA03    (GPIO_LCD_DATA03_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA02    (GPIO_LCD_DATA02_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA01    (GPIO_LCD_DATA01_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_DATA00    (GPIO_LCD_DATA00_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_ENABLE    (GPIO_LCD_ENABLE_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_HSYNC     (GPIO_LCD_HSYNC_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_VSYNC     (GPIO_LCD_VSYNC_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#  define GPIO_LCD_CLK       (GPIO_LCD_CLK_1 | IOMUX_LCD_DEFAULT)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ETH Disambiguation *******************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_ENET_TX_DATA00  (GPIO_ENET_TX_DATA00_1| \
 | 
				
			||||||
 | 
					                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_07 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_TX_DATA01  (GPIO_ENET_TX_DATA01_1| \
 | 
				
			||||||
 | 
					                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_08 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_RX_DATA00  (GPIO_ENET_RX_DATA00_1| \
 | 
				
			||||||
 | 
					                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_04 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_RX_DATA01  (GPIO_ENET_RX_DATA01_1| \
 | 
				
			||||||
 | 
					                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_05 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_MDIO       (GPIO_ENET_MDIO_3|IOMUX_ENET_MDIO_DEFAULT)   /* GPIO_EMC_41 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_MDC        (GPIO_ENET_MDC_3|IOMUX_ENET_MDC_DEFAULT)     /* GPIO_EMC_40 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_RX_EN      (GPIO_ENET_RX_EN_1|IOMUX_ENET_EN_DEFAULT)    /* GPIO_B1_06 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_RX_ER      (GPIO_ENET_RX_ER_1|IOMUX_ENET_RXERR_DEFAULT) /* GPIO_B1_11 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_TX_CLK     (GPIO_ENET_REF_CLK_2|\
 | 
				
			||||||
 | 
					                              IOMUX_ENET_TX_CLK_DEFAULT)                  /* GPIO_B1_10 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_TX_EN      (GPIO_ENET_TX_EN_1|IOMUX_ENET_EN_DEFAULT)    /* GPIO_B1_09 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* PIO Disambiguation *******************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPUARTs
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Virtual console port provided by OpenSDA on UART1.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPUART1 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART1_RX   (GPIO_LPUART1_RX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B0_13 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART1_TX   (GPIO_LPUART1_TX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B0_12 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPUART2 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART2_RX   (GPIO_LPUART2_RX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_03 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART2_TX   (GPIO_LPUART2_TX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_02 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPUART3 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART3_RX   (GPIO_LPUART3_RX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_07 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART3_TX   (GPIO_LPUART3_TX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_06 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPUART4 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART4_RX   (GPIO_LPUART4_RX_1|IOMUX_UART_DEFAULT) /* GPIO_SD_B1_01 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART4_TX   (GPIO_LPUART4_TX_1|IOMUX_UART_DEFAULT) /* GPIO_SD_B1_00 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPUART8 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART8_RX   (GPIO_LPUART8_RX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_11 */
 | 
				
			||||||
 | 
					#define GPIO_LPUART8_TX   (GPIO_LPUART8_TX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_10 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPI2C1 */
 | 
				
			||||||
 | 
					#define GPIO_LPI2C1_SDA   (GPIO_LPI2C1_SDA_2|IOMUX_LPI2C_DEFAULT) /* GPIO_AD_B1_01 */
 | 
				
			||||||
 | 
					#define GPIO_LPI2C1_SCL   (GPIO_LPI2C1_SCL_2|IOMUX_LPI2C_DEFAULT) /* GPIO_AD_B1_00 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPI2C3 */
 | 
				
			||||||
 | 
					#define GPIO_LPI2C3_SDA   (GPIO_LPI2C3_SDA_2|IOMUX_LPI2C_DEFAULT) /* GPIO_EMC_21 */
 | 
				
			||||||
 | 
					#define GPIO_LPI2C3_SCL   (GPIO_LPI2C3_SCL_2|IOMUX_LPI2C_DEFAULT) /* GPIO_EMC_22 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPSPI */
 | 
				
			||||||
 | 
					#define GPIO_LPSPI3_SCK   (GPIO_LPSPI3_SCK_2|IOMUX_LPSPI_DEFAULT) /* GPIO_AD_B0_00 */
 | 
				
			||||||
 | 
					#define GPIO_LPSPI3_MISO  (GPIO_LPSPI3_SDI_2|IOMUX_LPSPI_DEFAULT) /* GPIO_AD_B0_02 */
 | 
				
			||||||
 | 
					#define GPIO_LPSPI3_MOSI  (GPIO_LPSPI3_SDO_2|IOMUX_LPSPI_DEFAULT) /* GPIO_AD_B0_01 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FLEXCAN2 */
 | 
				
			||||||
 | 
					#define GPIO_FLEXCAN2_TX     (GPIO_FLEXCAN2_TX_3|IOMUX_CAN_DEFAULT) /* GPIO_AD_B0_14 */
 | 
				
			||||||
 | 
					#define GPIO_FLEXCAN2_RX     (GPIO_FLEXCAN2_RX_3|IOMUX_CAN_DEFAULT) /* GPIO_AD_B0_15 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Types
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __ASSEMBLY__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef EXTERN
 | 
				
			||||||
 | 
					#if defined(__cplusplus)
 | 
				
			||||||
 | 
					#define EXTERN extern "C"
 | 
				
			||||||
 | 
					extern "C"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define EXTERN extern
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef EXTERN
 | 
				
			||||||
 | 
					#if defined(__cplusplus)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __ASSEMBLY__ */
 | 
				
			||||||
 | 
					#endif /* __BOARDS_ARM_IMXRT_XIDATONG_INCLUDE_BOARD_H */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,103 @@
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					# boards/arm/imxrt/xidatong/kernel/Makefile
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					# contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					# this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					# ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					# "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					# License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					# License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					# under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOPDIR)/Make.defs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The entry point name (if none is provided in the .config file)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CONFIG_USER_ENTRYPOINT ?= user_start
 | 
				
			||||||
 | 
					ENTRYPT = $(patsubst "%",%,$(CONFIG_USER_ENTRYPOINT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get the paths to the libraries and the links script path in format that
 | 
				
			||||||
 | 
					# is appropriate for the host OS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  # Windows-native toolchains
 | 
				
			||||||
 | 
					  USER_LIBPATHS = ${shell for path in $(USERLIBS); do dir=`dirname $(TOPDIR)$(DELIM)$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
 | 
				
			||||||
 | 
					  USER_LDSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)memory.ld}"
 | 
				
			||||||
 | 
					  USER_LDSCRIPT += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)user-space.ld}"
 | 
				
			||||||
 | 
					  USER_HEXFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.hex}"
 | 
				
			||||||
 | 
					  USER_SRECFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.srec}"
 | 
				
			||||||
 | 
					  USER_BINFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.bin}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  # Linux/Cygwin-native toolchain
 | 
				
			||||||
 | 
					  USER_LIBPATHS = $(addprefix -L$(TOPDIR)$(DELIM),$(dir $(USERLIBS)))
 | 
				
			||||||
 | 
					  USER_LDSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)memory.ld
 | 
				
			||||||
 | 
					  USER_LDSCRIPT += -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)user-space.ld
 | 
				
			||||||
 | 
					  USER_HEXFILE += "$(TOPDIR)$(DELIM)nuttx_user.hex"
 | 
				
			||||||
 | 
					  USER_SRECFILE += "$(TOPDIR)$(DELIM)nuttx_user.srec"
 | 
				
			||||||
 | 
					  USER_BINFILE += "$(TOPDIR)$(DELIM)nuttx_user.bin"
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT)
 | 
				
			||||||
 | 
					USER_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(USERLIBS))))
 | 
				
			||||||
 | 
					USER_LIBGCC = "${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Source files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSRCS = imxrt_userspace.c
 | 
				
			||||||
 | 
					COBJS = $(CSRCS:.c=$(OBJEXT))
 | 
				
			||||||
 | 
					OBJS  = $(COBJS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Targets:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					all: $(TOPDIR)$(DELIM)nuttx_user.elf $(TOPDIR)$(DELIM)User.map
 | 
				
			||||||
 | 
					.PHONY: nuttx_user.elf depend clean distclean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(COBJS): %$(OBJEXT): %.c
 | 
				
			||||||
 | 
						$(call COMPILE, $<, $@)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create the nuttx_user.elf file containing all of the user-mode code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nuttx_user.elf: $(OBJS)
 | 
				
			||||||
 | 
						$(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) --start-group $(USER_LDLIBS) --end-group $(USER_LIBGCC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(TOPDIR)$(DELIM)nuttx_user.elf: nuttx_user.elf
 | 
				
			||||||
 | 
						@echo "LD: nuttx_user.elf"
 | 
				
			||||||
 | 
						$(Q) cp -a nuttx_user.elf $(TOPDIR)$(DELIM)nuttx_user.elf
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_INTELHEX_BINARY),y)
 | 
				
			||||||
 | 
						@echo "CP: nuttx_user.hex"
 | 
				
			||||||
 | 
						$(Q) $(OBJCOPY) $(OBJCOPYARGS) -O ihex nuttx_user.elf $(USER_HEXFILE)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_MOTOROLA_SREC),y)
 | 
				
			||||||
 | 
						@echo "CP: nuttx_user.srec"
 | 
				
			||||||
 | 
						$(Q) $(OBJCOPY) $(OBJCOPYARGS) -O srec nuttx_user.elf $(USER_SRECFILE)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_RAW_BINARY),y)
 | 
				
			||||||
 | 
						@echo "CP: nuttx_user.bin"
 | 
				
			||||||
 | 
						$(Q) $(OBJCOPY) $(OBJCOPYARGS) -O binary nuttx_user.elf $(USER_BINFILE)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(TOPDIR)$(DELIM)User.map: nuttx_user.elf
 | 
				
			||||||
 | 
						@echo "MK: User.map"
 | 
				
			||||||
 | 
						$(Q) $(NM) nuttx_user.elf >$(TOPDIR)$(DELIM)User.map
 | 
				
			||||||
 | 
						$(Q) $(CROSSDEV)size nuttx_user.elf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.depend:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					depend: .depend
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean:
 | 
				
			||||||
 | 
						$(call DELFILE, nuttx_user.elf)
 | 
				
			||||||
 | 
						$(call DELFILE, "$(TOPDIR)$(DELIM)nuttx_user.*")
 | 
				
			||||||
 | 
						$(call DELFILE, "$(TOPDIR)$(DELIM)User.map")
 | 
				
			||||||
 | 
						$(call CLEAN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					distclean: clean
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,122 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/kernel/imxrt_userspace.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_userspace.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/userspace.h>
 | 
				
			||||||
 | 
					#include <nuttx/wqueue.h>
 | 
				
			||||||
 | 
					#include <nuttx/mm/mm.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_BUILD_PROTECTED) && !defined(__KERNEL__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Configuration ************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef CONFIG_NUTTX_USERSPACE
 | 
				
			||||||
 | 
					#  error "CONFIG_NUTTX_USERSPACE not defined"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if CONFIG_NUTTX_USERSPACE != 0x60200000
 | 
				
			||||||
 | 
					#  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* These 'addresses' of these values are setup by the linker script.
 | 
				
			||||||
 | 
					 * They are not actual uint32_t storage locations!
 | 
				
			||||||
 | 
					 * They are only used meaningfully in the following way:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  - The linker script defines, for example, the symbol_sdata.
 | 
				
			||||||
 | 
					 *  - The declareion extern uint32_t _sdata; makes C happy.  C will believe
 | 
				
			||||||
 | 
					 *    that the value _sdata is the address of a uint32_t variable _data (it
 | 
				
			||||||
 | 
					 *    is not!).
 | 
				
			||||||
 | 
					 *  - We can recoved the linker value then by simply taking the address of
 | 
				
			||||||
 | 
					 *    of _data.  like:  uint32_t *pdata = &_sdata;
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern uint32_t _stext;           /* Start of .text */
 | 
				
			||||||
 | 
					extern uint32_t _etext;           /* End_1 of .text + .rodata */
 | 
				
			||||||
 | 
					extern const uint32_t _eronly;    /* End+1 of read only section (.text + .rodata) */
 | 
				
			||||||
 | 
					extern uint32_t _sdata;           /* Start of .data */
 | 
				
			||||||
 | 
					extern uint32_t _edata;           /* End+1 of .data */
 | 
				
			||||||
 | 
					extern uint32_t _sbss;            /* Start of .bss */
 | 
				
			||||||
 | 
					extern uint32_t _ebss;            /* End+1 of .bss */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This is the user space entry point */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int CONFIG_USER_ENTRYPOINT(int argc, char *argv[]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const struct userspace_s userspace locate_data(".userspace") =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* General memory map */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .us_entrypoint    = (main_t)CONFIG_USER_ENTRYPOINT,
 | 
				
			||||||
 | 
					  .us_textstart     = (uintptr_t)&_stext,
 | 
				
			||||||
 | 
					  .us_textend       = (uintptr_t)&_etext,
 | 
				
			||||||
 | 
					  .us_datasource    = (uintptr_t)&_eronly,
 | 
				
			||||||
 | 
					  .us_datastart     = (uintptr_t)&_sdata,
 | 
				
			||||||
 | 
					  .us_dataend       = (uintptr_t)&_edata,
 | 
				
			||||||
 | 
					  .us_bssstart      = (uintptr_t)&_sbss,
 | 
				
			||||||
 | 
					  .us_bssend        = (uintptr_t)&_ebss,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Memory manager heap structure */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .us_heap          = &g_mmheap,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Task/thread startup routines */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .task_startup     = nxtask_startup,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Signal handler trampoline */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .signal_handler   = up_signal_handler,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* User-space work queue support (declared in include/nuttx/wqueue.h) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_LIBC_USRWORK
 | 
				
			||||||
 | 
					  .work_usrstart    = work_usrstart,
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_BUILD_PROTECTED && !__KERNEL__ */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					# boards/arm/imxrt/xidatong/scripts/Make.defs
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					# contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					# this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					# ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					# "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					# License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					# License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					# under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOPDIR)/.config
 | 
				
			||||||
 | 
					include $(TOPDIR)/tools/Config.mk
 | 
				
			||||||
 | 
					include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_ARMV7M_DTCM),y)
 | 
				
			||||||
 | 
					  LDSCRIPT = flash-dtcm.ld
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  LDSCRIPT = flash-ocram.ld
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
 | 
				
			||||||
 | 
					  ARCHOPTIMIZATION = -g
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifneq ($(CONFIG_DEBUG_NOOPT),y)
 | 
				
			||||||
 | 
					  ARCHOPTIMIZATION += $(MAXOPTIMIZATION)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ARCHCFLAGS = -fno-builtin
 | 
				
			||||||
 | 
					ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
 | 
				
			||||||
 | 
					ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -fno-strict-aliasing
 | 
				
			||||||
 | 
					ARCHWARNINGSXX = -Wall -Wshadow -Wundef
 | 
				
			||||||
 | 
					ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS := $(APPPATHS) $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
 | 
				
			||||||
 | 
					CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 | 
				
			||||||
 | 
					CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
 | 
				
			||||||
 | 
					CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
 | 
				
			||||||
 | 
					CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
 | 
				
			||||||
 | 
					AFLAGS := $(CFLAGS) -D__ASSEMBLY__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NXFLATLDFLAGS1 = -r -d -warn-common
 | 
				
			||||||
 | 
					NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
 | 
				
			||||||
 | 
					LDNXFLATFLAGS = -e main -s 2048
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Loadable module definitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LDMODULEFLAGS = -r -e module_initialize
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
 | 
				
			||||||
 | 
					  LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
 | 
				
			||||||
 | 
					  LDFLAGS += -g
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,140 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/scripts/flash-ocram.ld
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Specify the memory areas */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MEMORY
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  flash (rx)  : ORIGIN = 0x60000000, LENGTH = 0x04000000
 | 
				
			||||||
 | 
					  sram  (rwx) : ORIGIN = 0x20200000, LENGTH = 0x00080000
 | 
				
			||||||
 | 
					  itcm  (rwx) : ORIGIN = 0x00000000, LENGTH = 0x00020000
 | 
				
			||||||
 | 
					  dtcm  (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OUTPUT_ARCH(arm)
 | 
				
			||||||
 | 
					EXTERN(_vectors)
 | 
				
			||||||
 | 
					EXTERN(g_flash_config)
 | 
				
			||||||
 | 
					EXTERN(g_image_vector_table)
 | 
				
			||||||
 | 
					EXTERN(g_boot_data)
 | 
				
			||||||
 | 
					EXTERN(g_dcd_data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENTRY(_stext)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SECTIONS
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /* Image Vector Table and Boot Data for booting from external flash */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .boot_hdr : ALIGN(4)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        FILL(0xff)
 | 
				
			||||||
 | 
					        __boot_hdr_start__ = ABSOLUTE(.) ;
 | 
				
			||||||
 | 
					        KEEP(*(.boot_hdr.conf))
 | 
				
			||||||
 | 
					        . = 0x1000 ;
 | 
				
			||||||
 | 
					        KEEP(*(.boot_hdr.ivt))
 | 
				
			||||||
 | 
					        . = 0x1020 ;
 | 
				
			||||||
 | 
					        KEEP(*(.boot_hdr.boot_data))
 | 
				
			||||||
 | 
					        . = 0x1030 ;
 | 
				
			||||||
 | 
					        KEEP(*(.boot_hdr.dcd_data))
 | 
				
			||||||
 | 
					        __boot_hdr_end__ = ABSOLUTE(.) ;
 | 
				
			||||||
 | 
					        . = 0x2000 ;
 | 
				
			||||||
 | 
					    } >flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .text :
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _stext = ABSOLUTE(.);
 | 
				
			||||||
 | 
					        *(.vectors)
 | 
				
			||||||
 | 
					        *(.text .text.*)
 | 
				
			||||||
 | 
					        *(.fixup)
 | 
				
			||||||
 | 
					        *(.gnu.warning)
 | 
				
			||||||
 | 
					        *(.rodata .rodata.*)
 | 
				
			||||||
 | 
					        *(.gnu.linkonce.t.*)
 | 
				
			||||||
 | 
					        *(.glue_7)
 | 
				
			||||||
 | 
					        *(.glue_7t)
 | 
				
			||||||
 | 
					        *(.got)
 | 
				
			||||||
 | 
					        *(.gcc_except_table)
 | 
				
			||||||
 | 
					        *(.gnu.linkonce.r.*)
 | 
				
			||||||
 | 
					        _etext = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    } > flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .init_section :
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _sinit = ABSOLUTE(.);
 | 
				
			||||||
 | 
					        *(.init_array .init_array.*)
 | 
				
			||||||
 | 
					        _einit = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    } > flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .ARM.extab :
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        *(.ARM.extab*)
 | 
				
			||||||
 | 
					    } > flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .ARM.exidx :
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        __exidx_start = ABSOLUTE(.);
 | 
				
			||||||
 | 
					        *(.ARM.exidx*)
 | 
				
			||||||
 | 
					        __exidx_end = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    } > flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _eronly = ABSOLUTE(.);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .data :
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _sdata = ABSOLUTE(.);
 | 
				
			||||||
 | 
					        *(.data .data.*)
 | 
				
			||||||
 | 
					        *(.gnu.linkonce.d.*)
 | 
				
			||||||
 | 
					        CONSTRUCTORS
 | 
				
			||||||
 | 
					        . = ALIGN(4);
 | 
				
			||||||
 | 
					        _edata = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    } > sram AT > flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .ramfunc ALIGN(4):
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _sramfuncs = ABSOLUTE(.);
 | 
				
			||||||
 | 
					        *(.ramfunc  .ramfunc.*)
 | 
				
			||||||
 | 
					        _eramfuncs = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    } > sram AT > flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _framfuncs = LOADADDR(.ramfunc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .bss :
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _sbss = ABSOLUTE(.);
 | 
				
			||||||
 | 
					        *(.bss .bss.*)
 | 
				
			||||||
 | 
					        *(.gnu.linkonce.b.*)
 | 
				
			||||||
 | 
					        *(COMMON)
 | 
				
			||||||
 | 
					        . = ALIGN(4);
 | 
				
			||||||
 | 
					        _ebss = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    } > sram
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Stabs debugging sections. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .stab 0 : { *(.stab) }
 | 
				
			||||||
 | 
					    .stabstr 0 : { *(.stabstr) }
 | 
				
			||||||
 | 
					    .stab.excl 0 : { *(.stab.excl) }
 | 
				
			||||||
 | 
					    .stab.exclstr 0 : { *(.stab.exclstr) }
 | 
				
			||||||
 | 
					    .stab.index 0 : { *(.stab.index) }
 | 
				
			||||||
 | 
					    .stab.indexstr 0 : { *(.stab.indexstr) }
 | 
				
			||||||
 | 
					    .comment 0 : { *(.comment) }
 | 
				
			||||||
 | 
					    .debug_abbrev 0 : { *(.debug_abbrev) }
 | 
				
			||||||
 | 
					    .debug_info 0 : { *(.debug_info) }
 | 
				
			||||||
 | 
					    .debug_line 0 : { *(.debug_line) }
 | 
				
			||||||
 | 
					    .debug_pubnames 0 : { *(.debug_pubnames) }
 | 
				
			||||||
 | 
					    .debug_aranges 0 : { *(.debug_aranges) }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,104 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/scripts/kernel-space.ld
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* NOTE:  This depends on the memory.ld script having been included prior to
 | 
				
			||||||
 | 
					 * this script.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OUTPUT_ARCH(arm)
 | 
				
			||||||
 | 
					EXTERN(_vectors)
 | 
				
			||||||
 | 
					ENTRY(_stext)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SECTIONS
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .text :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _stext = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    *(.vectors)
 | 
				
			||||||
 | 
					    *(.text .text.*)
 | 
				
			||||||
 | 
					    *(.fixup)
 | 
				
			||||||
 | 
					    *(.gnu.warning)
 | 
				
			||||||
 | 
					    *(.rodata .rodata.*)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.t.*)
 | 
				
			||||||
 | 
					    *(.glue_7)
 | 
				
			||||||
 | 
					    *(.glue_7t)
 | 
				
			||||||
 | 
					    *(.got)
 | 
				
			||||||
 | 
					    *(.gcc_except_table)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.r.*)
 | 
				
			||||||
 | 
					    _etext = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > kflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .init_section :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _sinit = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    KEEP(*(.init_array .init_array.*))
 | 
				
			||||||
 | 
					    _einit = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > kflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .ARM.extab :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.ARM.extab*)
 | 
				
			||||||
 | 
					  } > kflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  __exidx_start = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  .ARM.exidx :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.ARM.exidx*)
 | 
				
			||||||
 | 
					  } > kflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  __exidx_end = ABSOLUTE(.);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  _eronly = ABSOLUTE(.);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .data :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _sdata = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    *(.data .data.*)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.d.*)
 | 
				
			||||||
 | 
					    CONSTRUCTORS
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    _edata = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > kocram AT > kflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .bss :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _sbss = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    *(.bss .bss.*)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.b.*)
 | 
				
			||||||
 | 
					    *(COMMON)
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    _ebss = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > kocram
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Stabs debugging sections */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .stab 0 : { *(.stab) }
 | 
				
			||||||
 | 
					  .stabstr 0 : { *(.stabstr) }
 | 
				
			||||||
 | 
					  .stab.excl 0 : { *(.stab.excl) }
 | 
				
			||||||
 | 
					  .stab.exclstr 0 : { *(.stab.exclstr) }
 | 
				
			||||||
 | 
					  .stab.index 0 : { *(.stab.index) }
 | 
				
			||||||
 | 
					  .stab.indexstr 0 : { *(.stab.indexstr) }
 | 
				
			||||||
 | 
					  .comment 0 : { *(.comment) }
 | 
				
			||||||
 | 
					  .debug_abbrev 0 : { *(.debug_abbrev) }
 | 
				
			||||||
 | 
					  .debug_info 0 : { *(.debug_info) }
 | 
				
			||||||
 | 
					  .debug_line 0 : { *(.debug_line) }
 | 
				
			||||||
 | 
					  .debug_pubnames 0 : { *(.debug_pubnames) }
 | 
				
			||||||
 | 
					  .debug_aranges 0 : { *(.debug_aranges) }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,67 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/scripts/memory.ld
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The i.MXRT1050-EVK has 64Mb of Hyper FLASH beginning at address,
 | 
				
			||||||
 | 
					 * 0x0060:0000, 512Kb of DTCM RAM beginning at 0x2000:0000, and 512Kb OCRAM
 | 
				
			||||||
 | 
					 * beginning at 0x2020:0000.  Neither DTCM or SDRAM are used in this
 | 
				
			||||||
 | 
					 * configuration.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The user and kernel space partitions will be spanned with a single
 | 
				
			||||||
 | 
					 * region of size 2**n bytes.  As a consequence, as the partitions increase
 | 
				
			||||||
 | 
					 * in size, the alignment requirement also increases.  The sizes below give
 | 
				
			||||||
 | 
					 * the largest possible user address spaces (but leave far too much for the
 | 
				
			||||||
 | 
					 * OS).
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The solution to this wasted memory is to (1) use more than one region to
 | 
				
			||||||
 | 
					 * span the user spaces, or (2) poke holes in a larger region (via sub-
 | 
				
			||||||
 | 
					 * regions) to trim it to fit better.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * A detailed memory map for the 512KB SRAM region is as follows:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   0x2020 0000:  Kernel .data region.  Typical size: 0.1KB
 | 
				
			||||||
 | 
					 *   ------ ----   Kernel .bss  region.  Typical size: 1.8KB
 | 
				
			||||||
 | 
					 *   0x2020 0800:  Kernel IDLE thread stack (approximate).  Size is
 | 
				
			||||||
 | 
					 *                 determined by CONFIG_IDLETHREAD_STACKSIZE and
 | 
				
			||||||
 | 
					 *                 adjustments for alignment.  Typical is 1KB.
 | 
				
			||||||
 | 
					 *   ------ ----   Padded to 4KB
 | 
				
			||||||
 | 
					 *   0x2040 0000:  User .data region.  Size is variable.
 | 
				
			||||||
 | 
					 *   ------- ----  User .bss region  Size is variable.
 | 
				
			||||||
 | 
					 *   0x2042 0000:  Beginning of kernel heap.  Size determined by
 | 
				
			||||||
 | 
					 *                 CONFIG_MM_KERNEL_HEAPSIZE.
 | 
				
			||||||
 | 
					 *   ------ ----   Beginning of user heap.  Can vary with other settings.
 | 
				
			||||||
 | 
					 *   0x2080 0000:  End+1 of mappable OCRAM
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Specify the memory areas */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MEMORY
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* 64Mb of HyperFLASH */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  kflash (rx)  : ORIGIN = 0x60000000, LENGTH = 1M
 | 
				
			||||||
 | 
					  uflash (rx)  : ORIGIN = 0x60200000, LENGTH = 1M
 | 
				
			||||||
 | 
					  flash  (rx)  : ORIGIN = 0x60400000, LENGTH = 62M
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* 512Kb of OCRAM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  dtcm   (rwx) : ORIGIN = 0x20000000, LENGTH = 512K
 | 
				
			||||||
 | 
					  kocram (rwx) : ORIGIN = 0x20200000, LENGTH = 256K
 | 
				
			||||||
 | 
					  uocram (rwx) : ORIGIN = 0x20240000, LENGTH = 256K
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,118 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/scripts/user-space.ld
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* NOTE:  This depends on the memory.ld script having been included prior to
 | 
				
			||||||
 | 
					 * this script.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Make sure that the critical memory management functions are in user-space.
 | 
				
			||||||
 | 
					 * the user heap memory manager will reside in user-space but be usable both
 | 
				
			||||||
 | 
					 * by kernel- and user-space code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTERN(umm_initialize)
 | 
				
			||||||
 | 
					EXTERN(umm_addregion)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTERN(malloc)
 | 
				
			||||||
 | 
					EXTERN(realloc)
 | 
				
			||||||
 | 
					EXTERN(zalloc)
 | 
				
			||||||
 | 
					EXTERN(free)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OUTPUT_ARCH(arm)
 | 
				
			||||||
 | 
					SECTIONS
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .userspace :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.userspace)
 | 
				
			||||||
 | 
					  } > uflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .text :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _stext = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    *(.text .text.*)
 | 
				
			||||||
 | 
					    *(.fixup)
 | 
				
			||||||
 | 
					    *(.gnu.warning)
 | 
				
			||||||
 | 
					    *(.rodata .rodata.*)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.t.*)
 | 
				
			||||||
 | 
					    *(.glue_7)
 | 
				
			||||||
 | 
					    *(.glue_7t)
 | 
				
			||||||
 | 
					    *(.got)
 | 
				
			||||||
 | 
					    *(.gcc_except_table)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.r.*)
 | 
				
			||||||
 | 
					    _etext = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > uflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .init_section :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _sinit = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    KEEP(*(.init_array .init_array.*))
 | 
				
			||||||
 | 
					    _einit = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > uflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .ARM.extab :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.ARM.extab*)
 | 
				
			||||||
 | 
					  } > uflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  __exidx_start = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  .ARM.exidx :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.ARM.exidx*)
 | 
				
			||||||
 | 
					  } > uflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  __exidx_end = ABSOLUTE(.);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  _eronly = ABSOLUTE(.);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .data :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _sdata = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    *(.data .data.*)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.d.*)
 | 
				
			||||||
 | 
					    CONSTRUCTORS
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    _edata = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > uocram AT > uflash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .bss :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _sbss = ABSOLUTE(.);
 | 
				
			||||||
 | 
					    *(.bss .bss.*)
 | 
				
			||||||
 | 
					    *(.gnu.linkonce.b.*)
 | 
				
			||||||
 | 
					    *(COMMON)
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    _ebss = ABSOLUTE(.);
 | 
				
			||||||
 | 
					  } > uocram
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Stabs debugging sections */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .stab 0 : { *(.stab) }
 | 
				
			||||||
 | 
					  .stabstr 0 : { *(.stabstr) }
 | 
				
			||||||
 | 
					  .stab.excl 0 : { *(.stab.excl) }
 | 
				
			||||||
 | 
					  .stab.exclstr 0 : { *(.stab.exclstr) }
 | 
				
			||||||
 | 
					  .stab.index 0 : { *(.stab.index) }
 | 
				
			||||||
 | 
					  .stab.indexstr 0 : { *(.stab.indexstr) }
 | 
				
			||||||
 | 
					  .comment 0 : { *(.comment) }
 | 
				
			||||||
 | 
					  .debug_abbrev 0 : { *(.debug_abbrev) }
 | 
				
			||||||
 | 
					  .debug_info 0 : { *(.debug_info) }
 | 
				
			||||||
 | 
					  .debug_line 0 : { *(.debug_line) }
 | 
				
			||||||
 | 
					  .debug_pubnames 0 : { *(.debug_pubnames) }
 | 
				
			||||||
 | 
					  .debug_aranges 0 : { *(.debug_aranges) }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,69 @@
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					# boards/arm/imxrt/xidatong/src/Makefile
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					# contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					# this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					# ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					# "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					# License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					# License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					# under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOPDIR)/Make.defs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSRCS = imxrt_boot.c imxrt_flexspi_nor_boot.c imxrt_flexspi_nor_flash.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_IMXRT_SDRAMC),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_sdram.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_BOARDCTL),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_appinit.c imxrt_bringup.c
 | 
				
			||||||
 | 
					else ifeq ($(CONFIG_BOARD_LATE_INITIALIZE),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_bringup.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_ARCH_LEDS),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_autoleds.c
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					CSRCS += imxrt_userleds.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_ARCH_BUTTONS),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_buttons.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_IMXRT_ENET),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_ethernet.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_IMXRT_LPSPI),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_spi.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_IMXRT_LCD),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_lcd.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_MMCSD_SPI),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_mmcsd_spi.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_DEV_GPIO),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_gpio.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(CONFIG_XIDATONG_SDRAM),y)
 | 
				
			||||||
 | 
					CSRCS += imxrt_sdram_ini_dcd.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOPDIR)/boards/Board.mk
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,84 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_appinit.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_appinit.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_BOARDCTL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_app_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Perform application specific initialization.  This function is never
 | 
				
			||||||
 | 
					 *   called directly from application code, but only indirectly via the
 | 
				
			||||||
 | 
					 *   (non-standard) boardctl() interface using the command BOARDIOC_INIT.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *   arg - The boardctl() argument is passed to the board_app_initialize()
 | 
				
			||||||
 | 
					 *         implementation without modification.  The argument has no
 | 
				
			||||||
 | 
					 *         meaning to NuttX; the meaning of the argument is a contract
 | 
				
			||||||
 | 
					 *         between the board-specific initialization logic and the
 | 
				
			||||||
 | 
					 *         matching application logic.  The value could be such things as a
 | 
				
			||||||
 | 
					 *         mode enumeration value, a set of DIP switch switch settings, a
 | 
				
			||||||
 | 
					 *         pointer to configuration data read from a file or serial FLASH,
 | 
				
			||||||
 | 
					 *         or whatever you would like to do with it.  Every implementation
 | 
				
			||||||
 | 
					 *         should accept zero/NULL as a default configuration.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   Zero (OK) is returned on success; a negated errno value is returned on
 | 
				
			||||||
 | 
					 *   any failure to indicate the nature of the failure.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int board_app_initialize(uintptr_t arg)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifndef CONFIG_BOARD_LATE_INITIALIZE
 | 
				
			||||||
 | 
					  /* Perform board initialization */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return imxrt_bringup();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_BOARDCTL */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,175 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_autoleds.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_autoleds.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* There are four LED status indicators located on the EVK Board.  The
 | 
				
			||||||
 | 
					 * functions of these LEDs include:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   - Main Power Supply(D3)
 | 
				
			||||||
 | 
					 *     Green: DC 5V main supply is normal.
 | 
				
			||||||
 | 
					 *     Red:   J2 input voltage is over 5.6V.
 | 
				
			||||||
 | 
					 *     Off:   The board is not powered.
 | 
				
			||||||
 | 
					 *   - Reset RED LED(D15)
 | 
				
			||||||
 | 
					 *   - OpenSDA LED(D16)
 | 
				
			||||||
 | 
					 *   - USER LED(D18)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Only a single LED, D18, is under software control.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This LED is not used by the board port unless CONFIG_ARCH_LEDS is
 | 
				
			||||||
 | 
					 * defined.  In that case, the usage by the board port is defined in
 | 
				
			||||||
 | 
					 * include/board.h and src/imxrt_autoleds.c. The LED is used to encode
 | 
				
			||||||
 | 
					 * OS-related events as follows:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   -------------------- ----------------------- ------
 | 
				
			||||||
 | 
					 *   SYMBOL               Meaning                 LED
 | 
				
			||||||
 | 
					 *   -------------------- ----------------------- ------
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   LED_STARTED       0  NuttX has been started  OFF
 | 
				
			||||||
 | 
					 *   LED_HEAPALLOCATE  0  Heap has been allocated OFF
 | 
				
			||||||
 | 
					 *   LED_IRQSENABLED   0  Interrupts enabled      OFF
 | 
				
			||||||
 | 
					 *   LED_STACKCREATED  1  Idle stack created      ON
 | 
				
			||||||
 | 
					 *   LED_INIRQ         2  In an interrupt         N/C
 | 
				
			||||||
 | 
					 *   LED_SIGNAL        2  In a signal handler     N/C
 | 
				
			||||||
 | 
					 *   LED_ASSERTION     2  An assertion failed     N/C
 | 
				
			||||||
 | 
					 *   LED_PANIC         3  The system has crashed  FLASH
 | 
				
			||||||
 | 
					 *   LED_IDLE             Not used
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Thus if the LED is statically on, NuttX has successfully  booted and is,
 | 
				
			||||||
 | 
					 * apparently, running normally.  If the LED is flashing at approximately
 | 
				
			||||||
 | 
					 * 2Hz, then a fatal error has been detected and the system has halted.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					#include "imxrt_iomuxc.h"
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_ARCH_LEDS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_autoled_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize NuttX-controlled LED logic
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void imxrt_autoled_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Configure LED GPIO for output */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_LED);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_autoled_on
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Turn on the "logical" LED state
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *   led - Identifies the "logical" LED state (see definitions in
 | 
				
			||||||
 | 
					 *         include/board.h)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void board_autoled_on(int led)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  bool ledoff = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  switch (led)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      case 0:  /* LED Off */
 | 
				
			||||||
 | 
					        ledoff = true;
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      case 2:  /* LED No change */
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      case 1:  /* LED On */
 | 
				
			||||||
 | 
					      case 3:  /* LED On */
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LED, ledoff); /* Low illuminates */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_autoled_off
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Turn off the "logical" LED state
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *   led - Identifies the "logical" LED state (see definitions in
 | 
				
			||||||
 | 
					 *         include/board.h)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void board_autoled_off(int led)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  switch (led)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      case 0:  /* LED Off */
 | 
				
			||||||
 | 
					      case 1:  /* LED Off */
 | 
				
			||||||
 | 
					      case 3:  /* LED Off */
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      case 2:  /* LED No change */
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LED, true); /* Low illuminates */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_ARCH_LEDS */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,86 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_boot.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_boot.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/board.h>
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_start.h"
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_boardinitialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   All i.MX RT architectures must provide the following entry point.  This
 | 
				
			||||||
 | 
					 *   entry point is called early in the initialization -- after clocking and
 | 
				
			||||||
 | 
					 *   memory have been configured but before caches have been enabled and
 | 
				
			||||||
 | 
					 *   before any devices have been initialized.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void imxrt_boardinitialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Configure on-board LEDs if LED support has been selected. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_ARCH_LEDS
 | 
				
			||||||
 | 
					  imxrt_autoled_initialize();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_late_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
 | 
				
			||||||
 | 
					 *   initialization call will be performed in the boot-up sequence to a
 | 
				
			||||||
 | 
					 *   function called board_late_initialize(). board_late_initialize() will be
 | 
				
			||||||
 | 
					 *   called immediately after up_intitialize() is called and just before the
 | 
				
			||||||
 | 
					 *   initial application is started.  This additional initialization phase
 | 
				
			||||||
 | 
					 *   may be used, for example, to initialize board-specific device drivers.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_BOARD_LATE_INITIALIZE
 | 
				
			||||||
 | 
					void board_late_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Perform board initialization */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_bringup();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif /* CONFIG_BOARD_LATE_INITIALIZE */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,199 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_bringup.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_bringup.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <debug.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <syslog.h>
 | 
				
			||||||
 | 
					#include <nuttx/fs/fs.h>
 | 
				
			||||||
 | 
					#include <nuttx/i2c/i2c_master.h>
 | 
				
			||||||
 | 
					#include <nuttx/video/fb.h>
 | 
				
			||||||
 | 
					#include <imxrt_lpi2c.h>
 | 
				
			||||||
 | 
					#include <imxrt_lpspi.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_USDHC
 | 
				
			||||||
 | 
					#  include "imxrt_usdhc.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <arch/board/board.h>  /* Must always be included last */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Checking needed by MMC/SDCard */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_NSH_MMCSDMINOR
 | 
				
			||||||
 | 
					#  define MMCSD_MINOR CONFIG_NSH_MMCSDMINOR
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define MMCSD_MINOR 0
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_I2C_DRIVER) && defined(CONFIG_IMXRT_LPI2C)
 | 
				
			||||||
 | 
					static void imxrt_i2c_register(int bus)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FAR struct i2c_master_s *i2c;
 | 
				
			||||||
 | 
					  int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  i2c = imxrt_i2cbus_initialize(bus);
 | 
				
			||||||
 | 
					  if (i2c == NULL)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      serr("ERROR: Failed to get I2C%d interface\n", bus);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      ret = i2c_register(i2c, bus);
 | 
				
			||||||
 | 
					      if (ret < 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          serr("ERROR: Failed to register I2C%d driver: %d\n", bus, ret);
 | 
				
			||||||
 | 
					          imxrt_i2cbus_uninitialize(i2c);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_USDHC
 | 
				
			||||||
 | 
					static int nsh_sdmmc_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct sdio_dev_s *sdmmc;
 | 
				
			||||||
 | 
					  int ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Get an instance of the SDIO interface */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sdmmc = imxrt_usdhc_initialize(0);
 | 
				
			||||||
 | 
					  if (!sdmmc)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      syslog(LOG_ERR, "ERROR: Failed to initialize SD/MMC\n");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      /* Bind the SDIO interface to the MMC/SD driver */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ret = mmcsd_slotinitialize(0, sdmmc);
 | 
				
			||||||
 | 
					      if (ret != OK)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          syslog(LOG_ERR,
 | 
				
			||||||
 | 
					                 "ERROR: Failed to bind SDIO to the MMC/SD driver: %d\n",
 | 
				
			||||||
 | 
					                 ret);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define nsh_sdmmc_initialize() (OK)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_bringup
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Bring up board features
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imxrt_bringup(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* If we got here then perhaps not all initialization was successful, but
 | 
				
			||||||
 | 
					   * at least enough succeeded to bring-up NSH with perhaps reduced
 | 
				
			||||||
 | 
					   * capabilities.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_FS_PROCFS
 | 
				
			||||||
 | 
					  /* Mount the procfs file system */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ret = nx_mount(NULL, "/proc", "procfs", 0, NULL);
 | 
				
			||||||
 | 
					  if (ret < 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_I2C_DRIVER) && defined(CONFIG_IMXRT_LPI2C1)
 | 
				
			||||||
 | 
					  imxrt_i2c_register(1);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_USDHC
 | 
				
			||||||
 | 
					  /* Initialize SDHC-base MMC/SD card support */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  nsh_sdmmc_initialize();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_MMCSD_SPI
 | 
				
			||||||
 | 
					  /* Initialize SPI-based MMC/SD card support */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_spidev_initialize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ret = imxrt_mmcsd_spi_initialize(MMCSD_MINOR);
 | 
				
			||||||
 | 
					  if (ret < 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      syslog(LOG_ERR, "ERROR: Failed to initialize SD slot %d: %d\n", ret);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_DEV_GPIO
 | 
				
			||||||
 | 
					  ret = imxrt_gpio_initialize();
 | 
				
			||||||
 | 
					  if (ret < 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      syslog(LOG_ERR, "Failed to initialize GPIO Driver: %d\n", ret);
 | 
				
			||||||
 | 
					      return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_VIDEO_FB
 | 
				
			||||||
 | 
					  /* Initialize and register the framebuffer driver */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ret = fb_register(0, 0);
 | 
				
			||||||
 | 
					  if (ret < 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      syslog(LOG_ERR, "ERROR: fb_register() failed: %d\n", ret);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UNUSED(ret);
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,138 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_buttons.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_buttons.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/arch.h>
 | 
				
			||||||
 | 
					#include <nuttx/irq.h>
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "arm_arch.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_config.h"
 | 
				
			||||||
 | 
					#include "imxrt_irq.h"
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_ARCH_BUTTONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The IMXRT has 1 user button (SW8)):
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 1. SW8 (IRQ88)   GPIO5-00
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_button_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   board_button_initialize() must be called to initialize button resources.
 | 
				
			||||||
 | 
					 *   After that, board_buttons() may be called to collect the current state
 | 
				
			||||||
 | 
					 *   of all buttons or board_button_irq() may be called to register button
 | 
				
			||||||
 | 
					 *   interrupt handlers.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t board_button_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Configure the button as input */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_SW8);
 | 
				
			||||||
 | 
					  return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_buttons
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   After board_button_initialize() has been called, board_buttons() may be
 | 
				
			||||||
 | 
					 *   called to collect the state of all buttons.  board_buttons() returns an
 | 
				
			||||||
 | 
					 *   8-bit bit set with each bit associated with a button.  See the
 | 
				
			||||||
 | 
					 *   BUTTON_*_BIT  definitions in board.h for the meaning of each bit.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t board_buttons(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  uint8_t ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!imxrt_gpio_read(GPIO_SW8))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      ret |= BUTTON_SW8_BIT;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_button_irq
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   board_button_irq() may be called to register an interrupt handler that
 | 
				
			||||||
 | 
					 *   will be called when a button is depressed or released.  The ID value is
 | 
				
			||||||
 | 
					 *   a button enumeration value that uniquely identifies a button resource.
 | 
				
			||||||
 | 
					 *   See the BUTTON_* definitions in board.h for the meaning of enumeration
 | 
				
			||||||
 | 
					 *   value.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_ARCH_IRQBUTTONS
 | 
				
			||||||
 | 
					int board_button_irq(int id, xcpt_t irqhandler)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int ret = -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* The button has already been configured as an interrupting input (by
 | 
				
			||||||
 | 
					   * board_button_initialize() above).
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * Attach the new button handler.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ret = irq_attach(id, irqhandler, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Then make sure that interrupts are enabled on the pin */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  up_enable_irq(id);
 | 
				
			||||||
 | 
					  return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* CONFIG_ARCH_BUTTONS */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,293 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_ethernet.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_ethernet.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Force verbose debug on in this file only to support unit-level testing. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_NETDEV_PHY_DEBUG
 | 
				
			||||||
 | 
					#  undef  CONFIG_DEBUG_INFO
 | 
				
			||||||
 | 
					#  define CONFIG_DEBUG_INFO 1
 | 
				
			||||||
 | 
					#  undef  CONFIG_DEBUG_NET
 | 
				
			||||||
 | 
					#  define CONFIG_DEBUG_NET 1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					#include <debug.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/irq.h>
 | 
				
			||||||
 | 
					#include <nuttx/arch.h>
 | 
				
			||||||
 | 
					#include <nuttx/spinlock.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					#include "imxrt_enet.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_ENET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IMXRT_ENET_DEVNAME "eth0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Debug ********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Extra, in-depth debug output that is only available if
 | 
				
			||||||
 | 
					 * CONFIG_NETDEV_PHY_DEBUG us defined.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_NETDEV_PHY_DEBUG
 | 
				
			||||||
 | 
					#  define phyerr    _err
 | 
				
			||||||
 | 
					#  define phywarn   _warn
 | 
				
			||||||
 | 
					#  define phyinfo   _info
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define phyerr(x...)
 | 
				
			||||||
 | 
					#  define phywarn(x...)
 | 
				
			||||||
 | 
					#  define phyinfo(x...)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_enet_phy_enable
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_GPIO1_0_15_IRQ
 | 
				
			||||||
 | 
					static void imxrt_enet_phy_enable(bool enable)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  phyinfo("IRQ%d: enable=%d\n", GPIO_ENET_INT, enable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (enable)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      up_enable_irq(GPIO_ENET_IRQ);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      up_disable_irq(GPIO_ENET_IRQ);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Function: imxrt_phy_boardinitialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *  Some boards require specialized initialization of the PHY before it can
 | 
				
			||||||
 | 
					 *  be used.
 | 
				
			||||||
 | 
					 *  This may include such things as configuring GPIOs, resetting the PHY,
 | 
				
			||||||
 | 
					 *  etc.
 | 
				
			||||||
 | 
					 *  If CONFIG_IMXRT_ENET_PHYINIT is defined in the configuration then the
 | 
				
			||||||
 | 
					 *  board specific logic must provide imxrt_phyinitialize();
 | 
				
			||||||
 | 
					 *  The i.MX RT Ethernet driver will call this function one time before it
 | 
				
			||||||
 | 
					 *  first uses the PHY.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *  intf - Always zero for now.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *  OK on success; Negated errno on failure.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imxrt_phy_boardinitialize(int intf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_GPIO1_0_15_IRQ
 | 
				
			||||||
 | 
					  /* Configure the PHY interrupt pin */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  phyinfo("Configuring interrupt: %08x\n", GPIO_ENET_INT);
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_ENET_INT);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Configure the PHY reset pin.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * The #RST uses inverted logic.  The initial value of zero will put the
 | 
				
			||||||
 | 
					   * PHY into the reset state.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					#ifdef GPIO_ENET_RST
 | 
				
			||||||
 | 
					  /* On the EVK the RST pin is combined with LED, so sometimes can't be
 | 
				
			||||||
 | 
					   * accessed. Only stress about it if we've got a definition.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  phyinfo("Configuring reset: %08x\n", GPIO_ENET_RST);
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_ENET_RST);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Take the PHY out of reset. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_ENET_RST, true);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: arch_phy_irq
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   This function may be called to register an interrupt handler that will
 | 
				
			||||||
 | 
					 *   be called when a PHY interrupt occurs.  This function both attaches
 | 
				
			||||||
 | 
					 *   the interrupt handler and enables the interrupt if 'handler' is non-
 | 
				
			||||||
 | 
					 *   NULL.  If handler is NULL, then the interrupt is detached and disabled
 | 
				
			||||||
 | 
					 *   instead.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   The PHY interrupt is always disabled upon return.  The caller must
 | 
				
			||||||
 | 
					 *   call back through the enable function point to control the state of
 | 
				
			||||||
 | 
					 *   the interrupt.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   This interrupt may or may not be available on a given platform depending
 | 
				
			||||||
 | 
					 *   on how the network hardware architecture is implemented.  In a typical
 | 
				
			||||||
 | 
					 *   case, the PHY interrupt is provided to board-level logic as a GPIO
 | 
				
			||||||
 | 
					 *   interrupt (in which case this is a board-specific interface and really
 | 
				
			||||||
 | 
					 *   should be called board_phy_irq()); In other cases, the PHY interrupt
 | 
				
			||||||
 | 
					 *   may be cause by the chip's MAC logic (in which case arch_phy_irq()) is
 | 
				
			||||||
 | 
					 *   an appropriate name.  Other other boards, there may be no PHY interrupts
 | 
				
			||||||
 | 
					 *   available at all.  If client attachable PHY interrupts are available
 | 
				
			||||||
 | 
					 *   from the board or from the chip, then CONFIG_ARCH_PHY_INTERRUPT should
 | 
				
			||||||
 | 
					 *   be defined to indicate that fact.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   Typical usage:
 | 
				
			||||||
 | 
					 *   a. OS service logic (not application logic*) attaches to the PHY
 | 
				
			||||||
 | 
					 *      PHY interrupt and enables the PHY interrupt.
 | 
				
			||||||
 | 
					 *   b. When the PHY interrupt occurs:  (1) the interrupt should be
 | 
				
			||||||
 | 
					 *      disabled and () work should be scheduled on the worker thread (or
 | 
				
			||||||
 | 
					 *      perhaps a dedicated application thread).
 | 
				
			||||||
 | 
					 *   c. That worker thread should use the SIOCGMIIPHY, SIOCGMIIREG,
 | 
				
			||||||
 | 
					 *      and SIOCSMIIREG ioctl calls** to communicate with the PHY,
 | 
				
			||||||
 | 
					 *      determine what network event took place (Link Up/Down?), and
 | 
				
			||||||
 | 
					 *      take the appropriate actions.
 | 
				
			||||||
 | 
					 *   d. It should then interact the PHY to clear any pending
 | 
				
			||||||
 | 
					 *      interrupts, then re-enable the PHY interrupt.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *    * This is an OS internal interface and should not be used from
 | 
				
			||||||
 | 
					 *      application space.  Rather applications should use the SIOCMIISIG
 | 
				
			||||||
 | 
					 *      ioctl to receive a signal when a PHY event occurs.
 | 
				
			||||||
 | 
					 *   ** This interrupt is really of no use if the Ethernet MAC driver
 | 
				
			||||||
 | 
					 *      does not support these ioctl calls.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *   intf    - Identifies the network interface.  For example "eth0".  Only
 | 
				
			||||||
 | 
					 *             useful on platforms that support multiple Ethernet interfaces
 | 
				
			||||||
 | 
					 *             and, hence, multiple PHYs and PHY interrupts.
 | 
				
			||||||
 | 
					 *   handler - The client interrupt handler to be invoked when the PHY
 | 
				
			||||||
 | 
					 *             asserts an interrupt.  Must reside in OS space, but can
 | 
				
			||||||
 | 
					 *             signal tasks in user space.  A value of NULL can be passed
 | 
				
			||||||
 | 
					 *             in order to detach and disable the PHY interrupt.
 | 
				
			||||||
 | 
					 *   arg     - The argument that will accompany the interrupt
 | 
				
			||||||
 | 
					 *   enable  - A function pointer that be unused to enable or disable the
 | 
				
			||||||
 | 
					 *             PHY interrupt.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   Zero (OK) returned on success; a negated errno value is returned on
 | 
				
			||||||
 | 
					 *   failure.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_GPIO1_0_15_IRQ
 | 
				
			||||||
 | 
					int arch_phy_irq(FAR const char *intf, xcpt_t handler, void *arg,
 | 
				
			||||||
 | 
					                 phy_enable_t *enable)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  irqstate_t flags;
 | 
				
			||||||
 | 
					  phy_enable_t enabler;
 | 
				
			||||||
 | 
					  int irq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DEBUGASSERT(intf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ninfo("%s: handler=%p\n", intf, handler);
 | 
				
			||||||
 | 
					  phyinfo("EMAC: devname=%s\n", IMXRT_ENET_DEVNAME);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (strcmp(intf, IMXRT_ENET_DEVNAME) == 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      irq     = GPIO_ENET_IRQ;
 | 
				
			||||||
 | 
					      enabler = imxrt_enet_phy_enable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      nerr("ERROR: Unsupported interface: %s\n", intf);
 | 
				
			||||||
 | 
					      return -EINVAL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Disable interrupts until we are done.  This guarantees that the
 | 
				
			||||||
 | 
					   * following operations are atomic.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  flags = spin_lock_irqsave(NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Configure the interrupt */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (handler)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      /* The interrupt pin has already been configured as an interrupting
 | 
				
			||||||
 | 
					       * input (by imxrt_phy_boardinitialize() above).
 | 
				
			||||||
 | 
					       *
 | 
				
			||||||
 | 
					       * Attach the new button handler.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      phyinfo("Attach IRQ%d\n", irq);
 | 
				
			||||||
 | 
					      irq_attach(irq, handler, arg);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      phyinfo("Detach IRQ%d\n", irq);
 | 
				
			||||||
 | 
					      irq_detach(irq);
 | 
				
			||||||
 | 
					      enabler = NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Return with the interrupt disabled in either case */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  up_disable_irq(GPIO_ENET_IRQ);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Return the enabling function pointer */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (enable)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      *enable = enabler;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Return the old handler (so that it can be restored) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  spin_unlock_irqrestore(NULL, flags);
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif /* CONFIG_IMXRT_GPIO1_0_15_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_IMXRT_ENET */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,64 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_flexspi_nor_boot.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_flexspi_nor_boot.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_flexspi_nor_boot.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					locate_data(".boot_hdr.ivt")
 | 
				
			||||||
 | 
					const struct ivt_s g_image_vector_table =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  IVT_HEADER,                         /* IVT Header */
 | 
				
			||||||
 | 
					  0x60002000,                         /* Image  Entry Function */
 | 
				
			||||||
 | 
					  IVT_RSVD,                           /* Reserved = 0 */
 | 
				
			||||||
 | 
					  (uint32_t)DCD_ADDRESS,              /* Address where DCD information is stored */
 | 
				
			||||||
 | 
					  (uint32_t)BOOT_DATA_ADDRESS,        /* Address where BOOT Data Structure is stored */
 | 
				
			||||||
 | 
					  (uint32_t)&g_image_vector_table,    /* Pointer to IVT Self (absolute address */
 | 
				
			||||||
 | 
					  (uint32_t)CSF_ADDRESS,              /* Address where CSF file is stored */
 | 
				
			||||||
 | 
					  IVT_RSVD                            /* Reserved = 0 */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					locate_data(".boot_hdr.boot_data")
 | 
				
			||||||
 | 
					const struct boot_data_s g_boot_data =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLASH_BASE,                         /* boot start location */
 | 
				
			||||||
 | 
					  (FLASH_END - FLASH_BASE),           /* size */
 | 
				
			||||||
 | 
					  PLUGIN_FLAG,                        /* Plugin flag */
 | 
				
			||||||
 | 
					  0xffffffff                          /* empty - extra data word */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,151 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_flexspi_nor_boot.h
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_flexspi_nor_boot.h
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_FLEXSPI_NOR_BOOT_H
 | 
				
			||||||
 | 
					#define __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_FLEXSPI_NOR_BOOT_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IVT Data */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IVT_MAJOR_VERSION           0x4
 | 
				
			||||||
 | 
					#define IVT_MAJOR_VERSION_SHIFT     0x4
 | 
				
			||||||
 | 
					#define IVT_MAJOR_VERSION_MASK      0xf
 | 
				
			||||||
 | 
					#define IVT_MINOR_VERSION           0x1
 | 
				
			||||||
 | 
					#define IVT_MINOR_VERSION_SHIFT     0x0
 | 
				
			||||||
 | 
					#define IVT_MINOR_VERSION_MASK      0xf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IVT_VERSION(major, minor)   \
 | 
				
			||||||
 | 
					  ((((major) & IVT_MAJOR_VERSION_MASK) << IVT_MAJOR_VERSION_SHIFT) |  \
 | 
				
			||||||
 | 
					  (((minor) & IVT_MINOR_VERSION_MASK) << IVT_MINOR_VERSION_SHIFT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IVT_TAG_HEADER              (0xd1)       /* Image Vector Table */
 | 
				
			||||||
 | 
					#define IVT_SIZE                    0x2000
 | 
				
			||||||
 | 
					#define IVT_PAR                     IVT_VERSION(IVT_MAJOR_VERSION, IVT_MINOR_VERSION)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IVT_HEADER                  (IVT_TAG_HEADER | (IVT_SIZE << 8) | (IVT_PAR << 24))
 | 
				
			||||||
 | 
					#define IVT_RSVD                    (uint32_t)(0x00000000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* DCD Data */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DCD_TAG_HEADER              (0xd2)
 | 
				
			||||||
 | 
					#define DCD_TAG_HEADER_SHIFT        (24)
 | 
				
			||||||
 | 
					#define DCD_VERSION                 (0x40)
 | 
				
			||||||
 | 
					#define DCD_ARRAY_SIZE              1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FLASH_BASE                  0x60000000
 | 
				
			||||||
 | 
					#define FLASH_END                   0x7f7fffff
 | 
				
			||||||
 | 
					#define SCLK 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_XIDATONG_SDRAM
 | 
				
			||||||
 | 
					#  define DCD_ADDRESS               &g_dcd_data
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define DCD_ADDRESS               0
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOOT_DATA_ADDRESS           &g_boot_data
 | 
				
			||||||
 | 
					#define CSF_ADDRESS                 0
 | 
				
			||||||
 | 
					#define PLUGIN_FLAG                 (uint32_t)0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Types
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IVT Data */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct ivt_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Header with tag #HAB_TAG_IVT, length and HAB version fields
 | 
				
			||||||
 | 
					   * (see data)
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t hdr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Absolute address of the first instruction to execute from the
 | 
				
			||||||
 | 
					   * image
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Reserved in this version of HAB: should be NULL. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t reserved1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Absolute address of the image DCD: may be NULL. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t dcd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Absolute address of the Boot Data: may be NULL, but not interpreted
 | 
				
			||||||
 | 
					   * any further by HAB
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t boot_data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Absolute address of the IVT. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t self;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Absolute address of the image CSF. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t csf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Reserved in this version of HAB: should be zero. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint32_t reserved2;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Boot Data */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct boot_data_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  uint32_t start;           /* boot start location */
 | 
				
			||||||
 | 
					  uint32_t size;            /* size */
 | 
				
			||||||
 | 
					  uint32_t plugin;          /* plugin flag - 1 if downloaded application is plugin */
 | 
				
			||||||
 | 
					  uint32_t placeholder;     /* placeholder to make even 0x10 size */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern const struct boot_data_s g_boot_data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_XIDATONG_SDRAM
 | 
				
			||||||
 | 
					extern const uint8_t g_dcd_data[];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,215 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_flexspi_nor_flash.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_flexspi_nor_flash.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_flexspi_nor_flash.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined (CONFIG_XIDATONG_HYPER_FLASH)
 | 
				
			||||||
 | 
					locate_data(".boot_hdr.conf")
 | 
				
			||||||
 | 
					const struct flexspi_nor_config_s g_flash_config =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .mem_config              =
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    .tag                   = FLEXSPI_CFG_BLK_TAG,
 | 
				
			||||||
 | 
					    .version               = FLEXSPI_CFG_BLK_VERSION,
 | 
				
			||||||
 | 
					    .read_sample_clksrc    = FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD,
 | 
				
			||||||
 | 
					    .cs_hold_time          = 3u,
 | 
				
			||||||
 | 
					    .cs_setup_time         = 3u,
 | 
				
			||||||
 | 
					    .column_address_width  = 3u,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Enable DDR mode, Word addassable,
 | 
				
			||||||
 | 
					   * Safe configuration, Differential clock
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .controller_misc_option =
 | 
				
			||||||
 | 
					                      (1u << FLEXSPIMISC_OFFSET_DDR_MODE_EN) |
 | 
				
			||||||
 | 
					                      (1u << FLEXSPIMISC_OFFSET_WORD_ADDRESSABLE_EN) |
 | 
				
			||||||
 | 
					                      (1u << FLEXSPIMISC_OFFSET_SAFECONFIG_FREQ_EN) |
 | 
				
			||||||
 | 
					                      (1u << FLEXSPIMISC_OFFSET_DIFFCLKEN),
 | 
				
			||||||
 | 
					    .sflash_pad_type       = SERIAL_FLASH_8PADS,
 | 
				
			||||||
 | 
					    .serial_clk_freq       = FLEXSPI_SERIAL_CLKFREQ_133MHz,
 | 
				
			||||||
 | 
					    .sflash_a1size         = 64u * 1024u * 1024u,
 | 
				
			||||||
 | 
					    .data_valid_time       =
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        16u, 16u
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    .lookup_table          =
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      /* Read LUTs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_DDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_8PAD, 0xa0, RADDR_DDR, FLEXSPI_8PAD, 0x18),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CADDR_DDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_8PAD, 0x10, DUMMY_DDR, FLEXSPI_8PAD, 0x06),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(READ_DDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_8PAD, 0x04, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  .page_size                = 512u,
 | 
				
			||||||
 | 
					  .sector_size              = 256u * 1024u,
 | 
				
			||||||
 | 
					  .blocksize                = 256u * 1024u,
 | 
				
			||||||
 | 
					  .is_uniform_blocksize     = 1,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined (CONFIG_XIDATONG_QSPI_FLASH)
 | 
				
			||||||
 | 
					locate_data(".boot_hdr.conf")
 | 
				
			||||||
 | 
					const struct flexspi_nor_config_s g_flash_config =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .mem_config =
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    .tag                    = FLEXSPI_CFG_BLK_TAG,
 | 
				
			||||||
 | 
					    .version                = FLEXSPI_CFG_BLK_VERSION,
 | 
				
			||||||
 | 
					    .read_sample_clksrc     = FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_SCKPAD,
 | 
				
			||||||
 | 
					    .cs_hold_time           = 3u,
 | 
				
			||||||
 | 
					    .cs_setup_time          = 3u,
 | 
				
			||||||
 | 
					    .column_address_width   = 0u,
 | 
				
			||||||
 | 
					    .device_type            = FLEXSPI_DEVICE_TYPE_SERIAL_NOR,
 | 
				
			||||||
 | 
					    .sflash_pad_type        = SERIAL_FLASH_4PADS,
 | 
				
			||||||
 | 
					    .serial_clk_freq        = FLEXSPI_SERIAL_CLKFREQ_60MHz,
 | 
				
			||||||
 | 
					    .sflash_a1size          = 8u * 1024u * 1024u,
 | 
				
			||||||
 | 
					    .data_valid_time        =
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        16u, 16u
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    .lookup_table           =
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      /* LUTs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 0 Fast read Quad IO DTR Mode Operation in SPI Mode (normal read) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_SDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_1PAD, 0xed, RADDR_DDR, FLEXSPI_4PAD, 0x18),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(DUMMY_DDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_4PAD, 0x0c, READ_DDR, FLEXSPI_4PAD, 0x08),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP,
 | 
				
			||||||
 | 
					                      FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP,
 | 
				
			||||||
 | 
					                      FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 1 Read Status */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_SDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x1),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 2 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 3 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 4 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 5 Erase Sector */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_SDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_1PAD, 0xd7, RADDR_SDR, FLEXSPI_1PAD, 0x18),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 6 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 7 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 8 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 9 Page Program */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_SDR,
 | 
				
			||||||
 | 
					                      FLEXSPI_1PAD, 0x02, RADDR_SDR, FLEXSPI_1PAD, 0x18),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x8, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 10 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					      0x00000000,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* 11 Chip Erase */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xc7, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					      FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x0, STOP, FLEXSPI_1PAD, 0x0),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .page_size                = 256u,
 | 
				
			||||||
 | 
					  .sector_size              = 4u * 1024u,
 | 
				
			||||||
 | 
					  .blocksize                = 32u * 1024u,
 | 
				
			||||||
 | 
					  .is_uniform_blocksize     = false,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# error Boot Flash type not chosen!
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,359 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_flexspi_nor_flash.h
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_flexspi_nor_flash.h
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_FLEXSPI_NOR_FLASH_H
 | 
				
			||||||
 | 
					#define __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_FLEXSPI_NOR_FLASH_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FLEXSPI memory config block related definitions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FLEXSPI_CFG_BLK_TAG         (0x42464346ul)
 | 
				
			||||||
 | 
					#define FLEXSPI_CFG_BLK_VERSION     (0x56010400ul)
 | 
				
			||||||
 | 
					#define FLEXSPI_CFG_BLK_SIZE        (512)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FLEXSPI Feature related definitions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FLEXSPI_FEATURE_HAS_PARALLEL_MODE 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Lookup table related definitions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CMD_INDEX_READ              0
 | 
				
			||||||
 | 
					#define CMD_INDEX_READSTATUS        1
 | 
				
			||||||
 | 
					#define CMD_INDEX_WRITEENABLE       2
 | 
				
			||||||
 | 
					#define CMD_INDEX_WRITE             4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CMD_LUT_SEQ_IDX_READ        0
 | 
				
			||||||
 | 
					#define CMD_LUT_SEQ_IDX_READSTATUS  1
 | 
				
			||||||
 | 
					#define CMD_LUT_SEQ_IDX_WRITEENABLE 3
 | 
				
			||||||
 | 
					#define CMD_LUT_SEQ_IDX_WRITE       9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CMD_SDR                     0x01
 | 
				
			||||||
 | 
					#define CMD_DDR                     0x21
 | 
				
			||||||
 | 
					#define RADDR_SDR                   0x02
 | 
				
			||||||
 | 
					#define RADDR_DDR                   0x22
 | 
				
			||||||
 | 
					#define CADDR_SDR                   0x03
 | 
				
			||||||
 | 
					#define CADDR_DDR                   0x23
 | 
				
			||||||
 | 
					#define MODE1_SDR                   0x04
 | 
				
			||||||
 | 
					#define MODE1_DDR                   0x24
 | 
				
			||||||
 | 
					#define MODE2_SDR                   0x05
 | 
				
			||||||
 | 
					#define MODE2_DDR                   0x25
 | 
				
			||||||
 | 
					#define MODE4_SDR                   0x06
 | 
				
			||||||
 | 
					#define MODE4_DDR                   0x26
 | 
				
			||||||
 | 
					#define MODE8_SDR                   0x07
 | 
				
			||||||
 | 
					#define MODE8_DDR                   0x27
 | 
				
			||||||
 | 
					#define WRITE_SDR                   0x08
 | 
				
			||||||
 | 
					#define WRITE_DDR                   0x28
 | 
				
			||||||
 | 
					#define READ_SDR                    0x09
 | 
				
			||||||
 | 
					#define READ_DDR                    0x29
 | 
				
			||||||
 | 
					#define LEARN_SDR                   0x0a
 | 
				
			||||||
 | 
					#define LEARN_DDR                   0x2a
 | 
				
			||||||
 | 
					#define DATSZ_SDR                   0x0b
 | 
				
			||||||
 | 
					#define DATSZ_DDR                   0x2b
 | 
				
			||||||
 | 
					#define DUMMY_SDR                   0x0c
 | 
				
			||||||
 | 
					#define DUMMY_DDR                   0x2c
 | 
				
			||||||
 | 
					#define DUMMY_RWDS_SDR              0x0d
 | 
				
			||||||
 | 
					#define DUMMY_RWDS_DDR              0x2d
 | 
				
			||||||
 | 
					#define JMP_ON_CS                   0x1f
 | 
				
			||||||
 | 
					#define STOP                        0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FLEXSPI_1PAD                0
 | 
				
			||||||
 | 
					#define FLEXSPI_2PAD                1
 | 
				
			||||||
 | 
					#define FLEXSPI_4PAD                2
 | 
				
			||||||
 | 
					#define FLEXSPI_8PAD                3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPERAND0_MASK   (0xffu)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPERAND0_SHIFT  (0U)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPERAND0(x)     (((uint32_t) \
 | 
				
			||||||
 | 
					                                     (((uint32_t)(x)) << FLEXSPI_LUT_OPERAND0_SHIFT)) & \
 | 
				
			||||||
 | 
					                                     FLEXSPI_LUT_OPERAND0_MASK)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_NUM_PADS0_MASK  (0x300u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_NUM_PADS0_SHIFT (8u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_NUM_PADS0(x)    (((uint32_t) \
 | 
				
			||||||
 | 
					                                     (((uint32_t)(x)) << FLEXSPI_LUT_NUM_PADS0_SHIFT)) & \
 | 
				
			||||||
 | 
					                                     FLEXSPI_LUT_NUM_PADS0_MASK)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPCODE0_MASK    (0xfc00u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPCODE0_SHIFT   (10u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPCODE0(x)      (((uint32_t) \
 | 
				
			||||||
 | 
					                                     (((uint32_t)(x)) << FLEXSPI_LUT_OPCODE0_SHIFT)) & \
 | 
				
			||||||
 | 
					                                     FLEXSPI_LUT_OPCODE0_MASK)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPERAND1_MASK   (0xff0000u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPERAND1_SHIFT  (16U)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPERAND1(x)     (((uint32_t) \
 | 
				
			||||||
 | 
					                                     (((uint32_t)(x)) << FLEXSPI_LUT_OPERAND1_SHIFT)) & \
 | 
				
			||||||
 | 
					                                     FLEXSPI_LUT_OPERAND1_MASK)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_NUM_PADS1_MASK  (0x3000000u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_NUM_PADS1_SHIFT (24u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_NUM_PADS1(x)    (((uint32_t) \
 | 
				
			||||||
 | 
					                                     (((uint32_t)(x)) << FLEXSPI_LUT_NUM_PADS1_SHIFT)) & \
 | 
				
			||||||
 | 
					                                     FLEXSPI_LUT_NUM_PADS1_MASK)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPCODE1_MASK    (0xfc000000u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPCODE1_SHIFT   (26u)
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_OPCODE1(x)      (((uint32_t)(((uint32_t)(x)) << FLEXSPI_LUT_OPCODE1_SHIFT)) & \
 | 
				
			||||||
 | 
					                                    FLEXSPI_LUT_OPCODE1_MASK)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)  \
 | 
				
			||||||
 | 
					    (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | \
 | 
				
			||||||
 | 
					     FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) | \
 | 
				
			||||||
 | 
					     FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_READ          CMD_INDEX_READ
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_READSTATUS    CMD_INDEX_READSTATUS
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_WRITEENABLE   CMD_INDEX_WRITEENABLE
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_ERASESECTOR   3
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_PAGEPROGRAM   CMD_INDEX_WRITE
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_CHIPERASE     5
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_DUMMY         6
 | 
				
			||||||
 | 
					#define NOR_CMD_INDEX_ERASEBLOCK    7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*  READ LUT sequence id in lookupTable stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_READ    CMD_LUT_SEQ_IDX_READ
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Read Status LUT sequence id in lookupTable stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_READSTATUS CMD_LUT_SEQ_IDX_READSTATUS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 2  Read status DPI/QPI/OPI sequence id in lookupTable stored in config
 | 
				
			||||||
 | 
					 * block
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 3  Write Enable sequence id in lookupTable stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE CMD_LUT_SEQ_IDX_WRITEENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 4  Write Enable DPI/QPI/OPI sequence id in lookupTable stored in config
 | 
				
			||||||
 | 
					 * block
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 5  Erase Sector sequence id in lookupTable stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_ERASESECTOR 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 8 Erase Block sequence id in lookupTable stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK 8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 9  Program sequence id in lookupTable stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM CMD_LUT_SEQ_IDX_WRITE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 11 Chip Erase sequence in lookupTable id stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_CHIPERASE 11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 13 Read SFDP sequence in lookupTable id stored in config block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_READ_SFDP 13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 14 Restore 0-4-4/0-8-8 mode sequence id in lookupTable stored in config
 | 
				
			||||||
 | 
					 * block
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD 14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 15 Exit 0-4-4/0-8-8 mode sequence id in lookupTable stored in config
 | 
				
			||||||
 | 
					 * blobk
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD 15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Types
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Definitions for FlexSPI Serial Clock Frequency */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flexspi_serial_clkfreq_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_30MHz  = 1,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_50MHz  = 2,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_60MHz  = 3,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_75MHz  = 4,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_80MHz  = 5,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_100MHz = 6,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_133MHz = 7,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_166MHz = 8,
 | 
				
			||||||
 | 
					  FLEXSPI_SERIAL_CLKFREQ_200MHz = 9,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FlexSPI clock configuration type */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flexspi_serial_clockmode_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLEXSPI_CLKMODE_SDR,
 | 
				
			||||||
 | 
					  FLEXSPI_CLKMODE_DDR,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FlexSPI Read Sample Clock Source definition */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flash_read_sample_clk_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLASH_READ_SAMPLE_CLK_LOOPBACK_INTERNELLY = 0,
 | 
				
			||||||
 | 
					  FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_DQSPAD = 1,
 | 
				
			||||||
 | 
					  FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_SCKPAD = 2,
 | 
				
			||||||
 | 
					  FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD = 3,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*  Misc feature bit definitions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flash_misc_feature_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_DIFFCLKEN = 0,                /* Bit for Differential clock enable */
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_CK2EN = 1,                    /* Bit for CK2 enable */
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_PARALLELEN = 2,               /* Bit for Parallel mode enable */
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_WORD_ADDRESSABLE_EN = 3,      /* Bit for Word Addressable enable */
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_SAFECONFIG_FREQ_EN = 4,       /* Bit for Safe Configuration Frequency enable */
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_PAD_SETTING_OVERRIDE_EN = 5,  /* Bit for Pad setting override enable */
 | 
				
			||||||
 | 
					  FLEXSPIMISC_OFFSET_DDR_MODE_EN = 6,              /* Bit for DDR clock confiuration indication. */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Flash Type Definition */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flash_flash_type_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLEXSPI_DEVICE_TYPE_SERIAL_NOR = 1,              /* Flash devices are Serial NOR */
 | 
				
			||||||
 | 
					  FLEXSPI_DEVICE_TYPE_SERIAL_NAND = 2,             /* Flash devices are Serial NAND */
 | 
				
			||||||
 | 
					  FLEXSPI_DEVICE_TYPE_SERIAL_RAM = 3,              /* Flash devices are Serial RAM/HyperFLASH */
 | 
				
			||||||
 | 
					  FLEXSPI_DEVICE_TYPE_MCP_NOR_NAND = 0x12,         /* Flash device is MCP device, A1 is Serial NOR, A2 is Serial NAND */
 | 
				
			||||||
 | 
					  FLEXSPI_DEVICE_TYPE_MCP_NOR_RAM = 0x13,          /* Flash device is MCP device, A1 is Serial NOR, A2 is Serial RAMs */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Flash Pad Definitions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flash_flash_pad_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  SERIAL_FLASH_1PAD  = 1,
 | 
				
			||||||
 | 
					  SERIAL_FLASH_2PADS = 2,
 | 
				
			||||||
 | 
					  SERIAL_FLASH_4PADS = 4,
 | 
				
			||||||
 | 
					  SERIAL_FLASH_8PADS = 8,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Flash Configuration Command Type */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum flash_config_cmd_e
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  DEVICE_CONFIG_CMD_TYPE_GENERIC,     /* Generic command, for example: configure dummy cycles, drive strength, etc */
 | 
				
			||||||
 | 
					  DEVICE_CONFIG_CMD_TYPE_QUADENABLE,  /* Quad Enable command */
 | 
				
			||||||
 | 
					  DEVICE_CONFIG_CMD_TYPE_SPI2XPI,     /* Switch from SPI to DPI/QPI/OPI mode */
 | 
				
			||||||
 | 
					  DEVICE_CONFIG_CMD_TYPE_XPI2SPI,     /* Switch from DPI/QPI/OPI to SPI mode */
 | 
				
			||||||
 | 
					  DEVICE_CONFIG_CMD_TYPE_SPI2NO_CMD,  /* Switch to 0-4-4/0-8-8 mode */
 | 
				
			||||||
 | 
					  DEVICE_CONFIG_CMD_TYPE_RESET,       /* Reset device command */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FlexSPI LUT Sequence structure */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct flexspi_lut_seq_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  uint8_t seq_num;                    /* Sequence Number, valid number: 1-16 */
 | 
				
			||||||
 | 
					  uint8_t seq_id;                     /* Sequence Index, valid number: 0-15 */
 | 
				
			||||||
 | 
					  uint16_t reserved;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FlexSPI Memory Configuration Block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct flexspi_mem_config_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  uint32_t tag;
 | 
				
			||||||
 | 
					  uint32_t version;
 | 
				
			||||||
 | 
					  uint32_t reserved0;
 | 
				
			||||||
 | 
					  uint8_t read_sample_clksrc;
 | 
				
			||||||
 | 
					  uint8_t cs_hold_time;
 | 
				
			||||||
 | 
					  uint8_t cs_setup_time;
 | 
				
			||||||
 | 
					  uint8_t column_address_width;       /* [0x00f-0x00f] Column Address with, for
 | 
				
			||||||
 | 
					                                       * HyperBus protocol, it is fixed to 3, For
 | 
				
			||||||
 | 
					                                       * Serial NAND, need to refer to datasheet
 | 
				
			||||||
 | 
					                                       */
 | 
				
			||||||
 | 
					  uint8_t device_mode_cfg_enable;
 | 
				
			||||||
 | 
					  uint8_t device_mode_type;
 | 
				
			||||||
 | 
					  uint16_t wait_time_cfg_commands;
 | 
				
			||||||
 | 
					  struct flexspi_lut_seq_s device_mode_seq;
 | 
				
			||||||
 | 
					  uint32_t device_mode_arg;
 | 
				
			||||||
 | 
					  uint8_t config_cmd_enable;
 | 
				
			||||||
 | 
					  uint8_t config_mode_type[3];
 | 
				
			||||||
 | 
					  struct flexspi_lut_seq_s config_cmd_seqs[3];
 | 
				
			||||||
 | 
					  uint32_t reserved1;
 | 
				
			||||||
 | 
					  uint32_t config_cmd_args[3];
 | 
				
			||||||
 | 
					  uint32_t reserved2;
 | 
				
			||||||
 | 
					  uint32_t controller_misc_option;
 | 
				
			||||||
 | 
					  uint8_t device_type;
 | 
				
			||||||
 | 
					  uint8_t sflash_pad_type;
 | 
				
			||||||
 | 
					  uint8_t serial_clk_freq;
 | 
				
			||||||
 | 
					  uint8_t lut_custom_seq_enable;
 | 
				
			||||||
 | 
					  uint32_t reserved3[2];
 | 
				
			||||||
 | 
					  uint32_t sflash_a1size;
 | 
				
			||||||
 | 
					  uint32_t sflash_a2size;
 | 
				
			||||||
 | 
					  uint32_t sflash_b1size;
 | 
				
			||||||
 | 
					  uint32_t sflash_b2size;
 | 
				
			||||||
 | 
					  uint32_t cspad_setting_override;
 | 
				
			||||||
 | 
					  uint32_t sclkpad_setting_override;
 | 
				
			||||||
 | 
					  uint32_t datapad_setting_override;
 | 
				
			||||||
 | 
					  uint32_t dqspad_setting_override;
 | 
				
			||||||
 | 
					  uint32_t timeout_in_ms;
 | 
				
			||||||
 | 
					  uint32_t command_interval;
 | 
				
			||||||
 | 
					  uint16_t data_valid_time[2];
 | 
				
			||||||
 | 
					  uint16_t busy_offset;
 | 
				
			||||||
 | 
					  uint16_t busybit_polarity;
 | 
				
			||||||
 | 
					  uint32_t lookup_table[64];
 | 
				
			||||||
 | 
					  struct flexspi_lut_seq_s lut_customseq[12];
 | 
				
			||||||
 | 
					  uint32_t reserved4[4];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Serial NOR configuration block */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct flexspi_nor_config_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct flexspi_mem_config_s mem_config; /* Common memory configuration info via FlexSPI */
 | 
				
			||||||
 | 
					  uint32_t page_size;                     /* Page size of Serial NOR */
 | 
				
			||||||
 | 
					  uint32_t sector_size;                   /* Sector size of Serial NOR */
 | 
				
			||||||
 | 
					  uint8_t ipcmd_serial_clkfreq;           /* Clock frequency for IP command */
 | 
				
			||||||
 | 
					  uint8_t is_uniform_blocksize;           /* Sector/Block size is the same */
 | 
				
			||||||
 | 
					  uint8_t reserved0[2];                   /* Reserved for future use */
 | 
				
			||||||
 | 
					  uint8_t serial_nor_type;                /* Serial NOR Flash type: 0/1/2/3 */
 | 
				
			||||||
 | 
					  uint8_t need_exit_nocmdmode;            /* Need to exit NoCmd mode before other IP command */
 | 
				
			||||||
 | 
					  uint8_t halfclk_for_nonreadcmd;         /* Half the Serial Clock for non-read command: true/false */
 | 
				
			||||||
 | 
					  uint8_t need_restore_nocmdmode;         /* Need to Restore NoCmd mode after IP command execution */
 | 
				
			||||||
 | 
					  uint32_t blocksize;                     /* Block size */
 | 
				
			||||||
 | 
					  uint32_t reserve2[11];                  /* Reserved for future use */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_FLEXSPI_NOR_FLASH_H */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,224 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_gpio.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_gpio.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <debug.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/clock.h>
 | 
				
			||||||
 | 
					#include <nuttx/wdog.h>
 | 
				
			||||||
 | 
					#include <nuttx/ioexpander/gpio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "chip.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <imxrt_gpio.h>
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_DEV_GPIO) && !defined(CONFIG_GPIO_LOWER_HALF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Types
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct imxrtgpio_dev_s
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct gpio_dev_s gpio;
 | 
				
			||||||
 | 
					  uint8_t id;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Function Prototypes
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOIN > 0
 | 
				
			||||||
 | 
					static int gpin_read(FAR struct gpio_dev_s *dev, FAR bool *value);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOOUT > 0
 | 
				
			||||||
 | 
					static int gpout_read(FAR struct gpio_dev_s *dev, FAR bool *value);
 | 
				
			||||||
 | 
					static int gpout_write(FAR struct gpio_dev_s *dev, bool value);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 #if BOARD_NGPIOIN > 0
 | 
				
			||||||
 | 
					static const struct gpio_operations_s gpin_ops =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .go_read   = gpin_read,
 | 
				
			||||||
 | 
					  .go_write  = NULL,
 | 
				
			||||||
 | 
					  .go_attach = NULL,
 | 
				
			||||||
 | 
					  .go_enable = NULL,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This array maps the GPIO pins used as INPUT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t g_gpioinputs[BOARD_NGPIOIN] =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  GPIO_IN1,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct imxrtgpio_dev_s g_gpin[BOARD_NGPIOIN];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOOUT > 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct gpio_operations_s gpout_ops =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .go_read   = gpout_read,
 | 
				
			||||||
 | 
					  .go_write  = gpout_write,
 | 
				
			||||||
 | 
					  .go_attach = NULL,
 | 
				
			||||||
 | 
					  .go_enable = NULL,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This array maps the GPIO pins used as OUTPUT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t g_gpiooutputs[BOARD_NGPIOOUT] =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  GPIO_GOUT1,
 | 
				
			||||||
 | 
					  GPIO_GOUT2,
 | 
				
			||||||
 | 
					  GPIO_GOUT3,
 | 
				
			||||||
 | 
					  GPIO_GOUT4,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct imxrtgpio_dev_s g_gpout[BOARD_NGPIOOUT];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOIN > 0
 | 
				
			||||||
 | 
					static int gpin_read(FAR struct gpio_dev_s *dev, FAR bool *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FAR struct imxrtgpio_dev_s *imxrtgpio = (FAR struct imxrtgpio_dev_s *)dev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DEBUGASSERT(imxrtgpio != NULL && value != NULL);
 | 
				
			||||||
 | 
					  DEBUGASSERT(imxrtgpio->id < BOARD_NGPIOIN);
 | 
				
			||||||
 | 
					  gpioinfo("Reading...\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *value = imxrt_gpio_read(g_gpioinputs[imxrtgpio->id]);
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOOUT > 0
 | 
				
			||||||
 | 
					static int gpout_read(FAR struct gpio_dev_s *dev, FAR bool *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FAR struct imxrtgpio_dev_s *imxrtgpio = (FAR struct imxrtgpio_dev_s *)dev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DEBUGASSERT(imxrtgpio != NULL && value != NULL);
 | 
				
			||||||
 | 
					  DEBUGASSERT(imxrtgpio->id < BOARD_NGPIOOUT);
 | 
				
			||||||
 | 
					  gpioinfo("Reading...\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *value = imxrt_gpio_read(g_gpiooutputs[imxrtgpio->id]);
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int gpout_write(FAR struct gpio_dev_s *dev, bool value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FAR struct imxrtgpio_dev_s *imxrtgpio = (FAR struct imxrtgpio_dev_s *)dev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DEBUGASSERT(imxrtgpio != NULL);
 | 
				
			||||||
 | 
					  DEBUGASSERT(imxrtgpio->id < BOARD_NGPIOOUT);
 | 
				
			||||||
 | 
					  gpioinfo("Writing %d\n", (int)value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(g_gpiooutputs[imxrtgpio->id], value);
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_gpio_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize GPIO drivers for use with /apps/examples/gpio
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imxrt_gpio_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int pincount = 0;
 | 
				
			||||||
 | 
					  int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOIN > 0
 | 
				
			||||||
 | 
					  for (i = 0; i < BOARD_NGPIOIN; i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      /* Setup and register the GPIO pin */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      g_gpin[i].gpio.gp_pintype = GPIO_INPUT_PIN;
 | 
				
			||||||
 | 
					      g_gpin[i].gpio.gp_ops     = &gpin_ops;
 | 
				
			||||||
 | 
					      g_gpin[i].id              = i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      gpio_pin_register(&g_gpin[i].gpio, pincount);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* Configure the pin that will be used as input */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      imxrt_config_gpio(g_gpioinputs[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      pincount++;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if BOARD_NGPIOOUT > 0
 | 
				
			||||||
 | 
					  for (i = 0; i < BOARD_NGPIOOUT; i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      /* Setup and register the GPIO pin */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
 | 
				
			||||||
 | 
					      g_gpout[i].gpio.gp_ops     = &gpout_ops;
 | 
				
			||||||
 | 
					      g_gpout[i].id              = i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      gpio_pin_register(&g_gpout[i].gpio, pincount);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* Configure the pin that will be used as output */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      imxrt_gpio_write(g_gpiooutputs[i], 0);
 | 
				
			||||||
 | 
					      imxrt_config_gpio(g_gpiooutputs[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      pincount++;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif /* CONFIG_DEV_GPIO && !CONFIG_GPIO_LOWER_HALF */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,77 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_lcd.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_lcd.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					#include <debug.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_lcd.h"
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_lcd_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize the LCD.  Setup backlight (initially off)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void imxrt_lcd_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Configure the LCD backlight (and turn the backlight off) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_LCD_BL);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_backlight
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   If CONFIG_IMXRT_LCD_BACKLIGHT is defined, then the board-specific
 | 
				
			||||||
 | 
					 *   logic must provide this interface to turn the backlight on and off.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LCD_BACKLIGHT
 | 
				
			||||||
 | 
					void imxrt_backlight(bool blon)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LCD_BL, blon); /* High illuminates */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,131 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_mmcsd_spi.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_mmcsd_spi.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <debug.h>
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					#include <nuttx/mmcsd.h>
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/spi/spi.h>
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "arm_arch.h"
 | 
				
			||||||
 | 
					#include "chip.h"
 | 
				
			||||||
 | 
					#include "imxrt_lpspi.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_MMCSD_SPI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef CONFIG_IMXRT_LPSPI1
 | 
				
			||||||
 | 
					#  error "SD driver requires CONFIG_IMXRT_LPSPI1 to be enabled"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_DISABLE_MOUNTPOINT
 | 
				
			||||||
 | 
					#  error "SD driver requires CONFIG_DISABLE_MOUNTPOINT to be disabled"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const int SD_SPI_PORT = CONFIG_NSH_MMCSDSPIPORTNO; /* SD is connected to SPI1 port */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const int SD_SLOT_NO  = 0; /* There is only one SD slot */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Private Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* NOTE:  We are using a SDCard adapter/module without Card Detect pin!
 | 
				
			||||||
 | 
					 * Then we don't need to Card Detect callback here.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_spi1register
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Registers media change callback
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI1
 | 
				
			||||||
 | 
					int imxrt_lpspi1register(struct spi_dev_s *dev, spi_mediachange_t callback,
 | 
				
			||||||
 | 
					                       void *arg)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  spiinfo("INFO: Registering spi1 device\n");
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_mmcsd_spi_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize SPI-based SD card and card detect thread.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imxrt_mmcsd_spi_initialize(int minor)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct spi_dev_s *spi;
 | 
				
			||||||
 | 
					  int rv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mcinfo("INFO: Initializing mmcsd card\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  spi = imxrt_lpspibus_initialize(SD_SPI_PORT);
 | 
				
			||||||
 | 
					  if (spi == NULL)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      mcerr("ERROR: Failed to initialize SPI port %d\n", SD_SPI_PORT);
 | 
				
			||||||
 | 
					      return -ENODEV;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rv = mmcsd_spislotinitialize(minor, SD_SLOT_NO, spi);
 | 
				
			||||||
 | 
					  if (rv < 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      mcerr("ERROR: Failed to bind SPI port %d to SD slot %d\n",
 | 
				
			||||||
 | 
					            SD_SPI_PORT, SD_SLOT_NO);
 | 
				
			||||||
 | 
					      return rv;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  spiinfo("INFO: mmcsd card has been initialized successfully\n");
 | 
				
			||||||
 | 
					  return OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_MMCSD_SPI */
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -0,0 +1,220 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_spi.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_spi.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					#include <debug.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/spi/spi.h>
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "arm_arch.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_config.h"
 | 
				
			||||||
 | 
					#include "imxrt_lpspi.h"
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_IMXRT_LPSPI1) || defined(CONFIG_IMXRT_LPSPI2) || \
 | 
				
			||||||
 | 
					    defined(CONFIG_IMXRT_LPSPI3) || defined(CONFIG_IMXRT_LPSPI4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_spidev_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Called to configure SPI chip select GPIO pins for the xidatong
 | 
				
			||||||
 | 
					 *    board.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void weak_function imxrt_spidev_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI1
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_LPSPI1_CS); /* LPSPI1 chip select */
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_MMCSD_EN);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI3
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_LPSPI3_CS); /* LPSPI3 chip select */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name:  imxrt_lpspi1/2/3select and imxrt_lpspi1/2/3status
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   The external functions, imxrt_lpspi1/2/3select and
 | 
				
			||||||
 | 
					 *   imxrt_lpspi1/2/3status must be provided by board-specific logic.
 | 
				
			||||||
 | 
					 *   They are implementations of the select and status methods of the SPI
 | 
				
			||||||
 | 
					 *   interface defined by struct spi_ops_s (see include/nuttx/spi/spi.h).
 | 
				
			||||||
 | 
					 *   All other methods (including imxrt_lpspibus_initialize()) are provided
 | 
				
			||||||
 | 
					 *   by common STM32 logic.  To use this common SPI logic on your board:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   1. Provide logic in imxrt_boardinitialize() to configure SPI chip select
 | 
				
			||||||
 | 
					 *      pins.
 | 
				
			||||||
 | 
					 *   2. Provide imxrt_lpspi1/2/3select() and imxrt_lpspi1/2/3status()
 | 
				
			||||||
 | 
					 *      functions in your board-specific logic.
 | 
				
			||||||
 | 
					 *      These functions will perform chip selection and status operations
 | 
				
			||||||
 | 
					 *      using GPIOs in the way your board is configured.
 | 
				
			||||||
 | 
					 *   3. Add a calls to imxrt_lpspibus_initialize() in your low level
 | 
				
			||||||
 | 
					 *      application initialization logic
 | 
				
			||||||
 | 
					 *   4. The handle returned by imxrt_lpspibus_initialize() may then be used
 | 
				
			||||||
 | 
					 *      to bind the SPI driver to higher level logic (e.g., calling
 | 
				
			||||||
 | 
					 *      mmcsd_spislotinitialize(), for example, will bind the SPI driver to
 | 
				
			||||||
 | 
					 *      the SPI MMC/SD driver).
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI1
 | 
				
			||||||
 | 
					void imxrt_lpspi1select(FAR struct spi_dev_s *dev, uint32_t devid,
 | 
				
			||||||
 | 
					                        bool selected)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  spiinfo("devid: %d CS: %s\n", (int)devid,
 | 
				
			||||||
 | 
					          selected ? "assert" : "de-assert");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LPSPI1_CS, !selected);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t imxrt_lpspi1status(FAR struct spi_dev_s *dev, uint32_t devid)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI2
 | 
				
			||||||
 | 
					void imxrt_lpspi2select(FAR struct spi_dev_s *dev, uint32_t devid,
 | 
				
			||||||
 | 
					                        bool selected)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  spiinfo("devid: %d CS: %s\n", (int)devid,
 | 
				
			||||||
 | 
					          selected ? "assert" : "de-assert");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LPSPI2_CS, !selected);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t imxrt_lpspi2status(FAR struct spi_dev_s *dev, uint32_t devid)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI3
 | 
				
			||||||
 | 
					void imxrt_lpspi3select(FAR struct spi_dev_s *dev, uint32_t devid,
 | 
				
			||||||
 | 
					                        bool selected)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  spiinfo("devid: %d CS: %s\n", (int)devid,
 | 
				
			||||||
 | 
					          selected ? "assert" : "de-assert");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LPSPI3_CS, !selected);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t imxrt_lpspi3status(FAR struct spi_dev_s *dev, uint32_t devid)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI4
 | 
				
			||||||
 | 
					void imxrt_lpspi4select(FAR struct spi_dev_s *dev, uint32_t devid,
 | 
				
			||||||
 | 
					                        bool selected)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  spiinfo("devid: %d CS: %s\n", (int)devid,
 | 
				
			||||||
 | 
					          selected ? "assert" : "de-assert");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LPSPI4_CS, !selected);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t imxrt_lpspi4status(FAR struct spi_dev_s *dev, uint32_t devid)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_lpspi1cmddata
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Set or clear the SH1101A A0 or SD1306 D/C n bit to select data (true)
 | 
				
			||||||
 | 
					 *   or command (false). This function must be provided by platform-specific
 | 
				
			||||||
 | 
					 *   logic. This is an implementation of the cmddata method of the SPI
 | 
				
			||||||
 | 
					 *   interface defined by struct spi_ops_s (see include/nuttx/spi/spi.h).
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   spi - SPI device that controls the bus the device that requires the CMD/
 | 
				
			||||||
 | 
					 *         DATA selection.
 | 
				
			||||||
 | 
					 *   devid - If there are multiple devices on the bus, this selects which one
 | 
				
			||||||
 | 
					 *         to select cmd or data.  NOTE:  This design restricts, for example,
 | 
				
			||||||
 | 
					 *         one one SPI display per SPI bus.
 | 
				
			||||||
 | 
					 *   cmd - true: select command; false: select data
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_SPI_CMDDATA
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI1
 | 
				
			||||||
 | 
					int imxrt_lpspi1cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return -ENODEV;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI2
 | 
				
			||||||
 | 
					int imxrt_lpspi2cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return -ENODEV;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI3
 | 
				
			||||||
 | 
					int imxrt_lpspi3cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return -ENODEV;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_IMXRT_LPSPI4
 | 
				
			||||||
 | 
					int imxrt_lpspi4cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return -ENODEV;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* CONFIG_SPI_CMDDATA */
 | 
				
			||||||
 | 
					#endif /* CONFIG_IMXRT_LPSPI1 || CONFIG_IMXRT_LPSPI2 */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,94 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/imxrt_userleds.c
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file imxrt_userleds.c
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* There are four LED status indicators located on the EVK Board.  The
 | 
				
			||||||
 | 
					 * functions of these LEDs include:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   - Main Power Supply(D3)
 | 
				
			||||||
 | 
					 *     Green: DC 5V main supply is normal.
 | 
				
			||||||
 | 
					 *     Red:   J2 input voltage is over 5.6V.
 | 
				
			||||||
 | 
					 *     Off:   The board is not powered.
 | 
				
			||||||
 | 
					 *   - Reset RED LED(D15)
 | 
				
			||||||
 | 
					 *   - OpenSDA LED(D16)
 | 
				
			||||||
 | 
					 *   - USER LED(D18)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Only a single LED, D18, is under software control.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					#include "imxrt_iomuxc.h"
 | 
				
			||||||
 | 
					#include "xidatong.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <arch/board/board.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(CONFIG_ARCH_LEDS) && defined(GPIO_LED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_userled_initialize
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t board_userled_initialize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Configure LED GPIO for output */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_config_gpio(GPIO_LED);
 | 
				
			||||||
 | 
					  return BOARD_NLEDS;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_userled
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void board_userled(int led, bool ledon)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LED, !ledon);  /* Low illuminates */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: board_userled_all
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void board_userled_all(uint32_t ledset)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  /* Low illuminates */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  imxrt_gpio_write(GPIO_LED, (ledset & BOARD_USERLED_BIT) == 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* !CONFIG_ARCH_LEDS */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,202 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * boards/arm/imxrt/xidatong/src/xidatong.h
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file xidatong.h
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __BOARDS_ARM_IMXRT_XIDATONG_SRC_XIDATONG_H
 | 
				
			||||||
 | 
					#define __BOARDS_ARM_IMXRT_XIDATONG_SRC_XIDATONG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <arch/irq.h>
 | 
				
			||||||
 | 
					#include <nuttx/irq.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "imxrt_gpio.h"
 | 
				
			||||||
 | 
					#include "imxrt_iomuxc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LEDs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_LED        (GPIO_OUTPUT | IOMUX_LED_DEFAULT | \
 | 
				
			||||||
 | 
					                         GPIO_OUTPUT_ZERO | GPIO_PORT1 | GPIO_PIN9)       /* AD_BO_09 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Buttons ******************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_SW8       (GPIO_INTERRUPT | GPIO_INT_FALLINGEDGE | \
 | 
				
			||||||
 | 
					                        IOMUX_SW_DEFAULT | \
 | 
				
			||||||
 | 
					                        GPIO_PORT5 | GPIO_PIN0 | )              /* WAKEUP */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Test Pins ****************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_NGPIOIN   0 /* Amount of GPIO Input pins */
 | 
				
			||||||
 | 
					#define BOARD_NGPIOOUT  4 /* Amount of GPIO Output pins */
 | 
				
			||||||
 | 
					#define BOARD_NGPIOINT  0 /* Amount of GPIO Input w/ Interruption pins */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_GOUT1      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
 | 
				
			||||||
 | 
					                         GPIO_PORT1 | GPIO_PIN19)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_GOUT2      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
 | 
				
			||||||
 | 
					                         GPIO_PIN18 | GPIO_PORT1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_GOUT3      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
 | 
				
			||||||
 | 
					                         GPIO_PIN10 | GPIO_PORT1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_GOUT4      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
 | 
				
			||||||
 | 
					                         GPIO_PIN9 | GPIO_PORT1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Backlight */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_LCD_BL     (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | GPIO_PORT2 | \
 | 
				
			||||||
 | 
					                         GPIO_PIN31 | IOMUX_LCD_BL_DEFAULT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Ethernet */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GPIO_ENET_INT   (IOMUX_ENET_INT_DEFAULT | \
 | 
				
			||||||
 | 
					                         GPIO_PORT1 | GPIO_PIN10)                    /* AD_B0_10 */
 | 
				
			||||||
 | 
					#define GPIO_ENET_IRQ   IMXRT_IRQ_GPIO1_10
 | 
				
			||||||
 | 
					#define GPIO_ENET_RST   (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | \
 | 
				
			||||||
 | 
					                         GPIO_PORT1 | GPIO_PIN9 | IOMUX_ENET_RST_DEFAULT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_ETH0_PHY_KSZ8081
 | 
				
			||||||
 | 
					#ifdef GPIO_LED
 | 
				
			||||||
 | 
					#warning LED interferes with ETH reset unless R323 is removed.
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPSPI CS: */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IOMUX_LPSPI3_CS (IOMUX_SLEW_FAST | IOMUX_DRIVE_50OHM | \
 | 
				
			||||||
 | 
					                         IOMUX_SPEED_MEDIUM | IOMUX_PULL_UP_100K | \
 | 
				
			||||||
 | 
					                         _IOMUX_PULL_ENABLE)
 | 
				
			||||||
 | 
					#define GPIO_LPSPI3_CS  (GPIO_OUTPUT | GPIO_OUTPUT_ONE | \
 | 
				
			||||||
 | 
					                         GPIO_PORT1 | GPIO_PIN3 | IOMUX_LPSPI3_CS) /* GPIO_AD_B0_03 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LPSPI1 CS:  GPIO_SD_B0_01 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IOMUX_LPSPI1_CS (IOMUX_SLEW_FAST | IOMUX_DRIVE_50OHM | \
 | 
				
			||||||
 | 
					                         IOMUX_SPEED_MEDIUM | IOMUX_PULL_UP_100K | \
 | 
				
			||||||
 | 
					                         _IOMUX_PULL_ENABLE)
 | 
				
			||||||
 | 
					#define GPIO_LPSPI1_CS  (GPIO_OUTPUT | GPIO_OUTPUT_ONE | \
 | 
				
			||||||
 | 
					                         GPIO_PORT3 | GPIO_PIN13 | IOMUX_LPSPI1_CS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IOMUX_MMCSD_EN  (IOMUX_SLEW_FAST | IOMUX_DRIVE_50OHM | \
 | 
				
			||||||
 | 
					                         IOMUX_SPEED_MEDIUM | IOMUX_PULL_UP_100K | \
 | 
				
			||||||
 | 
					                         _IOMUX_PULL_ENABLE)
 | 
				
			||||||
 | 
					#define GPIO_MMCSD_EN   (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | \
 | 
				
			||||||
 | 
					                         GPIO_PORT3 | GPIO_PIN2 | IOMUX_MMCSD_EN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Types
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __ASSEMBLY__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions Definitions
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_bringup
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Bring up board features
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_BOARDCTL) || defined(CONFIG_BOARD_LATE_INITIALIZE)
 | 
				
			||||||
 | 
					int imxrt_bringup(void);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_spidev_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Called to configure SPI chip select GPIO pins for the i.MXRT1050 EVK.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void imxrt_spidev_initialize(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_mmcsd_spi_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize SPI-based SD card and card detect thread.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_MMCSD_SPI
 | 
				
			||||||
 | 
					int imxrt_mmcsd_spi_initialize(int minor);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_autoled_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize NuttX-controlled LED logic
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Input Parameters:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returned Value:
 | 
				
			||||||
 | 
					 *   None
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_ARCH_LEDS
 | 
				
			||||||
 | 
					void imxrt_autoled_initialize(void);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_DEV_GPIO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Name: imxrt_gpio_initialize
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Description:
 | 
				
			||||||
 | 
					 *   Initialize GPIO drivers for use with /apps/examples/gpio
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imxrt_gpio_initialize(void);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __ASSEMBLY__ */
 | 
				
			||||||
 | 
					#endif /* __BOARDS_ARM_IMXRT_XIDATONG_SRC_XIDATONG_H */
 | 
				
			||||||
| 
						 | 
					@ -18,5 +18,6 @@ cp -rf $current/nuttx $nuttx
 | 
				
			||||||
cp -rf $current/apps $nuttx
 | 
					cp -rf $current/apps $nuttx
 | 
				
			||||||
cp -rf $nuttx/aiit_board/aiit-arm32-board  $nuttx/nuttx/boards/arm/stm32
 | 
					cp -rf $nuttx/aiit_board/aiit-arm32-board  $nuttx/nuttx/boards/arm/stm32
 | 
				
			||||||
cp -rf $nuttx/aiit_board/aiit-riscv64-board $nuttx/nuttx/boards/risc-v/k210
 | 
					cp -rf $nuttx/aiit_board/aiit-riscv64-board $nuttx/nuttx/boards/risc-v/k210
 | 
				
			||||||
 | 
					cp -rf $nuttx/aiit_board/xidatong $nuttx/nuttx/boards/arm/imxrt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd ../nuttx
 | 
					cd ../nuttx
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,120 @@
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * arch/arm/include/imxrt/chip.h
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed to the Apache Software Foundation (ASF) under one or more
 | 
				
			||||||
 | 
					 * contributor license agreements.  See the NOTICE file distributed with
 | 
				
			||||||
 | 
					 * this work for additional information regarding copyright ownership.  The
 | 
				
			||||||
 | 
					 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 * "License"); you may not use this file except in compliance with the
 | 
				
			||||||
 | 
					 * License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
				
			||||||
 | 
					 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 | 
				
			||||||
 | 
					 * License for the specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 * under the License.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file chip.h
 | 
				
			||||||
 | 
					* @brief nuttx source code
 | 
				
			||||||
 | 
					*                https://github.com/apache/incubator-nuttx.git
 | 
				
			||||||
 | 
					* @version 10.2.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2022-03-23
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __ARCH_ARM_INCLUDE_IMXRT_CHIP_H
 | 
				
			||||||
 | 
					#define __ARCH_ARM_INCLUDE_IMXRT_CHIP_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Included Files
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nuttx/config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Pre-processor Prototypes
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Get customizations for each supported chip */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(CONFIG_ARCH_CHIP_MIMXRT1021CAG4A) || \
 | 
				
			||||||
 | 
					    defined(CONFIG_ARCH_CHIP_MIMXRT1021CAF4A) || \
 | 
				
			||||||
 | 
					    defined(CONFIG_ARCH_CHIP_MIMXRT1021DAF5A) || \
 | 
				
			||||||
 | 
					    defined(CONFIG_ARCH_CHIP_MIMXRT1021DAG5A)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*  MIMXRT1021CAG4A - 144 pin, 400MHz Industrial
 | 
				
			||||||
 | 
					 *  MIMXRT1021CAF4A - 100 pin, 400MHz Industrial
 | 
				
			||||||
 | 
					 *  MIMXRT1021DAF5A - 100 pin, 500MHz Consumer
 | 
				
			||||||
 | 
					 *  MIMXRT1021DAG5A - 144 pin, 500MHz Consumer
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#  define IMXRT_OCRAM_SIZE      (256 * 1024) /* 256Kb OCRAM */
 | 
				
			||||||
 | 
					#  define IMXRT_GPIO_NPORTS     5            /* Five total ports */
 | 
				
			||||||
 | 
					                                             /* but 4 doesn't exist */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined(CONFIG_ARCH_CHIP_MIMXRT1051DVL6A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1051CVL5A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1052DVL6A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1052CVL5A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1052CVL5B)
 | 
				
			||||||
 | 
					/* MIMXRT1051CVL5A - Industrial, Reduced Features, 528MHz
 | 
				
			||||||
 | 
					 * MIMXRT1051DVL6A - Consumer, Reduced Features, 600MHz
 | 
				
			||||||
 | 
					 * MIMXRT1052CVL5A - Industrial, Full Feature, 528MHz
 | 
				
			||||||
 | 
					 * MIMXRT1052CVL5B - Industrial, Full Feature, 528MHz
 | 
				
			||||||
 | 
					 * MIMXRT1052DVL6A - Consumer, Full Feature, 600MHz
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#  define IMXRT_OCRAM_SIZE            (512 * 1024) /* 512Kb OCRAM */
 | 
				
			||||||
 | 
					#  define IMXRT_GPIO_NPORTS            5           /* Five total ports */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined(CONFIG_ARCH_CHIP_MIMXRT1061DVL6A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1061CVL5A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1062DVL6A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1062CVL5A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1064DVL6A) || \
 | 
				
			||||||
 | 
					      defined(CONFIG_ARCH_CHIP_MIMXRT1064CVL5A)
 | 
				
			||||||
 | 
					/* MIMXRT1061CVL5A - Industrial, Reduced Features, 528MHz
 | 
				
			||||||
 | 
					 * MIMXRT1061DVL6A - Consumer, Reduced Features, 600MHz
 | 
				
			||||||
 | 
					 * MIMXRT1062CVL5A - Industrial, Full Feature, 528MHz
 | 
				
			||||||
 | 
					 * MIMXRT1062DVL6A - Consumer, Full Feature, 600MHz
 | 
				
			||||||
 | 
					 * MIMXRT1064CVL5A - Industrial, Full Feature, 528MHz
 | 
				
			||||||
 | 
					 * MIMXRT1064DVL6A - Consumer, Full Feature, 600MHz
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#  define IMXRT_OCRAM_SIZE            (1024 * 1024) /* 1024Kb OCRAM */
 | 
				
			||||||
 | 
					#  define IMXRT_GPIO_NPORTS            9            /* Nine total ports */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  error "Unknown i.MX RT chip type"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* NVIC priority levels *****************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Each priority field holds an 8-bit priority value, 0-15. The lower the
 | 
				
			||||||
 | 
					 * value, the greater the priority of the corresponding interrupt.  The i.MX
 | 
				
			||||||
 | 
					 * RT processor implements only bits[7:4] of each field, bits[3:0] read as
 | 
				
			||||||
 | 
					 * zero and ignore writes.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NVIC_SYSH_PRIORITY_MIN        0xf0 /* All bits[7:4] set is min pri */
 | 
				
			||||||
 | 
					#define NVIC_SYSH_PRIORITY_DEFAULT    0x80 /* Midpoint is the default */
 | 
				
			||||||
 | 
					#define NVIC_SYSH_PRIORITY_MAX        0x00 /* Zero is maximum priority */
 | 
				
			||||||
 | 
					#define NVIC_SYSH_PRIORITY_STEP       0x40 /* Two bits of interrupt pri used */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Types
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Data
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/****************************************************************************
 | 
				
			||||||
 | 
					 * Public Functions Prototypes
 | 
				
			||||||
 | 
					 ****************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __ARCH_ARM_INCLUDE_IMXRT_CHIP_H */
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -445,6 +445,16 @@ config ARCH_BOARD_IMXRT1050_EVK
 | 
				
			||||||
		This is the board configuration for the port of NuttX to the NXP i.MXRT
 | 
							This is the board configuration for the port of NuttX to the NXP i.MXRT
 | 
				
			||||||
		evaluation kit, MIMXRT1050-EVKB.  This board features the MIMXRT1052DVL6A MCU.
 | 
							evaluation kit, MIMXRT1050-EVKB.  This board features the MIMXRT1052DVL6A MCU.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config ARCH_BOARD_XIDATONG
 | 
				
			||||||
 | 
						bool "NXP i.MX RT 1052 XIDATONG"
 | 
				
			||||||
 | 
						depends on ARCH_CHIP_MIMXRT1052CVL5B
 | 
				
			||||||
 | 
						select ARCH_HAVE_LEDS
 | 
				
			||||||
 | 
						select ARCH_HAVE_BUTTONS
 | 
				
			||||||
 | 
						select ARCH_HAVE_IRQBUTTONS
 | 
				
			||||||
 | 
						---help---
 | 
				
			||||||
 | 
							This is the board configuration for the port of NuttX to the NXP i.MXRT
 | 
				
			||||||
 | 
							evaluation kit, MIMXRT1052-XIDATONG.  This board features the MIMXRT1052CVL5B MCU.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config ARCH_BOARD_IMXRT1060_EVK
 | 
					config ARCH_BOARD_IMXRT1060_EVK
 | 
				
			||||||
	bool "NXP i.MX RT 1060 EVK"
 | 
						bool "NXP i.MX RT 1060 EVK"
 | 
				
			||||||
	depends on ARCH_CHIP_MIMXRT1062DVL6A
 | 
						depends on ARCH_CHIP_MIMXRT1062DVL6A
 | 
				
			||||||
| 
						 | 
					@ -2382,6 +2392,7 @@ config ARCH_BOARD
 | 
				
			||||||
	default "hymini-stm32v"            if ARCH_BOARD_HYMINI_STM32V
 | 
						default "hymini-stm32v"            if ARCH_BOARD_HYMINI_STM32V
 | 
				
			||||||
	default "imxrt1020-evk"            if ARCH_BOARD_IMXRT1020_EVK
 | 
						default "imxrt1020-evk"            if ARCH_BOARD_IMXRT1020_EVK
 | 
				
			||||||
	default "imxrt1050-evk"            if ARCH_BOARD_IMXRT1050_EVK
 | 
						default "imxrt1050-evk"            if ARCH_BOARD_IMXRT1050_EVK
 | 
				
			||||||
 | 
						default "xidatong"                 if ARCH_BOARD_XIDATONG
 | 
				
			||||||
	default "imxrt1060-evk"            if ARCH_BOARD_IMXRT1060_EVK
 | 
						default "imxrt1060-evk"            if ARCH_BOARD_IMXRT1060_EVK
 | 
				
			||||||
	default "imxrt1064-evk"            if ARCH_BOARD_IMXRT1064_EVK
 | 
						default "imxrt1064-evk"            if ARCH_BOARD_IMXRT1064_EVK
 | 
				
			||||||
	default "kwikstik-k40"             if ARCH_BOARD_KWIKSTIK_K40
 | 
						default "kwikstik-k40"             if ARCH_BOARD_KWIKSTIK_K40
 | 
				
			||||||
| 
						 | 
					@ -2660,6 +2671,9 @@ endif
 | 
				
			||||||
if ARCH_BOARD_IMXRT1050_EVK
 | 
					if ARCH_BOARD_IMXRT1050_EVK
 | 
				
			||||||
source "boards/arm/imxrt/imxrt1050-evk/Kconfig"
 | 
					source "boards/arm/imxrt/imxrt1050-evk/Kconfig"
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					if ARCH_BOARD_XIDATONG
 | 
				
			||||||
 | 
					source "boards/arm/imxrt/xidatong/Kconfig"
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
if ARCH_BOARD_IMXRT1060_EVK
 | 
					if ARCH_BOARD_IMXRT1060_EVK
 | 
				
			||||||
source "boards/arm/imxrt/imxrt1060-evk/Kconfig"
 | 
					source "boards/arm/imxrt/imxrt1060-evk/Kconfig"
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue