aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--libmaple/libmaple.h33
-rw-r--r--libmaple/nvic.c7
-rw-r--r--libmaple/nvic.h1
-rw-r--r--libmaple/usb/usb_config.h3
-rw-r--r--libmaple/util.c6
-rw-r--r--support/ld/flash.ld4
-rw-r--r--support/ld/jtag.ld8
-rw-r--r--support/ld/ram.ld6
-rw-r--r--support/make/build-targets.mk5
-rw-r--r--support/openocd/flash.cfg6
-rw-r--r--wirish/wirish.c2
12 files changed, 48 insertions, 35 deletions
diff --git a/Makefile b/Makefile
index 28cd4f3..de6c625 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
# Valid BOARDs: maple, maple_native, ...
BOARD ?= maple
-MEMORY_TARGET ?= flash
+MEMORY_TARGET ?= ram
# USB ID for DFU upload
VENDOR_ID := 1EAF
diff --git a/libmaple/libmaple.h b/libmaple/libmaple.h
index 8e072c3..437566f 100644
--- a/libmaple/libmaple.h
+++ b/libmaple/libmaple.h
@@ -34,7 +34,7 @@
#include "libmaple_types.h"
// General configuration
-#define MAPLE_DEBUG 0
+#define MAPLE_DEBUG 1
// MCU-specific configuration
#ifdef MCU_STM32F103RB // eg, LeafLabs Maple
@@ -48,16 +48,21 @@
// Number of timer devices ports, definately used
#define NR_TIMERS 4
+ // Number of USART ports
+ #define NR_USART 3
+
// Has an FSMC bus?
- #define NR_FSMC 1
+ #define NR_FSMC 0
// Has an FSMC bus?
- #define NR_DAC_PINS 2
+ #define NR_DAC_PINS 0
// USB Identifier numbers
// Descriptor strings must be modified by hand in usb/descriptors.c for now
#define VCOM_ID_VENDOR 0x1EAF
#define VCOM_ID_PRODUCT 0x0004
+ #define USB_DISC_BANK GPIOC_BASE
+ #define USB_DISC_PIN 12
#define USB_CONFIG_MAX_POWER (100 >> 1)
#define RESET_DELAY (100)
@@ -86,36 +91,26 @@
#define BITBAND_PERI_BASE 0x42000000
#endif
-#ifdef MCU_STM32F103ZE // eg, LeafLabs Maple Native
-
- // Number of GPIO ports (GPIOA, GPIOB, etc), definately used
+#ifdef MCU_STM32F103ZE
+ // eg, LeafLabs Maple Native
#define NR_GPIO_PORTS 7
-
- // Total number of GPIO pins
#define NR_GPIO_PINS 63
-
- // Number of timer devices ports, definately used
#define NR_TIMERS 8
-
- // Has an FSMC bus?
+ #define NR_USART 3
#define NR_FSMC 1
-
- // Has an FSMC bus?
#define NR_DAC_PINS 2
- // USB Identifier numbers
- // Descriptor strings must be modified by hand in usb/descriptors.c for now
#define VCOM_ID_VENDOR 0x1EAF
#define VCOM_ID_PRODUCT 0x0004
+ #define USB_DISC_BANK GPIOB_BASE
+ #define USB_DISC_PIN 8
#define USB_CONFIG_MAX_POWER (100 >> 1)
#define RESET_DELAY (100)
- // Where to put usercode (based on space reserved for bootloader)
#define USER_ADDR_ROM 0x08005000
#define USER_ADDR_RAM 0x20000C00
#define STACK_TOP 0x20000800
- // Debug port settings (from ASSERT)
#define ERROR_LED_PORT GPIOC_BASE
#define ERROR_LED_PIN 15
#define ERROR_USART_NUM 1
@@ -123,12 +118,10 @@
#define ERROR_TX_PIN 10
#define ERROR_TX_PORT GPIOA_BASE
- // Just in case, most boards have at least some memory
#ifndef RAMSIZE
# define RAMSIZE (caddr_t)0x50000
#endif
- // Bitbanded Memory sections
#define BITBAND_SRAM_REF 0x20000000
#define BITBAND_SRAM_BASE 0x22000000
#define BITBAND_PERI_REF 0x40000000
diff --git a/libmaple/nvic.c b/libmaple/nvic.c
index 7aef26d..60e7eac 100644
--- a/libmaple/nvic.c
+++ b/libmaple/nvic.c
@@ -65,7 +65,12 @@ void nvic_irq_disable(uint32 n) {
}
}
-
+void nvic_irq_disable_all(void) {
+ short n;
+ for(n=0; n<65; n++) {
+ nvic_irq_disable(n);
+ }
+}
/**
* @brief Initialice the NVIC at address addr
diff --git a/libmaple/nvic.h b/libmaple/nvic.h
index a24086a..4e425c5 100644
--- a/libmaple/nvic.h
+++ b/libmaple/nvic.h
@@ -78,6 +78,7 @@ enum {
void nvic_init(void);
void nvic_irq_enable(uint32 device);
void nvic_irq_disable(uint32 device);
+void nvic_irq_disable_all(void);
#ifdef __cplusplus
}
diff --git a/libmaple/usb/usb_config.h b/libmaple/usb/usb_config.h
index 27294dc..ba05d42 100644
--- a/libmaple/usb/usb_config.h
+++ b/libmaple/usb/usb_config.h
@@ -40,9 +40,6 @@
CNTR_ESOFM | \
CNTR_RESETM )
-#define USB_DISC_BANK GPIOB_BASE
-#define USB_DISC_PIN 8
-
#define F_SUSPEND_ENABLED 1
#endif
diff --git a/libmaple/util.c b/libmaple/util.c
index 61beab8..a747948 100644
--- a/libmaple/util.c
+++ b/libmaple/util.c
@@ -44,7 +44,7 @@ void _fail(const char* file, int line, const char* exp) {
uint32 i = 0;
/* Turn off interrupts */
- nvic_disable_interrupts();
+ nvic_irq_disable_all();
/* Turn off timers */
timer_disable_all();
@@ -73,8 +73,8 @@ void _fail(const char* file, int line, const char* exp) {
gpio_set_mode(ERROR_LED_PORT, ERROR_LED_PIN, GPIO_MODE_OUTPUT_PP);
/* Turn the USB interrupt back on so the bootloader keeps on functioning */
- nvic_enable_interrupt(NVIC_INT_USBHP);
- nvic_enable_interrupt(NVIC_INT_USBLP);
+ nvic_irq_enable(NVIC_INT_USBHP);
+ nvic_irq_enable(NVIC_INT_USBLP);
/* Error fade */
while (1) {
diff --git a/support/ld/flash.ld b/support/ld/flash.ld
index 7e1e453..d05aa6c 100644
--- a/support/ld/flash.ld
+++ b/support/ld/flash.ld
@@ -25,8 +25,12 @@
/* Define memory spaces. */
MEMORY
{
+ ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K
+ rom (rx) : ORIGIN = 0x08005000, LENGTH = 108K
+/* native
ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K
rom (rx) : ORIGIN = 0x08005000, LENGTH = 500K
+*/
}
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
diff --git a/support/ld/jtag.ld b/support/ld/jtag.ld
index 890f18a..2ba3ce6 100644
--- a/support/ld/jtag.ld
+++ b/support/ld/jtag.ld
@@ -8,8 +8,12 @@
/* Define memory spaces. */
MEMORY
{
- ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
- rom (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+ ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K
+ rom (rx) : ORIGIN = 0x08005000, LENGTH = 108K
+/* native
+ ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K
+ rom (rx) : ORIGIN = 0x08005000, LENGTH = 500K
+*/
}
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
diff --git a/support/ld/ram.ld b/support/ld/ram.ld
index 168c1da..b9dd4ee 100644
--- a/support/ld/ram.ld
+++ b/support/ld/ram.ld
@@ -25,8 +25,12 @@
/* Define memory spaces. */
MEMORY
{
+ ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K
+ rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K
+/* native
ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K
- rom (rx) : ORIGIN = 0x08005000, LENGTH = 512K
+ rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K
+*/
}
diff --git a/support/make/build-targets.mk b/support/make/build-targets.mk
index 083976a..448b1ee 100644
--- a/support/make/build-targets.mk
+++ b/support/make/build-targets.mk
@@ -24,8 +24,9 @@ MSG_INFO:
@echo "================================================================================"
@echo ""
@echo " Build info:"
- @echo " BOARD:" $(BOARD)
- @echo " MEMORY_TARGET:" $(MEMORY_TARGET)
+ @echo " BOARD: " $(BOARD)
+ @echo " MCU: " $(MCU)
+ @echo " MEMORY_TARGET: " $(MEMORY_TARGET)
@echo ""
@echo " See 'make help' for all possible targets"
@echo ""
diff --git a/support/openocd/flash.cfg b/support/openocd/flash.cfg
index 25fe23f..fcd9561 100644
--- a/support/openocd/flash.cfg
+++ b/support/openocd/flash.cfg
@@ -62,6 +62,8 @@ jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 \
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
+$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 0x5000 -work-area-backup 0
+# TODO: native
$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 0x10000 -work-area-backup 0
flash bank stm32x 0x08000000 0x00020000 0 0 $_TARGETNAME
@@ -70,7 +72,9 @@ proc flash_chip {} {
echo "Halting..."
halt
echo "Erasing..."
- flash erase_address 0x08000000 0x80000
+ flash erase_address 0x08000000 0x20000
+ # TODO: native
+ #flash erase_address 0x08000000 0x80000
echo "Flashing image..."
flash write_bank 0 build/maple.bin 0
echo "Verifying image..."
diff --git a/wirish/wirish.c b/wirish/wirish.c
index 41f5db4..9f3b19e 100644
--- a/wirish/wirish.c
+++ b/wirish/wirish.c
@@ -48,7 +48,7 @@ void init(void) {
flash_enable_prefetch();
flash_set_latency(FLASH_WAIT_STATE_2);
- #if HAS_FSMC
+ #if NR_FSMC > 0
fsmc_native_sram_init();
#endif