The QuickFeather board added as an initial target.
These featrues are minimally implemented:
* Clock Configuration -- All clocking registers are defined and
configuration is used to setup the HSO, M4 Core, and M4 Perif
clocks. Additionally some clock debugging is stubbed for
bringing out clock paths to IO pins.
* UART -- The lowputc as well as the serial driver is implemnted
for the single UART device. Currently the configuration is
hard coded, but uses the proper interfaces to later fill in.
* SysTick -- The system tick timer is implemented and clocking
properly. Tickless mode is not yet implemented.
* Interrupts -- The interrupt system is implemented and verified
using the UART and SysTick systems.
* GPIO -- GPIO and IOMUX systems are defined and implemented.
This is verified using the UART as well as the Arch LED
system. The GPIO interupt system is stubbed out but not
implemented.
* Arch LEDS -- The blue LED as part of the RGB LED is configured
and attached to the Arch LED system. This indicates the device
coming online as well as when a hardfault is triggered.
Applications and Testing:
* There is a nsh configuration implemented that includes debug
features as well as the ostest, getprime, and mem test.
All of these have been run and verified.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
105 lines
3.1 KiB
Text
105 lines
3.1 KiB
Text
/****************************************************************************
|
|
* boards/arm/eoss3/quickfeather/scripts/ld.script
|
|
*
|
|
* 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.
|
|
****************************************************************************/
|
|
|
|
/* There are complications here that I don't fully understand. It looks like
|
|
* the memory region 0x0000_0000 to 0x0000_8000 is ROM/Flash but is mirrored
|
|
* up to 0x2000_0000 so we need to keep the sram region outside of the
|
|
* mirrored code or we will run into issues.
|
|
*/
|
|
|
|
MEMORY
|
|
{
|
|
/* flash (rx) : ORIGIN = 0x00000000, LENGTH = 2M */
|
|
/* sram (rwx) : ORIGIN = 0x20000000, LENGTH = 512K */
|
|
flash (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000
|
|
sram (rwx) : ORIGIN = 0x20027000, LENGTH = 512K - 0x00040000
|
|
}
|
|
|
|
OUTPUT_ARCH(arm)
|
|
ENTRY(_stext)
|
|
EXTERN(_vectors)
|
|
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(.);
|
|
} > flash
|
|
|
|
.init_section : ALIGN(4) {
|
|
_sinit = ABSOLUTE(.);
|
|
KEEP(*(.init_array .init_array.*))
|
|
_einit = ABSOLUTE(.);
|
|
} > flash
|
|
|
|
.ARM.extab : ALIGN(4) {
|
|
*(.ARM.extab*)
|
|
} > flash
|
|
|
|
.ARM.exidx : ALIGN(4) {
|
|
__exidx_start = ABSOLUTE(.);
|
|
*(.ARM.exidx*)
|
|
__exidx_end = ABSOLUTE(.);
|
|
} > flash
|
|
|
|
_eronly = ABSOLUTE(.);
|
|
|
|
.data : ALIGN(4) {
|
|
_sdata = ABSOLUTE(.);
|
|
*(.data .data.*)
|
|
*(.gnu.linkonce.d.*)
|
|
CONSTRUCTORS
|
|
. = ALIGN(4);
|
|
_edata = ABSOLUTE(.);
|
|
} > sram AT > flash
|
|
|
|
.bss : ALIGN(4) {
|
|
_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) }
|
|
}
|