make update

This commit is contained in:
hathach 2018-08-07 13:25:51 +07:00
parent 83ec6bff4a
commit 2847b319f2
3 changed files with 186 additions and 174 deletions

View File

@ -147,12 +147,13 @@ C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/hal/nrf_nvmc.c
ifneq ($(IS_NRF52840),) ifneq ($(IS_NRF52840),)
# src
C_SOURCE_FILES += $(SRC_PATH)/usb/tusb_descriptors.c C_SOURCE_FILES += $(SRC_PATH)/usb/tusb_descriptors.c
C_SOURCE_FILES += $(SRC_PATH)/usb/usb.c C_SOURCE_FILES += $(SRC_PATH)/usb/usb.c
C_SOURCE_FILES += $(SRC_PATH)/usb/msc_uf2.c C_SOURCE_FILES += $(SRC_PATH)/usb/msc_uf2.c
C_SOURCE_FILES += $(SRC_PATH)/usb/uf2/ghostfat.c C_SOURCE_FILES += $(SRC_PATH)/usb/uf2/ghostfat.c
# nrfx
C_SOURCE_FILES += $(NRFX_PATH)/mdk/system_nrf52840.c C_SOURCE_FILES += $(NRFX_PATH)/mdk/system_nrf52840.c
# Tinyusb stack # Tinyusb stack
@ -221,7 +222,7 @@ IPATH += $(SDK_PATH)/drivers_nrf/delay
#IPATH += $(SDK_PATH)/drivers_nrf/uart #IPATH += $(SDK_PATH)/drivers_nrf/uart
#IPATH += $(SDK_PATH)/drivers_nrf/power #IPATH += $(SDK_PATH)/drivers_nrf/power
#IPATH += $(SDK_PATH)/drivers_nrf/usbd #IPATH += $(SDK_PATH)/drivers_nrf/usbd
IPATH += $(SDK_PATH)/device #IPATH += $(SDK_PATH)/device
# Softdevice # Softdevice
IPATH += $(SD_PATH)/headers IPATH += $(SD_PATH)/headers
@ -280,7 +281,7 @@ endif
# keep every function in separate section. This will allow linker to dump unused functions # keep every function in separate section. This will allow linker to dump unused functions
LDFLAGS += -Xlinker -Map=$(BUILD)/$(OUTPUT_FILENAME).map LDFLAGS += -Xlinker -Map=$(BUILD)/$(OUTPUT_FILENAME).map
LDFLAGS += -mthumb -mabi=aapcs -L$(SRC_PATH)/ -T$(LD_FILE) LDFLAGS += -mthumb -mabi=aapcs -L$(SRC_PATH)/linker -T$(LD_FILE)
LDFLAGS += -mcpu=cortex-m4 LDFLAGS += -mcpu=cortex-m4
LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
@ -295,9 +296,7 @@ LDFLAGS += --specs=nano.specs -lc -lnosys
# #
#****************************************************************************** #******************************************************************************
ASMFLAGS += -x assembler-with-cpp ASMFLAGS += -x assembler-with-cpp
ASMFLAGS += -DNRF52840_XXAA
ASMFLAGS += -D__HEAP_SIZE=0 ASMFLAGS += -D__HEAP_SIZE=0
ASMFLAGS += -DS140
ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET
ASMFLAGS += -DBLE_STACK_SUPPORT_REQD ASMFLAGS += -DBLE_STACK_SUPPORT_REQD
ASMFLAGS += -DBSP_DEFINES_ONLY ASMFLAGS += -DBSP_DEFINES_ONLY
@ -305,6 +304,19 @@ ASMFLAGS += -DSWI_DISABLE0
ASMFLAGS += -DSOFTDEVICE_PRESENT ASMFLAGS += -DSOFTDEVICE_PRESENT
ASMFLAGS += -DFLOAT_ABI_HARD ASMFLAGS += -DFLOAT_ABI_HARD
ifneq ($(IS_NRF52840),)
ASMFLAGS += -DNRF52840_XXAA
ASMFLAGS += -DS140
else
ASMFLAGS += -DNRF52
ASMFLAGS += -DS132
endif
C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES)) C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES))

View File

@ -1,168 +1,168 @@
/* Linker script for Nordic Semiconductor nRF52 devices /* Linker script for Nordic Semiconductor nRF devices
* *
* Version: Sourcery G++ 4.5-1 * Version: Sourcery G++ 4.5-1
* Support: https://support.codesourcery.com/GNUToolchain/ * Support: https://support.codesourcery.com/GNUToolchain/
* *
* Copyright (c) 2007, 2008, 2009, 2010 CodeSourcery, Inc. * Copyright (c) 2007, 2008, 2009, 2010 CodeSourcery, Inc.
* *
* The authors hereby grant permission to use, copy, modify, distribute, * The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided * and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this * that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement, * notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses. * license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors * Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that * and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where * the new terms are clearly indicated on the first page of each file where
* they apply. * they apply.
*/ */
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
/* Linker script to place sections and symbol values. Should be used together /* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM. * with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code: * It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler * Reset_Handler : Entry of reset handler
* *
* It defines following symbols, which code can use without definition: * It defines following symbols, which code can use without definition:
* __exidx_start * __exidx_start
* __exidx_end * __exidx_end
* __etext * __etext
* __data_start__ * __data_start__
* __preinit_array_start * __preinit_array_start
* __preinit_array_end * __preinit_array_end
* __init_array_start * __init_array_start
* __init_array_end * __init_array_end
* __fini_array_start * __fini_array_start
* __fini_array_end * __fini_array_end
* __data_end__ * __data_end__
* __bss_start__ * __bss_start__
* __bss_end__ * __bss_end__
* __end__ * __end__
* end * end
* __HeapBase * __HeapBase
* __HeapLimit * __HeapLimit
* __StackLimit * __StackLimit
* __StackTop * __StackTop
* __stack * __stack
*/ */
ENTRY(Reset_Handler) ENTRY(Reset_Handler)
SECTIONS SECTIONS
{ {
.text : .text :
{ {
KEEP(*(.isr_vector)) KEEP(*(.isr_vector))
*(.text*) *(.text*)
KEEP(*(.init)) KEEP(*(.init))
KEEP(*(.fini)) KEEP(*(.fini))
/* .ctors */ /* .ctors */
*crtbegin.o(.ctors) *crtbegin.o(.ctors)
*crtbegin?.o(.ctors) *crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*)) *(SORT(.ctors.*))
*(.ctors) *(.ctors)
/* .dtors */ /* .dtors */
*crtbegin.o(.dtors) *crtbegin.o(.dtors)
*crtbegin?.o(.dtors) *crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*)) *(SORT(.dtors.*))
*(.dtors) *(.dtors)
*(.rodata*) *(.rodata*)
KEEP(*(.eh_frame*)) KEEP(*(.eh_frame*))
} > FLASH } > FLASH
.ARM.extab : .ARM.extab :
{ {
*(.ARM.extab* .gnu.linkonce.armextab.*) *(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH } > FLASH
__exidx_start = .; __exidx_start = .;
.ARM.exidx : .ARM.exidx :
{ {
*(.ARM.exidx* .gnu.linkonce.armexidx.*) *(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH } > FLASH
__exidx_end = .; __exidx_end = .;
__etext = .; __etext = .;
.data : AT (__etext) .data : AT (__etext)
{ {
__data_start__ = .; __data_start__ = .;
*(vtable) *(vtable)
*(.data*) *(.data*)
. = ALIGN(4); . = ALIGN(4);
/* preinit data */ /* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .); PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array)) KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .); PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4); . = ALIGN(4);
/* init data */ /* init data */
PROVIDE_HIDDEN (__init_array_start = .); PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*))) KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array)) KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .); PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4); . = ALIGN(4);
/* finit data */ /* finit data */
PROVIDE_HIDDEN (__fini_array_start = .); PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*))) KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array)) KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .); PROVIDE_HIDDEN (__fini_array_end = .);
KEEP(*(.jcr*)) KEEP(*(.jcr*))
. = ALIGN(4); . = ALIGN(4);
/* All data end */ /* All data end */
__data_end__ = .; __data_end__ = .;
} > RAM } > RAM
.bss : .bss :
{ {
. = ALIGN(4); . = ALIGN(4);
__bss_start__ = .; __bss_start__ = .;
*(.bss*) *(.bss*)
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
__bss_end__ = .; __bss_end__ = .;
} > RAM } > RAM
.heap (COPY): .heap (COPY):
{ {
__HeapBase = .; __HeapBase = .;
__end__ = .; __end__ = .;
PROVIDE(end = .); PROVIDE(end = .);
KEEP(*(.heap*)) KEEP(*(.heap*))
__HeapLimit = .; __HeapLimit = .;
} > RAM } > RAM
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
* values to stack symbols later */ * values to stack symbols later */
.stack_dummy (COPY): .stack_dummy (COPY):
{ {
KEEP(*(.stack*)) KEEP(*(.stack*))
} > RAM } > RAM
/* Set stack top to end of RAM, and stack limit move down by /* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */ * size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM); __StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy); __StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop); PROVIDE(__stack = __StackTop);
/* Check if data + heap + stack exceeds RAM limit */ /* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
/* Check if text sections + data exceeds FLASH limit */ /* Check if text sections + data exceeds FLASH limit */
DataInitFlashUsed = __bss_start__ - __data_start__; DataInitFlashUsed = __bss_start__ - __data_start__;
CodeFlashUsed = __etext - ORIGIN(FLASH); CodeFlashUsed = __etext - ORIGIN(FLASH);
TotalFlashUsed = CodeFlashUsed + DataInitFlashUsed; TotalFlashUsed = CodeFlashUsed + DataInitFlashUsed;
ASSERT(TotalFlashUsed <= LENGTH(FLASH), "region FLASH overflowed with .data and user data") ASSERT(TotalFlashUsed <= LENGTH(FLASH), "region FLASH overflowed with .data and user data")
} }

View File

@ -77,4 +77,4 @@ SECTIONS
/* other placements follow here... */ /* other placements follow here... */
} }
INCLUDE "nrf52_common.ld" INCLUDE "nrf_common.ld"