summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-05-18 03:52:14 -0700
committerKeith Packard <keithp@keithp.com>2013-05-18 03:52:14 -0700
commitcbe5eee76faf386eefe69539935ab318944ac452 (patch)
tree42865330728db52ea559560b78783128c46735fc /src
parent3587bfd248e115bb1abb28f71b263575b4e8e367 (diff)
altos/lpc: Stick USB control structure in USB memory
No reason to have that in regular ram, and it means we've got space for large enough stacks now Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/lpc/altos.ld11
-rw-r--r--src/lpc/ao_arch.h2
-rw-r--r--src/lpc/ao_usb_lpc.c1
3 files changed, 10 insertions, 4 deletions
diff --git a/src/lpc/altos.ld b/src/lpc/altos.ld
index bcfba1ea..2778797a 100644
--- a/src/lpc/altos.ld
+++ b/src/lpc/altos.ld
@@ -17,8 +17,9 @@
MEMORY {
rom (rx) : ORIGIN = 0x00000000, LENGTH = 32K
- ram (!w) : ORIGIN = 0x10000000, LENGTH = 4K - 512
- stack (!w) : ORIGIN = 0x10000000 + 4K - 512, LENGTH = 512
+ ram (!w) : ORIGIN = 0x10000000, LENGTH = 4K - 128
+ usb (!x) : ORIGIN = 0x20004000 + 2K - 256, LENGTH = 256
+ stack (!w) : ORIGIN = 0x10000000 + 4K - 128, LENGTH = 128
}
INCLUDE registers.ld
@@ -63,9 +64,13 @@ SECTIONS {
*(COMMON)
__bss_end__ = .;
} >ram
+ PROVIDE(end = .);
+
+ .usb : {
+ *(.usb)
+ } > usb
PROVIDE(__stack__ = ORIGIN(stack) + LENGTH(stack));
- PROVIDE(end = .);
}
ENTRY(start);
diff --git a/src/lpc/ao_arch.h b/src/lpc/ao_arch.h
index 92405649..9dbebf4a 100644
--- a/src/lpc/ao_arch.h
+++ b/src/lpc/ao_arch.h
@@ -24,7 +24,7 @@
* LPC11U14 definitions and code fragments for AltOS
*/
-#define AO_STACK_SIZE 192
+#define AO_STACK_SIZE 320
#define AO_LED_TYPE uint16_t
diff --git a/src/lpc/ao_usb_lpc.c b/src/lpc/ao_usb_lpc.c
index 0f881720..cd896724 100644
--- a/src/lpc/ao_usb_lpc.c
+++ b/src/lpc/ao_usb_lpc.c
@@ -81,6 +81,7 @@ static uint8_t ao_usb_tx_count;
static uint8_t ao_usb_rx_buffer[AO_USB_OUT_SIZE];
static uint8_t ao_usb_rx_count, ao_usb_rx_pos;
+__attribute__((section(".usb")))
static struct lpc_usb_endpoint lpc_usb_endpoint __attribute((aligned(256)));
/* Marks when we don't need to send an IN packet.