summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-08-27 01:32:49 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-08-27 01:32:49 +0000
commit64922cdbb4ea85a49a37a57a2c1f073dd7d6e8b8 (patch)
tree07ece747dfd708429a93802d099177450264e0e5
parent63876ad1bf29960514f14a8075963def0f73bd4b (diff)
downloadnuttx-64922cdbb4ea85a49a37a57a2c1f073dd7d6e8b8.tar.gz
nuttx-64922cdbb4ea85a49a37a57a2c1f073dd7d6e8b8.tar.bz2
nuttx-64922cdbb4ea85a49a37a57a2c1f073dd7d6e8b8.zip
Creating 1st pass locked region build
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2888 42af7a65-404d-4744-a932-0658087f49c3
-rwxr-xr-xnuttx/configs/ea3131/README.txt10
-rwxr-xr-xnuttx/configs/ea3131/locked/Makefile54
-rwxr-xr-xnuttx/configs/ea3131/locked/mklocked.sh137
3 files changed, 201 insertions, 0 deletions
diff --git a/nuttx/configs/ea3131/README.txt b/nuttx/configs/ea3131/README.txt
index 6b66e74b7..391d8c9f6 100755
--- a/nuttx/configs/ea3131/README.txt
+++ b/nuttx/configs/ea3131/README.txt
@@ -391,6 +391,16 @@ selected as follow:
Where <subdir> is one of the following:
+ locked
+ This is not a configuration. When on-demand page is enabled
+ then we must do a two pass link: The first pass creates an
+ intermediate object that has all of the code that must be
+ placed in the locked memory partition. This is logic that
+ must be locked in memory at all times.
+
+ The directory contains the logic necessary to do the platform
+ specific first pass link for the EA313x.
+
nsh:
Configures the NuttShell (nsh) located at examples/nsh. The
Configuration enables only the serial NSH interface.
diff --git a/nuttx/configs/ea3131/locked/Makefile b/nuttx/configs/ea3131/locked/Makefile
new file mode 100755
index 000000000..52815a0dd
--- /dev/null
+++ b/nuttx/configs/ea3131/locked/Makefile
@@ -0,0 +1,54 @@
+############################################################################
+# configs/ea3131/locked/Makefile
+#
+# Copyright (C) 2010 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+-include $(TOPDIR)/Make.defs
+
+all: liblocked.r
+
+ld-locked.script:
+ ./mklocked.sh "$(TOPDIR)"
+
+liblocked.r: ld-locked.script $(OBJS)
+ @LD -o $@ --start-group $(LDLIBS) --end-group -u os_start $(LIBGCC)
+
+.depend:
+
+depend: .depend
+
+clean:
+ @rm -f liblocked.r *~ .*.swp
+
+distclean: clean
+ @rm -f ld-locked.script
diff --git a/nuttx/configs/ea3131/locked/mklocked.sh b/nuttx/configs/ea3131/locked/mklocked.sh
new file mode 100755
index 000000000..188ca4796
--- /dev/null
+++ b/nuttx/configs/ea3131/locked/mklocked.sh
@@ -0,0 +1,137 @@
+#!/bin/sh
+###########################################################################
+# configs/ea3131/locked/mklocked.sh
+#
+# Copyright (C) 2010 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+#set -x
+
+############################################################################
+# Arguments
+############################################################################
+
+USAGE="$0 <nuttx-dir>"
+
+TOPDIR="$1"
+CONFIG="$TOPDIR/.config"
+if [ -z "$TOPDIR" ]; then
+ echo "Missing Argument"
+ echo $USAGE
+ exit 1
+fi
+if [ ! -d "$TOPDIR" ]; then
+ echo "NuttX directory does not exist: $TOPDIR"
+ echo $USAGE
+ exit 1
+fi
+if [ ! -f "$CONFIG" ]; then
+ echo "Configuration file not found: $CONFIG"
+ exit 1
+fi
+
+############################################################################
+# Functions
+############################################################################
+
+function checkconfig () {
+ CONFIGLINE=`cat "$CONFIG" | grep "$1="`
+ if [ "X${CONFIGLINE}" = "X${1}=y" ]; then
+ echo "y"
+ else
+ echo "n"
+ fi
+}
+
+############################################################################
+# Interrupt Handlers
+############################################################################
+#
+# All interrupt handlers must be forced to lie in the locked
+# .text region
+#
+# These are the vector entry points (only one is really needed
+# since they are all in the same file). These should drag in all
+# of the vector dispatching logic.
+#
+
+rm -f ld-locked.script
+echo "EXTERN(up_vectorswi)" >>ld-locked.script
+echo "EXTERN(up_vectordata)" >>ld-locked.script
+echo "EXTERN(up_vectorprefetch)" >>ld-locked.script
+echo "EXTERN(up_vectorundefinsn)" >>ld-locked.script
+echo "EXTERN(up_vectorfiq)" >>ld-locked.script
+echo "EXTERN(up_vectorirq)" >>ld-locked.script
+
+#
+# These are the initialization entry points of all device drivers
+# that handle interrupts. We really want to include as little as
+# possible -- ideally just the interrupt handler itself, but that
+# is not usually possible.
+#
+# Of course, this list must be extended as interrupt handlers are
+# added.
+
+echo "EXTERN(up_timerinit)" >>ld-locked.script
+
+answer=$(checkconfig CONFIG_LPC313X_UART)
+if [ $answer = y ]; then
+ echo "EXTERN(up_earlyserialinit)" >>ld-locked.script
+fi
+
+# up_i2cinitialize -- Not conditioned on anything
+
+answer=$(checkconfig CONFIG_USBDEV)
+if [ $answer = y ]; then
+ echo "EXTERN(up_usbinitialize)" >>ld-locked.script
+fi
+
+############################################################################
+# Idle Loop
+############################################################################
+#
+# The IDLE loop must be forced to lie in the locked .text region
+# NOTE that most of the IDLE loop is is os_start.c, but we don't
+# we want to handle that differently so that it does not draw in
+# a lot of things that we do not need.
+
+echo "EXTERN(up_idle)" >>ld-locked.script
+
+############################################################################
+# PG Fill Worker Thread
+############################################################################
+#
+# All of the page fill worker thread must be in the locked .text
+# region.
+
+echo "EXTERN(pg_worker)" >>ld-locked.script
+