From a3f565dfc000efeb0c6f2bdde076f779e497662a Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Thu, 26 Jun 2014 17:04:53 -0600 Subject: Setup the SAMA5D4-EK NSH configuration to use the DRAMBOOT loader by default --- nuttx/configs/sama5d4-ek/README.txt | 28 ++++-- nuttx/configs/sama5d4-ek/dramboot/Make.defs | 6 +- nuttx/configs/sama5d4-ek/nsh/Make.defs | 6 +- nuttx/configs/sama5d4-ek/nsh/defconfig | 1 + nuttx/configs/sama5d4-ek/ramtest/Make.defs | 6 +- nuttx/configs/sama5d4-ek/scripts/ddram.ld | 124 --------------------------- nuttx/configs/sama5d4-ek/scripts/dramboot.ld | 123 ++++++++++++++++++++++++++ nuttx/configs/sama5d4-ek/scripts/uboot.ld | 124 +++++++++++++++++++++++++++ 8 files changed, 284 insertions(+), 134 deletions(-) delete mode 100644 nuttx/configs/sama5d4-ek/scripts/ddram.ld create mode 100644 nuttx/configs/sama5d4-ek/scripts/dramboot.ld create mode 100644 nuttx/configs/sama5d4-ek/scripts/uboot.ld diff --git a/nuttx/configs/sama5d4-ek/README.txt b/nuttx/configs/sama5d4-ek/README.txt index 837badfab..604fb5bea 100644 --- a/nuttx/configs/sama5d4-ek/README.txt +++ b/nuttx/configs/sama5d4-ek/README.txt @@ -378,9 +378,11 @@ Creating and Using DRAMBOOT mv nuttx.bin dramboot.bin 4. Build the "real" DRAM configuration. This will create the nuttx.hex - that you will load using dramboot. + that you will load using dramboot. Note that you must select + CONFIG_SAMA5D4EK_DRAM_BOOT=y. This controls the origin at which the + code is linked and positions it correctly for the DRAMBOOT program. - 5. Restart the system holding DIS_BOOT. You should see the RamBOOT + 5. Restart the system holding DIS_BOOT. You should see the RomBOOT prompt on the 115200 8N1 serial console (and nothing) more. Hit the ENTER key with the focus on your terminal window a few time. This will enable JTAG. @@ -2677,7 +2679,7 @@ SAMA4D4-EK Configuration Options CONFIG_RAM_START=0x20000000 - CONFIG_RAM_VSTART - The virutal start address of installed DRAM + CONFIG_RAM_VSTART - The virtual start address of installed DRAM CONFIG_RAM_VSTART=0x20000000 @@ -2926,6 +2928,7 @@ Configurations Now for the gory details: dramboot: + This is a little program to help debug of code in DRAM. It does the following: @@ -3037,10 +3040,20 @@ Configurations 3. This configuration executes out of SDRAM flash and is loaded into SDRAM from NAND, Serial DataFlash, SD card or from a TFTPC sever via - U-Boot or BareBox. Data also is positioned in SDRAM. + U-Boot, BareBox, or the DRAMBOOT configuration described above. Data + also is positioned in SDRAM. + + The load address is different for the DRAMBOOT program and the Linux + bootloaders. This can easily be reconfigured, however: + + CONFIG_SAMA5D4EK_DRAM_BOOT=y - I did most testing with nuttx.bin on an SD card. These are the - commands that I used to boot NuttX from the SD card: + See the section above entitled "Creating and Using DRAMBOOT" above + for more information. + + At times, have have tested with nuttx.bin on an SD card and booting + with U-Boot. These are the commands that I used to boot NuttX from + the SD card: U-Boot> fatload mmc 0 0x20008000 nuttx.bin U-Boot> go 0x20008040 @@ -3093,7 +3106,8 @@ Configurations STATUS: See the To-Do list below - ramtest + ramtest: + This is a stripped down version of NSH that runs out of internal SRAM. It configures SDRAM and supports only the RAM test at apps/examples/ramtest. This configuration is useful for diff --git a/nuttx/configs/sama5d4-ek/dramboot/Make.defs b/nuttx/configs/sama5d4-ek/dramboot/Make.defs index 9de0aeccb..7604f0d37 100644 --- a/nuttx/configs/sama5d4-ek/dramboot/Make.defs +++ b/nuttx/configs/sama5d4-ek/dramboot/Make.defs @@ -42,7 +42,11 @@ ifeq ($(CONFIG_SAMA5_BOOT_ISRAM),y) endif ifeq ($(CONFIG_SAMA5_BOOT_SDRAM),y) - LDSCRIPT = ddram.ld +ifeq ($(CONFIG_SAMA5D4EK_DRAM_BOOT),y) + LDSCRIPT = dramboot.ld +else + LDSCRIPT = uboot.ld +endif endif ifeq ($(WINTOOL),y) diff --git a/nuttx/configs/sama5d4-ek/nsh/Make.defs b/nuttx/configs/sama5d4-ek/nsh/Make.defs index 26a131ace..ac8800468 100644 --- a/nuttx/configs/sama5d4-ek/nsh/Make.defs +++ b/nuttx/configs/sama5d4-ek/nsh/Make.defs @@ -42,7 +42,11 @@ ifeq ($(CONFIG_SAMA5_BOOT_ISRAM),y) endif ifeq ($(CONFIG_SAMA5_BOOT_SDRAM),y) - LDSCRIPT = ddram.ld +ifeq ($(CONFIG_SAMA5D4EK_DRAM_BOOT),y) + LDSCRIPT = dramboot.ld +else + LDSCRIPT = uboot.ld +endif endif ifeq ($(WINTOOL),y) diff --git a/nuttx/configs/sama5d4-ek/nsh/defconfig b/nuttx/configs/sama5d4-ek/nsh/defconfig index 86eff4b53..2561cc6e8 100644 --- a/nuttx/configs/sama5d4-ek/nsh/defconfig +++ b/nuttx/configs/sama5d4-ek/nsh/defconfig @@ -307,6 +307,7 @@ CONFIG_NSH_MMCSDMINOR=0 # CONFIG_SAMA5D4EK_384MHZ is not set CONFIG_SAMA5D4EK_396MHZ=y # CONFIG_SAMA5D4EK_528MHZ is not set +CONFIG_SAMA5D4EK_DRAM_BOOT=y # # RTOS Features diff --git a/nuttx/configs/sama5d4-ek/ramtest/Make.defs b/nuttx/configs/sama5d4-ek/ramtest/Make.defs index 023c81daa..14f179357 100644 --- a/nuttx/configs/sama5d4-ek/ramtest/Make.defs +++ b/nuttx/configs/sama5d4-ek/ramtest/Make.defs @@ -42,7 +42,11 @@ ifeq ($(CONFIG_SAMA5_BOOT_ISRAM),y) endif ifeq ($(CONFIG_SAMA5_BOOT_SDRAM),y) - LDSCRIPT = ddram.ld +ifeq ($(CONFIG_SAMA5D4EK_DRAM_BOOT),y) + LDSCRIPT = dramboot.ld +else + LDSCRIPT = uboot.ld +endif endif ifeq ($(WINTOOL),y) diff --git a/nuttx/configs/sama5d4-ek/scripts/ddram.ld b/nuttx/configs/sama5d4-ek/scripts/ddram.ld deleted file mode 100644 index b2f6349c8..000000000 --- a/nuttx/configs/sama5d4-ek/scripts/ddram.ld +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** - * configs/sama5d4-ek/scripts/ddram.ld - * - * Copyright (C) 2014 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/* The SAMA5D4 has 128 KB of ISRAM beginning at virtual address 0x0020:0000. - * This memory configuration, however, loads into the 256MB SDRAM on board - * the SAMA5D4-EK which lies at 0x2000:0000. An offset 0x00008000 is - * reserved by the bootloader. - * - * Vectors in low memory are assumed and 16KB of ISRAM is reserved at the - * high end of ISRAM for the page table. - */ - -MEMORY -{ - isram (W!RX) : ORIGIN = 0x00200000, LENGTH = 128K - 16K - sdram (W!RX) : ORIGIN = 0x20008000, LENGTH = 256M - 32K -} - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(entry) -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.*) - *(.ARM.extab*) - *(.gnu.linkonce.armextab.*) - _etext = ABSOLUTE(.); - } > sdram - - .init_section : { - _sinit = ABSOLUTE(.); - *(.init_array .init_array.*) - _einit = ABSOLUTE(.); - } > sdram - - .ARM.extab : { - *(.ARM.extab*) - } > sdram - - /* .ARM.exidx is sorted, so has to go in its own output section. */ - - PROVIDE_HIDDEN (__exidx_start = .); - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > sdram - PROVIDE_HIDDEN (__exidx_end = .); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - } > sdram - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - _ebss = ABSOLUTE(.); - } > sdram - - /* 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) } -} diff --git a/nuttx/configs/sama5d4-ek/scripts/dramboot.ld b/nuttx/configs/sama5d4-ek/scripts/dramboot.ld new file mode 100644 index 000000000..4ca01c6b8 --- /dev/null +++ b/nuttx/configs/sama5d4-ek/scripts/dramboot.ld @@ -0,0 +1,123 @@ +/**************************************************************************** + * configs/sama5d4-ek/scripts/dramboot.ld + * + * Copyright (C) 2014 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* The SAMA5D4 has 128 KB of ISRAM beginning at virtual address 0x0020:0000. + * This memory configuration, however, loads into the 256MB SDRAM on board + * the SAMA5D4-EK which lies at 0x2000:0000. + * + * Vectors in low memory are assumed and 16KB of ISRAM is reserved at the + * high end of ISRAM for the page table. + */ + +MEMORY +{ + isram (W!RX) : ORIGIN = 0x00200000, LENGTH = 128K - 16K + sdram (W!RX) : ORIGIN = 0x20000000, LENGTH = 256M +} + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(entry) +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.*) + *(.ARM.extab*) + *(.gnu.linkonce.armextab.*) + _etext = ABSOLUTE(.); + } > sdram + + .init_section : { + _sinit = ABSOLUTE(.); + *(.init_array .init_array.*) + _einit = ABSOLUTE(.); + } > sdram + + .ARM.extab : { + *(.ARM.extab*) + } > sdram + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > sdram + PROVIDE_HIDDEN (__exidx_end = .); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + _edata = ABSOLUTE(.); + } > sdram + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + _ebss = ABSOLUTE(.); + } > sdram + + /* 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) } +} diff --git a/nuttx/configs/sama5d4-ek/scripts/uboot.ld b/nuttx/configs/sama5d4-ek/scripts/uboot.ld new file mode 100644 index 000000000..530be2241 --- /dev/null +++ b/nuttx/configs/sama5d4-ek/scripts/uboot.ld @@ -0,0 +1,124 @@ +/**************************************************************************** + * configs/sama5d4-ek/scripts/uboot.ld + * + * Copyright (C) 2014 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* The SAMA5D4 has 128 KB of ISRAM beginning at virtual address 0x0020:0000. + * This memory configuration, however, loads into the 256MB SDRAM on board + * the SAMA5D4-EK which lies at 0x2000:0000. An offset 0x00008000 is + * reserved for used by the U-boot bootloader. + * + * Vectors in low memory are assumed and 16KB of ISRAM is reserved at the + * high end of ISRAM for the page table. + */ + +MEMORY +{ + isram (W!RX) : ORIGIN = 0x00200000, LENGTH = 128K - 16K + sdram (W!RX) : ORIGIN = 0x20008000, LENGTH = 256M - 32K +} + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(entry) +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.*) + *(.ARM.extab*) + *(.gnu.linkonce.armextab.*) + _etext = ABSOLUTE(.); + } > sdram + + .init_section : { + _sinit = ABSOLUTE(.); + *(.init_array .init_array.*) + _einit = ABSOLUTE(.); + } > sdram + + .ARM.extab : { + *(.ARM.extab*) + } > sdram + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > sdram + PROVIDE_HIDDEN (__exidx_end = .); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + _edata = ABSOLUTE(.); + } > sdram + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + _ebss = ABSOLUTE(.); + } > sdram + + /* 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) } +} -- cgit v1.2.3