altos: Check pdata+xdata memory usage during build
authorKeith Packard <keithp@keithp.com>
Sun, 13 Nov 2011 02:37:53 +0000 (18:37 -0800)
committerKeith Packard <keithp@keithp.com>
Sun, 13 Nov 2011 02:37:53 +0000 (18:37 -0800)
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>
src/product/Makefile.telebt
src/product/Makefile.teledongle
src/product/Makefile.telelaunch
src/product/Makefile.telemetrum
src/product/Makefile.telemini
src/product/Makefile.telenano
src/teleballoon-v1.1/Makefile
src/teleterra-v0.2/Makefile
src/tidongle/Makefile
src/util/check-stack

index 8f7c74296e8042646457bbdfd7d1ea556ad2b339..ea18ff1853aeacd63d9bf098531ab05ab451e62b 100644 (file)
@@ -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) > $@
index c1b422c06633e6275329188d633912921bb926df..cf33d1f1757ff188744fe297f44543b2ba6701aa 100644 (file)
@@ -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) > $@
index b40f61a24c00718dd69fdd8dd89fde9252879a20..97764517cf828857fb5790ca8cf433e249053c18 100644 (file)
@@ -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) > $@
index 40fc6bc257efcd16c2ec6d0ec4f4ade89ed6a094..52c723cabe27fe36ec99a6d384c6dbc41b0a09bb 100644 (file)
@@ -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) > $@
index 9f90b01f84a2226cb0296b17d2c199dc7dd9be94..75beeae480492381320b264dbd2bd89e04f244df 100644 (file)
@@ -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) > $@
index eff3ea970c6ca0909057f5906b9b7e1fcdd28385..b30ca78970ace6658c0c784e44e58ad8d3b18639 100644 (file)
@@ -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) > $@
index 89471cf4f91aba3abe2aa11df6f1ded267c073da..fb88787b94097a3b523f8fc1284363da2181d014 100644 (file)
@@ -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) > $@
index 583805f6f821c2fdd72fdb1aa7141232de73b3cb..0747bfbf7a79982af9edffdc5b36b4734619645c 100644 (file)
@@ -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) > $@
index 58b9d7350117fd7ac9b3b69f4cb850b9397dfaae..698d612c799591b2132ee2e9f5d0ca4fe878acd0 100644 (file)
@@ -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) > $@
index 1e8044e057534f88cbf5c31bb024ef6b0b56aac6..3b639d700eca8db38ba8faaf14f4871f2e82c7c8 100755 (executable)
@@ -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
+