Teensy-3.0: Rename Teensy-3.1 linker script; add a new linker script for Teensy-3.0

This commit is contained in:
Gregory Nutt 2015-06-11 12:56:58 -06:00
parent 9c7ba5122b
commit 4f045430ac
4 changed files with 165 additions and 11 deletions

View File

@ -16,21 +16,29 @@ README
MK20DX128VLH5 with slightly less capability. There are many difference MK20DX128VLH5 with slightly less capability. There are many difference
between the MK20DX256VLH7 and the MK20DX128VLH5 but the basic differences between the MK20DX256VLH7 and the MK20DX128VLH5 but the basic differences
that effect how you configure NuttX are: that effect how you configure NuttX are:
mk20dx128vlh5
--------------- -------------- -------------- --------------------------- --------------- -------------- -------------- ---------------------------
Feature Teensy 3.0 Teensy 3.1 CONFIGURATION Feature Teensy 3.0 Teensy 3.1 Teensy 3.0 CONFIGURATION
--------------- -------------- -------------- --------------------------- --------------- -------------- -------------- ---------------------------
Processor Processor
Core MK20DX128VLH5 MK20DX256VLH7 CONFIG_ARCH_CHIP_MK20DX128VLH5 Core MK20DX128VLH5 MK20DX256VLH7 CONFIG_ARCH_CHIP_MK20DX128VLH5=y
Rated Speed 48 MHz 72 MHz Settings in include/board.h Rated Speed 48 MHz 72 MHz See Note 1
Overclockable 96 MHz 96 MHz CONFIG_TEENSY_3X_OVERCLOCK Overclockable 96 MHz 96 MHz CONFIG_TEENSY_3X_OVERCLOCK=y
Flash Memory 128 KB 256 KB See scripts/flash.ld Flash Memory 128 KB 256 KB See Note 1
SRAM 16 KB 64 KB See scripts/flash.ld and SRAM 16 KB 64 KB CONFIG_RAM_SIZE=16384 and
set CONFIG_RAM_SIZE=??? see Note 2
--------------- -------------- -------------- --------------------------- --------------- -------------- -------------- ---------------------------
NOTES:
1. Settings in configs/teensy-3.x/include/board.h will automatically
select the correct clocking based on CONFIG_ARCH_CHIP_MK20DX128VLH5=y.
2. The linker script at configs/teensy-3.x/scripts/mk30dx128vlh5.ld will
automatically be selected when CONFIG_ARCH_CHIP_MK20DX128VLH5=y. It
will use the correct FLASH and SRAM sizes.
The initial Teensy-3.1 port is largely the effort of Jakob Odersky. The initial Teensy-3.1 port is largely the effort of Jakob Odersky.
https://github.com/jodersky/nuttx/tree/teensy31-7.6 https://github.com/jodersky/nuttx/tree/teensy31-7.6 and
https://github.com/jodersky/px4-nuttx
Contents Contents
======== ========

View File

@ -37,7 +37,11 @@ include ${TOPDIR}/.config
include ${TOPDIR}/tools/Config.mk include ${TOPDIR}/tools/Config.mk
include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
LDSCRIPT = flash.ld ifeq ($(CONFIG_ARCH_CHIP_MK20DX256VLH7),y)
LDSCRIPT = mk20dx256vlh7.ld
else ifeq ($(CONFIG_ARCH_CHIP_MK20DX128VLH5),y)
LDSCRIPT = mk20dx128vlh5.ld
endif
ifeq ($(WINTOOL),y) ifeq ($(WINTOOL),y)
# Windows-native toolchains # Windows-native toolchains

View File

@ -0,0 +1,142 @@
/****************************************************************************
* configs/teensy-3.x/scripts/mk20dx128vlh5.ld
*
* Copyright (C) 2015 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 _MK20DX128VLH5 has 128Kb of FLASH beginning at address 0x0000:0000 and
* 16Kb of SRAM beginning at address 0x1c00:0000 (SRAM_L) and 0x2000:000
* bitband region (SRAM_U).
*
* NOTE: that the first part of the K20 FLASH region is reserved for
* interrupt vectflash and, following that, is a region from 0x0000:0400
* to 0x0000:040f that is reserved for the FLASH control fields (FCF).
*
* NOTE: The on-chip RAM is split evenly among SRAM_L and SRAM_U. The RAM is
* also implemented such that the SRAM_L and SRAM_U ranges form a
* contiguous block in the memory map.
*/
MEMORY
{
vectflash (rx) : ORIGIN = 0x00000000, LENGTH = 1K
cfmprotect (rx) : ORIGIN = 0x00000400, LENGTH = 16
progflash (rx) : ORIGIN = 0x00000800, LENGTH = 128K - 2K
datasram (rwx) : ORIGIN = 0x1fffe000, LENGTH = 16K
}
OUTPUT_ARCH(arm)
ENTRY(_stext)
EXTERN(__flashconfigbytes)
SECTIONS
{
.vectors : {
_svectors = ABSOLUTE(.);
*(.vectors)
_evectors = ABSOLUTE(.);
} > vectflash
.cfmprotect : {
KEEP(*(.cfmconfig))
} > cfmprotect
.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(.);
} > progflash
.init_section : {
_sinit = ABSOLUTE(.);
*(.init_array .init_array.*)
_einit = ABSOLUTE(.);
} > progflash
.ARM.extab : {
*(.ARM.extab*)
} > progflash
__exidx_start = ABSOLUTE(.);
.ARM.exidx : {
*(.ARM.exidx*)
} > progflash
__exidx_end = ABSOLUTE(.);
.data : {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
_edata = ABSOLUTE(.);
} > datasram AT > progflash
_eronly = LOADADDR(.data);
.ramfunc ALIGN(4): {
_sramfuncs = ABSOLUTE(.);
*(.ramfunc .ramfunc.*)
_eramfuncs = ABSOLUTE(.);
} > datasram AT > progflash
_framfuncs = LOADADDR(.ramfunc);
.bss : {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
_ebss = ABSOLUTE(.);
} > datasram
/* 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/teensy-3.x/scripts/flash.ld * configs/teensy-3.x/scripts/mk20dx256vlh7.ld
* *
* Copyright (C) 2015 Gregory Nutt. All rights reserved. * Copyright (C) 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>