summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-11-12 18:37:53 -0800
committerKeith Packard <keithp@keithp.com>2011-11-12 18:37:53 -0800
commitef7f86453d686a49882e8c1b88a59228c4c631a9 (patch)
treef8a406975e13cec661af02ea6e5356affe25c525
parent2bce71eba9f44b6fcf64e307c8174824c3a0fb57 (diff)
altos: Check pdata+xdata memory usage during build
The sdcc linker doesn't check the sum of pdata+xdata memory usage, it only ensures that xdata itself is small enough. This doesn't keep xdata below the end of usable ram on the cc1111 though (0xfe000). Fix up the check-stack program to also make sure all of xdata fits in available memory. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/product/Makefile.telebt2
-rw-r--r--src/product/Makefile.teledongle2
-rw-r--r--src/product/Makefile.telelaunch2
-rw-r--r--src/product/Makefile.telemetrum2
-rw-r--r--src/product/Makefile.telemini2
-rw-r--r--src/product/Makefile.telenano2
-rw-r--r--src/teleballoon-v1.1/Makefile2
-rw-r--r--src/teleterra-v0.2/Makefile5
-rw-r--r--src/tidongle/Makefile2
-rwxr-xr-xsrc/util/check-stack10
10 files changed, 17 insertions, 14 deletions
diff --git a/src/product/Makefile.telebt b/src/product/Makefile.telebt
index 8f7c7429..ea18ff18 100644
--- a/src/product/Makefile.telebt
+++ b/src/product/Makefile.telebt
@@ -81,7 +81,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/product/Makefile.teledongle b/src/product/Makefile.teledongle
index c1b422c0..cf33d1f1 100644
--- a/src/product/Makefile.teledongle
+++ b/src/product/Makefile.teledongle
@@ -81,7 +81,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/product/Makefile.telelaunch b/src/product/Makefile.telelaunch
index b40f61a2..97764517 100644
--- a/src/product/Makefile.telelaunch
+++ b/src/product/Makefile.telelaunch
@@ -84,7 +84,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/product/Makefile.telemetrum b/src/product/Makefile.telemetrum
index 40fc6bc2..52c723ca 100644
--- a/src/product/Makefile.telemetrum
+++ b/src/product/Makefile.telemetrum
@@ -94,7 +94,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/product/Makefile.telemini b/src/product/Makefile.telemini
index 9f90b01f..75beeae4 100644
--- a/src/product/Makefile.telemini
+++ b/src/product/Makefile.telemini
@@ -83,7 +83,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/product/Makefile.telenano b/src/product/Makefile.telenano
index eff3ea97..b30ca789 100644
--- a/src/product/Makefile.telenano
+++ b/src/product/Makefile.telenano
@@ -82,7 +82,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/teleballoon-v1.1/Makefile b/src/teleballoon-v1.1/Makefile
index 89471cf4..fb88787b 100644
--- a/src/teleballoon-v1.1/Makefile
+++ b/src/teleballoon-v1.1/Makefile
@@ -103,7 +103,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/teleterra-v0.2/Makefile b/src/teleterra-v0.2/Makefile
index 583805f6..0747bfbf 100644
--- a/src/teleterra-v0.2/Makefile
+++ b/src/teleterra-v0.2/Makefile
@@ -25,9 +25,7 @@ CORE_SRC = \
ao_mutex.c \
ao_panic.c \
ao_report.c \
- ao_rssi.c \
ao_sqrt.c \
- ao_state.c \
ao_stdio.c \
ao_storage.c \
ao_task.c
@@ -38,7 +36,6 @@ CC1111_SRC = \
ao_button.c \
ao_dbg.c \
ao_dma.c \
- ao_led.c \
ao_packet.c \
ao_packet_master.c \
ao_radio.c \
@@ -90,7 +87,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/tidongle/Makefile b/src/tidongle/Makefile
index 58b9d735..698d612c 100644
--- a/src/tidongle/Makefile
+++ b/src/tidongle/Makefile
@@ -76,7 +76,7 @@ all: ../$(PROG)
../$(PROG): $(REL) Makefile
$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
- $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM)
+ $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@
ao_product.h: ao-make-product.5c ../Version
$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
diff --git a/src/util/check-stack b/src/util/check-stack
index 1e8044e0..3b639d70 100755
--- a/src/util/check-stack
+++ b/src/util/check-stack
@@ -4,10 +4,16 @@ MEM=$2
HEADER_STACK=`awk '/#define AO_STACK_START/ {print strtonum($3)}' $HEADER`
MEM_STACK=`awk '/Stack starts at/ {print strtonum ($4)}' $MEM`
+XRAM_END=`awk '/EXTERNAL RAM/ { print strtonum ($4)}' $MEM`
if [ "$HEADER_STACK" -lt "$MEM_STACK" ]; then
echo $MEM_STACK | awk '{ printf ("Set AO_STACK_START to at least 0x%x\n", $1); }'
exit 1
-else
- exit 0
fi
+if [ "$XRAM_END" -ge 65024 ]; then
+ echo $XRAM_END | awk '{ printf ("Uses too much XRAM, 0x%x >= 0x%x\n", $1, 65024); }'
+ exit 1
+fi
+
+exit 0
+