zynq-mpsoc/zcu111: independent JTAG configs from normal nsh configs
This commit is contained in:
parent
07c1f5db92
commit
d74a612a6e
@ -181,9 +181,17 @@ void arm64_chip_boot(void)
|
||||
|
||||
arm64_mmu_init(true);
|
||||
|
||||
#if defined(CONFIG_SMP) || defined(CONFIG_ARCH_HAVE_PSCI)
|
||||
/* arm64_psci_init("smc"); */
|
||||
#if defined(CONFIG_ARM64_PSCI)
|
||||
|
||||
/* Default exception level is EL1 for the NuttX OS. However, if we debug
|
||||
* NuttX by JTAG, The XSCT of Vivado SDK will set the Zynq MPSoC
|
||||
* to EL3. Other levels are not supported at the moment. And in this
|
||||
* operating conditon, we can't use SMC for there's no ATF support.
|
||||
*/
|
||||
|
||||
#if CONFIG_ARCH_ARM64_EXCEPTION_LEVEL < 3
|
||||
arm64_psci_init("smc");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Perform board-specific device initialization. This would include
|
||||
|
74
boards/arm64/zynq-mpsoc/zcu111/configs/jtag/defconfig
Normal file
74
boards/arm64/zynq-mpsoc/zcu111/configs/jtag/defconfig
Normal file
@ -0,0 +1,74 @@
|
||||
#
|
||||
# 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_DEBUG_OPT_UNUSED_SECTIONS is not set
|
||||
CONFIG_ARCH="arm64"
|
||||
CONFIG_ARCH_ARM64=y
|
||||
CONFIG_ARCH_ARM64_EXCEPTION_LEVEL=3
|
||||
CONFIG_ARCH_BOARD="zcu111"
|
||||
CONFIG_ARCH_BOARD_ZCU111=y
|
||||
CONFIG_ARCH_CHIP="zynq-mpsoc"
|
||||
CONFIG_ARCH_CHIP_ZYNQ_MPSOC=y
|
||||
CONFIG_ARCH_EARLY_PRINT=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=4096
|
||||
CONFIG_ARM64_DCACHE_DISABLE=y
|
||||
CONFIG_ARM64_GIC_VERSION=2
|
||||
CONFIG_ARM64_ICACHE_DISABLE=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=116524
|
||||
CONFIG_BOOT_RUNFROMSDRAM=y
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_ASSERTIONS=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_IRQ=y
|
||||
CONFIG_DEBUG_IRQ_INFO=y
|
||||
CONFIG_DEBUG_SCHED=y
|
||||
CONFIG_DEBUG_SCHED_ERROR=y
|
||||
CONFIG_DEBUG_SCHED_INFO=y
|
||||
CONFIG_DEBUG_SCHED_WARN=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEFAULT_TASK_STACKSIZE=8192
|
||||
CONFIG_DEV_ZERO=y
|
||||
CONFIG_ETC_ROMFS=y
|
||||
CONFIG_EXAMPLES_HELLO=y
|
||||
CONFIG_EXAMPLES_LEDS=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_FS_ROMFS=y
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=8192
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_INIT_STACKSIZE=9192
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_FILEIOSIZE=512
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_PTHREAD_STACK_MIN=8192
|
||||
CONFIG_RAMLOG=y
|
||||
CONFIG_RAM_SIZE=2145386496
|
||||
CONFIG_RAM_START=0x00100000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_READLINE_CMD_HISTORY=y
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SCHED_BACKTRACE=y
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_HPWORKPRIORITY=192
|
||||
CONFIG_SPINLOCK=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_MONTH=11
|
||||
CONFIG_START_YEAR=2022
|
||||
CONFIG_SYMTAB_ORDEREDBYNAME=y
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_SYSTEM=y
|
||||
CONFIG_SYSTEM_TIME64=y
|
||||
CONFIG_TESTING_GETPRIME=y
|
||||
CONFIG_TESTING_OSTEST=y
|
||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
||||
CONFIG_USEC_PER_TICK=1000
|
||||
CONFIG_USERLED=y
|
@ -5,10 +5,8 @@
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_DEBUG_OPT_UNUSED_SECTIONS is not set
|
||||
CONFIG_ARCH="arm64"
|
||||
CONFIG_ARCH_ARM64=y
|
||||
CONFIG_ARCH_ARM64_EXCEPTION_LEVEL=3
|
||||
CONFIG_ARCH_BOARD="zcu111"
|
||||
CONFIG_ARCH_BOARD_ZCU111=y
|
||||
CONFIG_ARCH_CHIP="zynq-mpsoc"
|
||||
@ -18,11 +16,12 @@ CONFIG_ARCH_INTERRUPTSTACK=4096
|
||||
CONFIG_ARM64_DCACHE_DISABLE=y
|
||||
CONFIG_ARM64_GIC_VERSION=2
|
||||
CONFIG_ARM64_ICACHE_DISABLE=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=116524
|
||||
CONFIG_BOOT_RUNFROMSDRAM=y
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_ASSERTIONS=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_IRQ=y
|
||||
CONFIG_DEBUG_IRQ_INFO=y
|
||||
CONFIG_DEBUG_SCHED=y
|
||||
@ -51,8 +50,8 @@ CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_PTHREAD_STACK_MIN=8192
|
||||
CONFIG_RAMLOG=y
|
||||
CONFIG_RAM_SIZE=2146435072
|
||||
CONFIG_RAM_START=0x00000000
|
||||
CONFIG_RAM_SIZE=2145386496
|
||||
CONFIG_RAM_START=0x00100000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_READLINE_CMD_HISTORY=y
|
||||
CONFIG_RR_INTERVAL=200
|
||||
|
@ -22,91 +22,126 @@ OUTPUT_ARCH(aarch64)
|
||||
|
||||
ENTRY(__start)
|
||||
|
||||
/* We don't use Uboot on Zynq UltraScale+ MPSoC besause XilinX SDK provided
|
||||
* FSBL(First Stage Boot Loader) which will boot ATF(Trusted Firmware-A)
|
||||
* and ATF will boot NuttX on BL31 stage. Memory is organized as follows:
|
||||
* - ATF debug reserved area is 0x00000000 - 0x00100000
|
||||
* - NuttX is loaded to 0x00100000 by ATF, ATF expects us here
|
||||
* - NuttX ROM and RAM are one continuous region, starting from 0x00100000
|
||||
with a size of 2046MB
|
||||
* - Heap memory is allocated from dram end to idlestack top
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
axi_bram_ctrl_0_Mem0 : ORIGIN = 0xB0000000, LENGTH = 0x1000
|
||||
psu_ddr_0_MEM_0 : ORIGIN = 0x0, LENGTH = 0x100000
|
||||
dram (rwx) : ORIGIN = 0x00100000, LENGTH = 0x7FE00000
|
||||
psu_ddr_1_MEM_0 : ORIGIN = 0x800000000, LENGTH = 0x80000000
|
||||
psu_ocm_ram_0_MEM_0 : ORIGIN = 0xFFFC0000, LENGTH = 0x40000
|
||||
psu_qspi_linear_0_MEM_0 : ORIGIN = 0xC0000000, LENGTH = 0x20000000
|
||||
}
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD ;
|
||||
/* R = 100, W = 010, X = 001 */
|
||||
|
||||
text PT_LOAD FLAGS(5); /* RX */
|
||||
rodata PT_LOAD FLAGS(4); /* R */
|
||||
data PT_LOAD FLAGS(6); /* RW */
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00000000; /* U-Boot loads NuttX at this address (kernel_addr_r) */
|
||||
_start = .;
|
||||
.text : {
|
||||
_stext = .; /* Text section */
|
||||
*(.start .start.*) /* Place __start here */
|
||||
*(.text)
|
||||
*(.text.cold)
|
||||
*(.text.unlikely)
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
} :text = 0x9090
|
||||
.text :
|
||||
{
|
||||
_stext = ABSOLUTE(.); /* Text section */
|
||||
*(.start .start.*) /* Place __start here */
|
||||
*(.text .text.*)
|
||||
*(.text.cold)
|
||||
*(.text.unlikely)
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
} > dram :text
|
||||
|
||||
.init_section :
|
||||
{
|
||||
_sinit = ABSOLUTE(.);
|
||||
KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
|
||||
KEEP(*(.init_array .ctors))
|
||||
_einit = ABSOLUTE(.);
|
||||
} > dram :text
|
||||
|
||||
/* Vector table must be page aligned */
|
||||
|
||||
.vector : ALIGN(4096)
|
||||
{
|
||||
_vector_start = ABSOLUTE(.);
|
||||
KEEP(*(.exc_vector_table))
|
||||
KEEP(*(".exc_vector_table.*"))
|
||||
KEEP(*(.vectors))
|
||||
_vector_end = ABSOLUTE(.);
|
||||
} > dram :text
|
||||
|
||||
/* End of text data must be aligned to page boundary */
|
||||
|
||||
. = ALIGN(4096);
|
||||
|
||||
.init_section : {
|
||||
_sinit = ABSOLUTE(.);
|
||||
KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
|
||||
KEEP(*(.init_array .ctors))
|
||||
_einit = ABSOLUTE(.);
|
||||
}
|
||||
|
||||
. = ALIGN(4096);
|
||||
|
||||
.vector : {
|
||||
_vector_start = .;
|
||||
KEEP(*(.exc_vector_table))
|
||||
KEEP(*(".exc_vector_table.*"))
|
||||
KEEP(*(.vectors))
|
||||
_vector_end = .;
|
||||
} :text
|
||||
. = ALIGN(4096);
|
||||
_etext = .; /* End_1 of .text */
|
||||
_etext = .;
|
||||
_sztext = _etext - _stext;
|
||||
|
||||
/* Start of RO data must be page aligned (mapped as read only) */
|
||||
|
||||
.rodata : ALIGN(4096)
|
||||
{
|
||||
_srodata = ABSOLUTE(.); /* Read-only data */
|
||||
*(.rodata .rodata.*)
|
||||
*(.data.rel.ro)
|
||||
*(.data.rel.ro.*)
|
||||
} > dram :rodata
|
||||
|
||||
/* End of RO data must be page aligned */
|
||||
|
||||
. = ALIGN(4096);
|
||||
.rodata : {
|
||||
_srodata = .; /* Read-only data */
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
*(.data.rel.ro)
|
||||
*(.data.rel.ro.*)
|
||||
} :text
|
||||
. = ALIGN(4096);
|
||||
|
||||
_erodata = .; /* End of read-only data */
|
||||
_szrodata = _erodata - _srodata;
|
||||
_eronly = .; /* End of read-only data */
|
||||
|
||||
. = ALIGN(4096);
|
||||
.data : { /* Data */
|
||||
_sdata = .;
|
||||
*(.data.page_aligned)
|
||||
*(.data)
|
||||
. = ALIGN(8);
|
||||
*(.data.rel)
|
||||
*(.data.rel.*)
|
||||
CONSTRUCTORS
|
||||
} :text
|
||||
_edata = .; /* End+1 of .data */
|
||||
.data : ALIGN(4096)
|
||||
{
|
||||
_sdata = ABSOLUTE(.);
|
||||
*(.data.page_aligned)
|
||||
*(.data .data.*)
|
||||
. = ALIGN(8);
|
||||
*(.data.rel)
|
||||
*(.data.rel.*)
|
||||
CONSTRUCTORS
|
||||
. = ALIGN(8);
|
||||
_edata = ABSOLUTE(.);
|
||||
} > dram :data
|
||||
|
||||
.bss :
|
||||
{
|
||||
. = ALIGN(8);
|
||||
_sbss = ABSOLUTE(.);
|
||||
*(.bss .bss.*)
|
||||
. = ALIGN(8);
|
||||
_ebss = ABSOLUTE(.);
|
||||
} > dram :data
|
||||
|
||||
.bss : { /* BSS */
|
||||
. = ALIGN(8);
|
||||
_sbss = .;
|
||||
*(.bss)
|
||||
. = ALIGN(8);
|
||||
} :text
|
||||
. = ALIGN(4096);
|
||||
_ebss = .;
|
||||
_szbss = _ebss - _sbss;
|
||||
|
||||
.initstack : { /* INIT STACK */
|
||||
_s_initstack = .;
|
||||
*(.initstack)
|
||||
. = ALIGN(16);
|
||||
} :text
|
||||
. = ALIGN(4096);
|
||||
_e_initstack = . ;
|
||||
g_idle_topstack = . ;
|
||||
.initstack :
|
||||
{
|
||||
_s_initstack = ABSOLUTE(.);
|
||||
*(.initstack)
|
||||
} > dram :data
|
||||
|
||||
/* End of data must be page aligned */
|
||||
. = ALIGN(4096);
|
||||
|
||||
g_idle_topstack = .;
|
||||
_e_initstack = .;
|
||||
_szdata = _e_initstack - _sdata;
|
||||
|
||||
/* Sections to be discarded */
|
||||
|
@ -21,7 +21,12 @@
|
||||
include $(TOPDIR)/Make.defs
|
||||
|
||||
CSRCS = zcu111_boardinit.c
|
||||
ifeq ($(CONFIG_BOARDCTL),y)
|
||||
CSRCS += zcu111_appinit.c
|
||||
ifeq ($(CONFIG_BOARDCTL_RESET),y)
|
||||
CSRCS += zcu111_reset.c
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||
CSRCS += zcu111_autoleds.c
|
||||
|
66
boards/arm64/zynq-mpsoc/zcu111/src/zcu111_reset.c
Normal file
66
boards/arm64/zynq-mpsoc/zcu111/src/zcu111_reset.c
Normal file
@ -0,0 +1,66 @@
|
||||
/****************************************************************************
|
||||
* boards/arm64/zynq-mpsoc/zcu111/src/zcu111_reset.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
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#ifdef CONFIG_BOARDCTL_RESET
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_reset
|
||||
*
|
||||
* Description:
|
||||
* Reset board. Support for this function is required by board-level
|
||||
* logic if CONFIG_BOARDCTL_RESET is selected.
|
||||
*
|
||||
* Input Parameters:
|
||||
* status - Status information provided with the reset event. This
|
||||
* meaning of this status information is board-specific. If not
|
||||
* used by a board, the value zero may be provided in calls to
|
||||
* board_reset().
|
||||
*
|
||||
* Returned Value:
|
||||
* If this function returns, then it was not possible to power-off the
|
||||
* board due to some constraints. The return value int this case is a
|
||||
* board-specific reason for the failure to shutdown.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int board_reset(int status)
|
||||
{
|
||||
up_systemreset();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BOARDCTL_RESET */
|
Loading…
Reference in New Issue
Block a user