toolchain/ghs: add ghs link script for mps2-an500 platform

Signed-off-by: yanghuatao <yanghuatao@xiaomi.com>
This commit is contained in:
yanghuatao 2024-03-01 10:55:19 +08:00 committed by Xiang Xiao
parent 2a8c023357
commit c43c91816d
3 changed files with 126 additions and 1 deletions

View File

@ -133,6 +133,21 @@ else ifeq ($(CONFIG_ARM_TOOLCHAIN_ARMCLANG),y)
LDFLAGS += --cpu=Cortex-M3
endif
else ifeq ($(CONFIG_ARM_TOOLCHAIN_GHS),y)
MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mknulldeps.sh
undefine PREPROCESS
define PREPROCESS
$(ECHO_BEGIN)"CPP: $1->$2 "
$(Q) $(CPP) $(CPPFLAGS) $($(strip $1)_CPPFLAGS) -filetype.cpp $1 -o $2
$(ECHO_END)
endef
undefine ARCHIVE
define ARCHIVE
$(AR) $2 -archive -o $1
endef
endif
ifeq ($(CONFIG_ARMV7M_STACKCHECK),y)

View File

@ -22,7 +22,19 @@ include $(TOPDIR)/.config
include $(TOPDIR)/tools/Config.mk
include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
LDSCRIPT = flash.ld
ifeq ($(CONFIG_ARM_TOOLCHAIN_GHS),y)
define POSTBUILD
$(GMEMFILE) nuttx -o nuttx.bin
endef
LDSCRIPT = ghs-flash.ld
else
define POSTBUILD
$(OBJCOPY) -O binary nuttx nuttx.bin
endef
LDSCRIPT = flash.ld
endif
ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)

View File

@ -0,0 +1,98 @@
/****************************************************************************
* boards/arm/mps/mps2-an500/scripts/ghs-flash.ld
*
* 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.
*
****************************************************************************/
MEMORY
{
flash (rwx) : ORIGIN = 0x00000000, LENGTH = 4M
}
SECTIONS
{
.text ALIGN(4) : {
_stext = ABSOLUTE(.);
*(.vectors)
*(.text)
"*(.text.*)"
*(.fixup)
*(.gnu.warning)
*(.rodata)
*(.glue_7)
*(.glue_7t)
*(.got)
*(.gcc_except_table)
_etext = ABSOLUTE(.);
} > flash
.syscall : > .
.init_section ALIGN(4) : {
_sinit = ABSOLUTE(.);
*(.init_array)
*(.ctors)
_einit = ABSOLUTE(.);
} > flash
.ARM.extab ALIGN(4) : {
"*(.ARM.extab*)"
} > flash
.ARM.exidx ALIGN(4) : {
__exidx_start = ABSOLUTE(.);
"*(.ARM.exidx*)"
__exidx_end = ABSOLUTE(.);
} > flash
.tdata ALIGN(4) : {
_stdata = ABSOLUTE(.);
*(.tdata)
"*(.tdata.*)"
_etdata = ABSOLUTE(.);
} > flash
.tbss : {
_stbss = ABSOLUTE(.);
*(.tbss)
*(.tcommon)
_etbss = ABSOLUTE(.);
} > flash
_eronly = ENDADDR(.tbss);
.ram_vectors : {
*(.ram_vectors)
} > flash
.data ALIGN(4) : {
_sdata = ABSOLUTE(.);
*(.data)
"*(.data.*)"
. = ALIGN(4);
_edata = ABSOLUTE(.);
} > flash
.bss ALIGN(4) : {
_sbss = ABSOLUTE(.);
*(.bss)
"*(.bss.*)"
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
} > flash
}