aef6f4ae09
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>
106 lines
3.1 KiB
Plaintext
106 lines
3.1 KiB
Plaintext
/****************************************************************************
|
|
* 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) }
|
|
}
|