Calypso Compal-E86: Updates for execution out of FLASH. From Craig Comstock
This commit is contained in:
parent
956d8e717d
commit
be0e926730
@ -1,7 +1,10 @@
|
|||||||
compal_e86
|
compal_e86
|
||||||
==========
|
==========
|
||||||
|
|
||||||
This directory contains the board support for compal e86 phones.
|
This directory contains the board support for compal e86 phones. This port
|
||||||
|
is tested on the following phone:
|
||||||
|
|
||||||
|
* motorola c139 (compal e86) with flash configuration
|
||||||
|
|
||||||
This port is based on patches contributed by Denis Carikli for both the
|
This port is based on patches contributed by Denis Carikli for both the
|
||||||
compal e99 and e88. At the time of initial check-in, the following phones
|
compal e99 and e88. At the time of initial check-in, the following phones
|
||||||
@ -36,8 +39,24 @@ the host system. Sercomm is the transport used by osmocom-bb that runs on top
|
|||||||
of serial. See http://bb.osmocom.org/trac/wiki/nuttx-bb/run for detailed
|
of serial. See http://bb.osmocom.org/trac/wiki/nuttx-bb/run for detailed
|
||||||
the usage of nuttx with sercomm.
|
the usage of nuttx with sercomm.
|
||||||
|
|
||||||
Loading NuttX
|
Running NuttX From Flash
|
||||||
=============
|
========================
|
||||||
|
|
||||||
|
Flash layout:
|
||||||
|
|
||||||
|
0x00000 - 0x02000 - original compal loader
|
||||||
|
0x02000 - 0x10000 - simple binary to jump to 0x10000 (jumper.e86loader.bin)
|
||||||
|
0x10000 - ??? - NuttX binary (nuttx.bin)
|
||||||
|
|
||||||
|
Using osmocon/osmoload, retrieve the compal loader, flash it and the
|
||||||
|
jumper.e86loader.bin as well as nuttx.bin.
|
||||||
|
|
||||||
|
The jumper app is a modified version of the menu app in osmocom-bb, branch
|
||||||
|
jolly/menu. The app disabled irqs (setup by compal loader?) and jumps to
|
||||||
|
0x10000. This app is submitted as a patch to osmocom-bb mailing list.
|
||||||
|
|
||||||
|
Loading NuttX (highram)
|
||||||
|
=======================
|
||||||
|
|
||||||
The osmocom-bb wiki describes how to load NuttX. See
|
The osmocom-bb wiki describes how to load NuttX. See
|
||||||
http://bb.osmocom.org/trac/wiki/nuttx-bb for detailed information.
|
http://bb.osmocom.org/trac/wiki/nuttx-bb for detailed information.
|
||||||
|
@ -37,7 +37,11 @@ include ${TOPDIR}/.config
|
|||||||
include ${TOPDIR}/tools/Config.mk
|
include ${TOPDIR}/tools/Config.mk
|
||||||
include ${TOPDIR}/arch/arm/src/arm/Toolchain.defs
|
include ${TOPDIR}/arch/arm/src/arm/Toolchain.defs
|
||||||
|
|
||||||
LDSCRIPT = highram.ld
|
ifeq ($(CONFIG_BOOT_RUNFROMFLASH),y)
|
||||||
|
LDSCRIPT = flash.ld
|
||||||
|
else
|
||||||
|
LDSCRIPT = highram.ld
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(WINTOOL),y)
|
ifeq ($(WINTOOL),y)
|
||||||
# Windows-native toolchains
|
# Windows-native toolchains
|
||||||
|
@ -42,8 +42,9 @@ CONFIG_RAW_BINARY=y
|
|||||||
# Debug Options
|
# Debug Options
|
||||||
#
|
#
|
||||||
# CONFIG_DEBUG is not set
|
# CONFIG_DEBUG is not set
|
||||||
CONFIG_ARCH_HAVE_STACKCHECK=y
|
|
||||||
# CONFIG_ARCH_HAVE_HEAPCHECK is not set
|
# CONFIG_ARCH_HAVE_HEAPCHECK is not set
|
||||||
|
CONFIG_ARCH_HAVE_STACKCHECK=y
|
||||||
|
# CONFIG_STACK_COLORATION is not set
|
||||||
# CONFIG_DEBUG_SYMBOLS is not set
|
# CONFIG_DEBUG_SYMBOLS is not set
|
||||||
CONFIG_ARCH_HAVE_CUSTOMOPT=y
|
CONFIG_ARCH_HAVE_CUSTOMOPT=y
|
||||||
# CONFIG_DEBUG_NOOPT is not set
|
# CONFIG_DEBUG_NOOPT is not set
|
||||||
@ -87,6 +88,7 @@ CONFIG_ARCH_CHIP_CALYPSO=y
|
|||||||
# CONFIG_ARCH_CHIP_SAMA5 is not set
|
# CONFIG_ARCH_CHIP_SAMA5 is not set
|
||||||
# CONFIG_ARCH_CHIP_SAMD is not set
|
# CONFIG_ARCH_CHIP_SAMD is not set
|
||||||
# CONFIG_ARCH_CHIP_SAM34 is not set
|
# CONFIG_ARCH_CHIP_SAM34 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_SAMV7 is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32 is not set
|
# CONFIG_ARCH_CHIP_STM32 is not set
|
||||||
# CONFIG_ARCH_CHIP_STR71X is not set
|
# CONFIG_ARCH_CHIP_STR71X is not set
|
||||||
CONFIG_ARCH_ARM7TDMI=y
|
CONFIG_ARCH_ARM7TDMI=y
|
||||||
@ -95,11 +97,13 @@ CONFIG_ARCH_ARM7TDMI=y
|
|||||||
# CONFIG_ARCH_CORTEXM0 is not set
|
# CONFIG_ARCH_CORTEXM0 is not set
|
||||||
# CONFIG_ARCH_CORTEXM3 is not set
|
# CONFIG_ARCH_CORTEXM3 is not set
|
||||||
# CONFIG_ARCH_CORTEXM4 is not set
|
# CONFIG_ARCH_CORTEXM4 is not set
|
||||||
|
# CONFIG_ARCH_CORTEXM7 is not set
|
||||||
# CONFIG_ARCH_CORTEXA5 is not set
|
# CONFIG_ARCH_CORTEXA5 is not set
|
||||||
# CONFIG_ARCH_CORTEXA8 is not set
|
# CONFIG_ARCH_CORTEXA8 is not set
|
||||||
CONFIG_ARCH_FAMILY="arm"
|
CONFIG_ARCH_FAMILY="arm"
|
||||||
CONFIG_ARCH_CHIP="calypso"
|
CONFIG_ARCH_CHIP="calypso"
|
||||||
# CONFIG_ARCH_HAVE_FPU is not set
|
# CONFIG_ARCH_HAVE_FPU is not set
|
||||||
|
# CONFIG_ARCH_HAVE_DPFPU is not set
|
||||||
CONFIG_ARCH_HAVE_LOWVECTORS=y
|
CONFIG_ARCH_HAVE_LOWVECTORS=y
|
||||||
# CONFIG_ARCH_LOWVECTORS is not set
|
# CONFIG_ARCH_LOWVECTORS is not set
|
||||||
|
|
||||||
@ -210,6 +214,7 @@ CONFIG_NSH_MMCSDMINOR=0
|
|||||||
#
|
#
|
||||||
# Board-Specific Options
|
# Board-Specific Options
|
||||||
#
|
#
|
||||||
|
# CONFIG_LIB_BOARDCTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RTOS Features
|
# RTOS Features
|
||||||
@ -328,11 +333,16 @@ CONFIG_SPI=y
|
|||||||
# CONFIG_SPI_OWNBUS is not set
|
# CONFIG_SPI_OWNBUS is not set
|
||||||
CONFIG_SPI_EXCHANGE=y
|
CONFIG_SPI_EXCHANGE=y
|
||||||
# CONFIG_SPI_CMDDATA is not set
|
# CONFIG_SPI_CMDDATA is not set
|
||||||
|
# CONFIG_SPI_CALLBACK is not set
|
||||||
# CONFIG_SPI_BITBANG is not set
|
# CONFIG_SPI_BITBANG is not set
|
||||||
# CONFIG_I2S is not set
|
# CONFIG_I2S is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Timer Driver Support
|
||||||
|
#
|
||||||
|
# CONFIG_TIMER is not set
|
||||||
# CONFIG_RTC is not set
|
# CONFIG_RTC is not set
|
||||||
# CONFIG_WATCHDOG is not set
|
# CONFIG_WATCHDOG is not set
|
||||||
# CONFIG_TIMER is not set
|
|
||||||
# CONFIG_ANALOG is not set
|
# CONFIG_ANALOG is not set
|
||||||
# CONFIG_AUDIO_DEVICES is not set
|
# CONFIG_AUDIO_DEVICES is not set
|
||||||
# CONFIG_VIDEO_DEVICES is not set
|
# CONFIG_VIDEO_DEVICES is not set
|
||||||
@ -346,7 +356,7 @@ CONFIG_SPI_EXCHANGE=y
|
|||||||
# CONFIG_PM is not set
|
# CONFIG_PM is not set
|
||||||
# CONFIG_POWER is not set
|
# CONFIG_POWER is not set
|
||||||
# CONFIG_SENSORS is not set
|
# CONFIG_SENSORS is not set
|
||||||
CONFIG_SERCOMM_CONSOLE=y
|
# CONFIG_SERCOMM_CONSOLE is not set
|
||||||
CONFIG_SERIAL=y
|
CONFIG_SERIAL=y
|
||||||
# CONFIG_DEV_LOWCONSOLE is not set
|
# CONFIG_DEV_LOWCONSOLE is not set
|
||||||
# CONFIG_16550_UART is not set
|
# CONFIG_16550_UART is not set
|
||||||
@ -395,6 +405,7 @@ CONFIG_OTHER_SERIAL_CONSOLE=y
|
|||||||
# System Logging
|
# System Logging
|
||||||
#
|
#
|
||||||
# CONFIG_RAMLOG is not set
|
# CONFIG_RAMLOG is not set
|
||||||
|
# CONFIG_SYSLOG_CONSOLE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Networking Support
|
# Networking Support
|
||||||
@ -493,6 +504,7 @@ CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
|
|||||||
# CONFIG_LIBC_PERROR_STDOUT is not set
|
# CONFIG_LIBC_PERROR_STDOUT is not set
|
||||||
CONFIG_ARCH_LOWPUTC=y
|
CONFIG_ARCH_LOWPUTC=y
|
||||||
# CONFIG_LIBC_LOCALTIME is not set
|
# CONFIG_LIBC_LOCALTIME is not set
|
||||||
|
# CONFIG_TIME_EXTENDED is not set
|
||||||
CONFIG_LIB_SENDFILE_BUFSIZE=512
|
CONFIG_LIB_SENDFILE_BUFSIZE=512
|
||||||
# CONFIG_ARCH_ROMGETC is not set
|
# CONFIG_ARCH_ROMGETC is not set
|
||||||
# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
|
# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
|
||||||
@ -551,10 +563,10 @@ CONFIG_EXAMPLES_NSH=y
|
|||||||
# CONFIG_EXAMPLES_NXTEXT is not set
|
# CONFIG_EXAMPLES_NXTEXT is not set
|
||||||
# CONFIG_EXAMPLES_OSTEST is not set
|
# CONFIG_EXAMPLES_OSTEST is not set
|
||||||
# CONFIG_EXAMPLES_PIPE is not set
|
# CONFIG_EXAMPLES_PIPE is not set
|
||||||
|
# CONFIG_EXAMPLES_PPPD is not set
|
||||||
# CONFIG_EXAMPLES_POSIXSPAWN is not set
|
# CONFIG_EXAMPLES_POSIXSPAWN is not set
|
||||||
# CONFIG_EXAMPLES_QENCODER is not set
|
# CONFIG_EXAMPLES_QENCODER is not set
|
||||||
# CONFIG_EXAMPLES_RGMP is not set
|
# CONFIG_EXAMPLES_RGMP is not set
|
||||||
# CONFIG_EXAMPLES_ROMFS is not set
|
|
||||||
# CONFIG_EXAMPLES_SENDMAIL is not set
|
# CONFIG_EXAMPLES_SENDMAIL is not set
|
||||||
# CONFIG_EXAMPLES_SERIALBLASTER is not set
|
# CONFIG_EXAMPLES_SERIALBLASTER is not set
|
||||||
# CONFIG_EXAMPLES_SERIALRX is not set
|
# CONFIG_EXAMPLES_SERIALRX is not set
|
||||||
@ -567,7 +579,6 @@ CONFIG_EXAMPLES_NSH=y
|
|||||||
# CONFIG_EXAMPLES_THTTPD is not set
|
# CONFIG_EXAMPLES_THTTPD is not set
|
||||||
# CONFIG_EXAMPLES_TIFF is not set
|
# CONFIG_EXAMPLES_TIFF is not set
|
||||||
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
|
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
|
||||||
# CONFIG_EXAMPLES_UDP is not set
|
|
||||||
# CONFIG_EXAMPLES_WEBSERVER is not set
|
# CONFIG_EXAMPLES_WEBSERVER is not set
|
||||||
# CONFIG_EXAMPLES_USBSERIAL is not set
|
# CONFIG_EXAMPLES_USBSERIAL is not set
|
||||||
# CONFIG_EXAMPLES_USBTERM is not set
|
# CONFIG_EXAMPLES_USBTERM is not set
|
||||||
@ -584,6 +595,7 @@ CONFIG_EXAMPLES_NSH=y
|
|||||||
#
|
#
|
||||||
# CONFIG_INTERPRETERS_FICL is not set
|
# CONFIG_INTERPRETERS_FICL is not set
|
||||||
# CONFIG_INTERPRETERS_PCODE is not set
|
# CONFIG_INTERPRETERS_PCODE is not set
|
||||||
|
# CONFIG_INTERPRETERS_MICROPYTHON is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Network Utilities
|
# Network Utilities
|
||||||
@ -593,15 +605,11 @@ CONFIG_EXAMPLES_NSH=y
|
|||||||
# Networking Utilities
|
# Networking Utilities
|
||||||
#
|
#
|
||||||
# CONFIG_NETUTILS_CODECS is not set
|
# CONFIG_NETUTILS_CODECS is not set
|
||||||
# CONFIG_NETUTILS_DHCPD is not set
|
|
||||||
# CONFIG_NETUTILS_FTPC is not set
|
# CONFIG_NETUTILS_FTPC is not set
|
||||||
# CONFIG_NETUTILS_FTPD is not set
|
|
||||||
# CONFIG_NETUTILS_JSON is not set
|
# CONFIG_NETUTILS_JSON is not set
|
||||||
# CONFIG_NETUTILS_SMTP is not set
|
# CONFIG_NETUTILS_SMTP is not set
|
||||||
# CONFIG_NETUTILS_TFTPC is not set
|
|
||||||
# CONFIG_NETUTILS_THTTPD is not set
|
# CONFIG_NETUTILS_THTTPD is not set
|
||||||
# CONFIG_NETUTILS_NETLIB is not set
|
# CONFIG_NETUTILS_PPPD is not set
|
||||||
# CONFIG_NETUTILS_WEBCLIENT is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# FreeModBus
|
# FreeModBus
|
||||||
@ -635,6 +643,7 @@ CONFIG_NSH_BUILTIN_APPS=y
|
|||||||
# CONFIG_NSH_DISABLE_CD is not set
|
# CONFIG_NSH_DISABLE_CD is not set
|
||||||
# CONFIG_NSH_DISABLE_CP is not set
|
# CONFIG_NSH_DISABLE_CP is not set
|
||||||
# CONFIG_NSH_DISABLE_CMP is not set
|
# CONFIG_NSH_DISABLE_CMP is not set
|
||||||
|
CONFIG_NSH_DISABLE_DATE=y
|
||||||
# CONFIG_NSH_DISABLE_DD is not set
|
# CONFIG_NSH_DISABLE_DD is not set
|
||||||
# CONFIG_NSH_DISABLE_DF is not set
|
# CONFIG_NSH_DISABLE_DF is not set
|
||||||
# CONFIG_NSH_DISABLE_DELROUTE is not set
|
# CONFIG_NSH_DISABLE_DELROUTE is not set
|
||||||
@ -655,6 +664,7 @@ CONFIG_NSH_BUILTIN_APPS=y
|
|||||||
# CONFIG_NSH_DISABLE_MKRD is not set
|
# CONFIG_NSH_DISABLE_MKRD is not set
|
||||||
# CONFIG_NSH_DISABLE_MH is not set
|
# CONFIG_NSH_DISABLE_MH is not set
|
||||||
# CONFIG_NSH_DISABLE_MOUNT is not set
|
# CONFIG_NSH_DISABLE_MOUNT is not set
|
||||||
|
# CONFIG_NSH_DISABLE_MV is not set
|
||||||
# CONFIG_NSH_DISABLE_MW is not set
|
# CONFIG_NSH_DISABLE_MW is not set
|
||||||
# CONFIG_NSH_DISABLE_PS is not set
|
# CONFIG_NSH_DISABLE_PS is not set
|
||||||
# CONFIG_NSH_DISABLE_PUT is not set
|
# CONFIG_NSH_DISABLE_PUT is not set
|
||||||
@ -705,119 +715,19 @@ CONFIG_NSH_CONSOLE=y
|
|||||||
#
|
#
|
||||||
# System Libraries and NSH Add-Ons
|
# System Libraries and NSH Add-Ons
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
|
||||||
# Custom Free Memory Command
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_FREE is not set
|
# CONFIG_SYSTEM_FREE is not set
|
||||||
|
|
||||||
#
|
|
||||||
# EMACS-like Command Line Editor
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_CLE is not set
|
# CONFIG_SYSTEM_CLE is not set
|
||||||
|
|
||||||
#
|
|
||||||
# CU Minimal Terminal
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_CUTERM is not set
|
# CONFIG_SYSTEM_CUTERM is not set
|
||||||
|
|
||||||
#
|
|
||||||
# FLASH Program Installation
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_INSTALL is not set
|
# CONFIG_SYSTEM_INSTALL is not set
|
||||||
|
|
||||||
#
|
|
||||||
# FLASH Erase-all Command
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Intel HEX to binary conversion
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_HEX2BIN is not set
|
# CONFIG_SYSTEM_HEX2BIN is not set
|
||||||
|
|
||||||
#
|
|
||||||
# I2C tool
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# INI File Parser
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_INIFILE is not set
|
# CONFIG_SYSTEM_INIFILE is not set
|
||||||
|
|
||||||
#
|
|
||||||
# NxPlayer media player library / command Line
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# RAM test
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_RAMTEST is not set
|
# CONFIG_SYSTEM_RAMTEST is not set
|
||||||
|
|
||||||
#
|
|
||||||
# readline()
|
|
||||||
#
|
|
||||||
CONFIG_SYSTEM_READLINE=y
|
CONFIG_SYSTEM_READLINE=y
|
||||||
CONFIG_READLINE_ECHO=y
|
CONFIG_READLINE_ECHO=y
|
||||||
|
|
||||||
#
|
|
||||||
# P-Code Support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# PHY Tool
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Power Off
|
|
||||||
#
|
|
||||||
CONFIG_SYSTEM_POWEROFF=y
|
CONFIG_SYSTEM_POWEROFF=y
|
||||||
|
|
||||||
#
|
|
||||||
# RAMTRON
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_RAMTRON is not set
|
# CONFIG_SYSTEM_RAMTRON is not set
|
||||||
|
|
||||||
#
|
|
||||||
# SD Card
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_SDCARD is not set
|
# CONFIG_SYSTEM_SDCARD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Sudoku
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_SUDOKU is not set
|
# CONFIG_SYSTEM_SUDOKU is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Sysinfo
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_SYSINFO is not set
|
# CONFIG_SYSTEM_SYSINFO is not set
|
||||||
|
|
||||||
#
|
|
||||||
# VI Work-Alike Editor
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_VI is not set
|
# CONFIG_SYSTEM_VI is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Stack Monitor
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB CDC/ACM Device Commands
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Composite Device Commands
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Mass Storage Device Commands
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Monitor
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Zmodem Commands
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_ZMODEM is not set
|
# CONFIG_SYSTEM_ZMODEM is not set
|
||||||
|
142
configs/compal_e86/scripts/flash.ld
Normal file
142
configs/compal_e86/scripts/flash.ld
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/*
|
||||||
|
* Linker script for flashed applications on the Compal E86
|
||||||
|
*
|
||||||
|
* This script creates a binary that can be linked at 0xFFFF, starting
|
||||||
|
* with the second flash page. This is what a phone application or
|
||||||
|
* pure layer1 device uses.
|
||||||
|
*
|
||||||
|
* XXX: interrupts?
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||||
|
OUTPUT_ARCH(arm)
|
||||||
|
ENTRY(_start)
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
LOADR (rx) : ORIGIN = 0x00000000, LENGTH = 0x10000
|
||||||
|
/* 4 MBytes of external flash memory (minus loader) */
|
||||||
|
FLASH (rx) : ORIGIN = 0x00010000, LENGTH = 0x3F0000
|
||||||
|
/* 256 kBytes of internal zero-waitstate sram */
|
||||||
|
IRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x040000
|
||||||
|
/* 256 kBytes of external slow sram */
|
||||||
|
ERAM (rw) : ORIGIN = 0x01000000, LENGTH = 0x040000
|
||||||
|
}
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
/* entrypoint */
|
||||||
|
.text.start : {
|
||||||
|
PROVIDE(_start = .);
|
||||||
|
KEEP(*(.text.start))
|
||||||
|
*(.text.start)
|
||||||
|
} > FLASH
|
||||||
|
|
||||||
|
/* exception vectors from 0x80001c to 0x800034 */
|
||||||
|
.text.exceptions 0x80001c : {
|
||||||
|
KEEP(*(.text.exceptions))
|
||||||
|
* (.text.exceptions)
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > IRAM AT> FLASH
|
||||||
|
PROVIDE(_exceptions = LOADADDR(.text.exceptions));
|
||||||
|
|
||||||
|
/* code */
|
||||||
|
.text : {
|
||||||
|
_stext = ABSOLUTE(.) ;
|
||||||
|
/* regular code */
|
||||||
|
*(.text*)
|
||||||
|
/* gcc voodoo */
|
||||||
|
*(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
|
||||||
|
_etext = ABSOLUTE(.) ;
|
||||||
|
} > FLASH
|
||||||
|
PROVIDE(_text_start = ADDR(.text));
|
||||||
|
PROVIDE(_text_end = ADDR(.text) + SIZEOF(.text));
|
||||||
|
|
||||||
|
/* constructor pointers */
|
||||||
|
.ctors : {
|
||||||
|
/* ctor count */
|
||||||
|
LONG(SIZEOF(.ctors) / 4 - 2)
|
||||||
|
/* ctor pointers */
|
||||||
|
KEEP(*(SORT(.ctors)))
|
||||||
|
/* end of list */
|
||||||
|
LONG(0)
|
||||||
|
} > FLASH
|
||||||
|
PROVIDE(_ctor_start = LOADADDR(.ctors));
|
||||||
|
PROVIDE(_ctor_end = LOADADDR(.ctors) + SIZEOF(.ctors));
|
||||||
|
|
||||||
|
/* destructor pointers */
|
||||||
|
.dtors : {
|
||||||
|
/* dtor count */
|
||||||
|
LONG(SIZEOF(.dtors) / 4 - 2)
|
||||||
|
/* dtor pointers */
|
||||||
|
KEEP(*(SORT(.dtors)))
|
||||||
|
/* end of list */
|
||||||
|
LONG(0)
|
||||||
|
} > FLASH
|
||||||
|
PROVIDE(_dtor_start = LOADADDR(.dtors));
|
||||||
|
PROVIDE(_dtor_end = LOADADDR(.dtors) + SIZEOF(.dtors));
|
||||||
|
|
||||||
|
/* read-only data */
|
||||||
|
.rodata : {
|
||||||
|
*(.rodata*)
|
||||||
|
_eronly = ABSOLUTE(.) ;
|
||||||
|
} > FLASH
|
||||||
|
PROVIDE(_rodata_start = ADDR(.rodata));
|
||||||
|
PROVIDE(_rodata_end = ADDR(.rodata) + SIZEOF(.rodata));
|
||||||
|
|
||||||
|
/* pic offset tables */
|
||||||
|
.got : {
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.got)
|
||||||
|
*(.got.plt) *(.igot.plt) *(.got) *(.igot)
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > FLASH
|
||||||
|
PROVIDE(_got_start = ADDR(.got));
|
||||||
|
PROVIDE(_got_end = ADDR(.got) + SIZEOF(.got));
|
||||||
|
|
||||||
|
/* reserved ram */
|
||||||
|
.compal.reservedram 0x800000 (NOLOAD) : {
|
||||||
|
. = 0xff;
|
||||||
|
} > IRAM
|
||||||
|
|
||||||
|
/* initialized data */
|
||||||
|
.data : AT (LOADADDR(.got) + SIZEOF(.got)) {
|
||||||
|
. = ALIGN(4);
|
||||||
|
_sdata = ABSOLUTE(.);
|
||||||
|
*(.data)
|
||||||
|
_edata = ABSOLUTE(.);
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > IRAM
|
||||||
|
PROVIDE(__data_start = LOADADDR(.data));
|
||||||
|
PROVIDE(__data_end = LOADADDR(.data) + SIZEOF(.data));
|
||||||
|
PROVIDE(_data_start = ADDR(.data));
|
||||||
|
PROVIDE(_data_end = ADDR(.data) + SIZEOF(.data));
|
||||||
|
|
||||||
|
/* ram code */
|
||||||
|
.ramtext : AT (LOADADDR(.data) + SIZEOF(.data)) {
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.ramtext)
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > IRAM
|
||||||
|
PROVIDE(__ramtext_start = LOADADDR(.ramtext));
|
||||||
|
PROVIDE(__ramtext_end = LOADADDR(.ramtext) + SIZEOF(.ramtext));
|
||||||
|
PROVIDE(_ramtext_start = ADDR(.ramtext));
|
||||||
|
PROVIDE(_ramtext_end = ADDR(.ramtext) + SIZEOF(.ramtext));
|
||||||
|
|
||||||
|
/* uninitialized data */
|
||||||
|
.bss (NOLOAD) : {
|
||||||
|
. = ALIGN(4);
|
||||||
|
_sbss = ABSOLUTE(.);
|
||||||
|
*(.bss)
|
||||||
|
_ebss = ABSOLUTE(.);
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > IRAM
|
||||||
|
PROVIDE(__bss_start = ADDR(.bss));
|
||||||
|
PROVIDE(__bss_end = ADDR(.bss) + SIZEOF(.bss));
|
||||||
|
PROVIDE(_bss_start = __bss_start);
|
||||||
|
PROVIDE(_bss_end = __bss_end);
|
||||||
|
|
||||||
|
/* end of image */
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
PROVIDE(end = .);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user