Setup the SAMA5D4-EK NSH configuration to use the DRAMBOOT loader by default

This commit is contained in:
Gregory Nutt 2014-06-26 17:04:53 -06:00
parent 2be17d64b3
commit 654fd5ff2d
7 changed files with 162 additions and 12 deletions

View File

@ -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.
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:
The load address is different for the DRAMBOOT program and the Linux
bootloaders. This can easily be reconfigured, however:
CONFIG_SAMA5D4EK_DRAM_BOOT=y
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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -0,0 +1,123 @@
/****************************************************************************
* configs/sama5d4-ek/scripts/dramboot.ld
*
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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) }
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* configs/sama5d4-ek/scripts/ddram.ld
* configs/sama5d4-ek/scripts/uboot.ld
*
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -36,7 +36,7 @@
/* 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.
* 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.