aboutsummaryrefslogtreecommitdiff
path: root/src/platforms
diff options
context:
space:
mode:
Diffstat (limited to 'src/platforms')
-rw-r--r--src/platforms/f4discovery/platform.h14
-rw-r--r--src/platforms/launchpad-icdi/platform.c15
-rw-r--r--src/platforms/launchpad-icdi/platform.h15
-rw-r--r--src/platforms/libftdi/platform.c19
-rw-r--r--src/platforms/libftdi/platform.h3
-rw-r--r--src/platforms/native/platform.c2
-rw-r--r--src/platforms/native/platform.h16
-rw-r--r--src/platforms/stlink/Makefile.inc1
-rw-r--r--src/platforms/stlink/platform.c2
-rw-r--r--src/platforms/stlink/platform.h14
-rw-r--r--src/platforms/stm32/timing.c1
-rw-r--r--src/platforms/swlink/Makefile.inc1
-rw-r--r--src/platforms/swlink/platform.c2
-rw-r--r--src/platforms/swlink/platform.h14
14 files changed, 34 insertions, 85 deletions
diff --git a/src/platforms/f4discovery/platform.h b/src/platforms/f4discovery/platform.h
index 300a3c1..16bd169 100644
--- a/src/platforms/f4discovery/platform.h
+++ b/src/platforms/f4discovery/platform.h
@@ -24,9 +24,7 @@
#ifndef __PLATFORM_H
#define __PLATFORM_H
-#include "gdb_packet.h"
#include "gpio.h"
-#include "morse.h"
#include "timing.h"
#include "version.h"
@@ -142,8 +140,6 @@
#define DEBUG(...)
-extern jmp_buf fatal_error_jmpbuf;
-
#define gpio_set_val(port, pin, val) do { \
if(val) \
gpio_set((port), (pin)); \
@@ -155,16 +151,6 @@ extern jmp_buf fatal_error_jmpbuf;
#define SET_IDLE_STATE(state) {gpio_set_val(LED_PORT, LED_IDLE_RUN, state);}
#define SET_ERROR_STATE(state) {gpio_set_val(LED_PORT, LED_ERROR, state);}
-#define PLATFORM_SET_FATAL_ERROR_RECOVERY() {setjmp(fatal_error_jmpbuf);}
-#define PLATFORM_FATAL_ERROR(error) { \
- if(running_status) gdb_putpacketz("X1D"); \
- else gdb_putpacketz("EFF"); \
- running_status = 0; \
- target_list_free(); \
- morse("TARGET LOST.", 1); \
- longjmp(fatal_error_jmpbuf, (error)); \
-}
-
static inline int platform_hwversion(void)
{
return 0;
diff --git a/src/platforms/launchpad-icdi/platform.c b/src/platforms/launchpad-icdi/platform.c
index e689f0c..ff67fa0 100644
--- a/src/platforms/launchpad-icdi/platform.c
+++ b/src/platforms/launchpad-icdi/platform.c
@@ -33,7 +33,6 @@
extern void trace_tick(void);
-jmp_buf fatal_error_jmpbuf;
uint8_t running_status;
volatile uint32_t timeout_counter;
@@ -86,10 +85,20 @@ platform_init(void)
cdcacm_init();
}
+void platform_timeout_set(uint32_t ms)
+{
+ timeout_counter = ms / 10;
+}
+
+bool platform_timeout_is_expired(void)
+{
+ return timeout_counter == 0;
+}
+
void platform_delay(uint32_t delay)
{
- timeout_counter = delay * 10;
- while(timeout_counter);
+ platform_timeout_set(delay);
+ while (platform_timeout_is_expired());
}
const char *platform_target_voltage(void)
diff --git a/src/platforms/launchpad-icdi/platform.h b/src/platforms/launchpad-icdi/platform.h
index dc2efcf..52b963e 100644
--- a/src/platforms/launchpad-icdi/platform.h
+++ b/src/platforms/launchpad-icdi/platform.h
@@ -17,10 +17,6 @@
#ifndef __PLATFORM_H
#define __PLATFORM_H
-#include "gdb_packet.h"
-
-#include <setjmp.h>
-
#include <libopencm3/lm4f/gpio.h>
#include <libopencm3/usb/usbd.h>
@@ -31,7 +27,6 @@
#define DFU_IDENT "Black Magic Firmware Upgrade (Launchpad)"
#define DFU_IFACE_STRING "lolwut"
-extern jmp_buf fatal_error_jmpbuf;
extern uint8_t running_status;
extern volatile uint32_t timeout_counter;
@@ -108,16 +103,6 @@ extern usbd_driver lm4f_usb_driver;
#define SET_IDLE_STATE(state) {}
#define SET_ERROR_STATE(state) SET_IDLE_STATE(state)
-#define PLATFORM_SET_FATAL_ERROR_RECOVERY() {setjmp(fatal_error_jmpbuf);}
-#define PLATFORM_FATAL_ERROR(error) { \
- if( running_status ) gdb_putpacketz("X1D"); \
- else gdb_putpacketz("EFF"); \
- running_status = 0; \
- target_list_free(); \
- morse("TARGET LOST.", 1); \
- longjmp(fatal_error_jmpbuf, (error)); \
-}
-
#define PLATFORM_HAS_TRACESWO
inline static void gpio_set_val(uint32_t port, uint8_t pin, uint8_t val) {
diff --git a/src/platforms/libftdi/platform.c b/src/platforms/libftdi/platform.c
index 0f16263..37f876b 100644
--- a/src/platforms/libftdi/platform.c
+++ b/src/platforms/libftdi/platform.c
@@ -22,6 +22,7 @@
#include "version.h"
#include <assert.h>
+#include <sys/time.h>
struct ftdi_context *ftdic;
@@ -264,3 +265,21 @@ void platform_delay(uint32_t delay)
usleep(delay * 100000);
}
+static uint32_t timeout_time;
+static uint32_t time_ms(void)
+{
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
+}
+
+void platform_timeout_set(uint32_t ms)
+{
+ timeout_time = time_ms() + ms;
+}
+
+bool platform_timeout_is_expired(void)
+{
+ return time_ms() > timeout_time;
+}
+
diff --git a/src/platforms/libftdi/platform.h b/src/platforms/libftdi/platform.h
index 135b2e3..8611674 100644
--- a/src/platforms/libftdi/platform.h
+++ b/src/platforms/libftdi/platform.h
@@ -36,9 +36,6 @@
#define SET_IDLE_STATE(state)
#define SET_ERROR_STATE(state)
-#define PLATFORM_FATAL_ERROR(error) abort()
-#define PLATFORM_SET_FATAL_ERROR_RECOVERY()
-
extern struct ftdi_context *ftdic;
void platform_buffer_flush(void);
diff --git a/src/platforms/native/platform.c b/src/platforms/native/platform.c
index ac54b4b..babb498 100644
--- a/src/platforms/native/platform.c
+++ b/src/platforms/native/platform.c
@@ -35,8 +35,6 @@
#include <libopencm3/usb/usbd.h>
#include <libopencm3/stm32/f1/adc.h>
-jmp_buf fatal_error_jmpbuf;
-
static void adc_init(void);
static void setup_vbus_irq(void);
diff --git a/src/platforms/native/platform.h b/src/platforms/native/platform.h
index ae9bcef..6958585 100644
--- a/src/platforms/native/platform.h
+++ b/src/platforms/native/platform.h
@@ -24,13 +24,9 @@
#ifndef __PLATFORM_H
#define __PLATFORM_H
-#include "gdb_packet.h"
#include "gpio.h"
-#include "morse.h"
#include "timing.h"
-#include <setjmp.h>
-
#define PLATFORM_HAS_TRACESWO
#define PLATFORM_HAS_POWER_SWITCH
#define BOARD_IDENT "Black Magic Probe"
@@ -147,22 +143,10 @@
#define DEBUG(...)
-extern jmp_buf fatal_error_jmpbuf;
-
#define SET_RUN_STATE(state) {running_status = (state);}
#define SET_IDLE_STATE(state) {gpio_set_val(LED_PORT, LED_IDLE_RUN, state);}
#define SET_ERROR_STATE(state) {gpio_set_val(LED_PORT, LED_ERROR, state);}
-#define PLATFORM_SET_FATAL_ERROR_RECOVERY() {setjmp(fatal_error_jmpbuf);}
-#define PLATFORM_FATAL_ERROR(error) do { \
- if(running_status) gdb_putpacketz("X1D"); \
- else gdb_putpacketz("EFF"); \
- running_status = 0; \
- target_list_free(); \
- morse("TARGET LOST.", 1); \
- longjmp(fatal_error_jmpbuf, (error)); \
-} while (0)
-
/* Use newlib provided integer only stdio functions */
#define sscanf siscanf
#define sprintf siprintf
diff --git a/src/platforms/stlink/Makefile.inc b/src/platforms/stlink/Makefile.inc
index dd1ab41..fdee700 100644
--- a/src/platforms/stlink/Makefile.inc
+++ b/src/platforms/stlink/Makefile.inc
@@ -2,6 +2,7 @@ CROSS_COMPILE ?= arm-none-eabi-
CC = $(CROSS_COMPILE)gcc
OBJCOPY = $(CROSS_COMPILE)objcopy
+OPT_FLAGS = -Os
CFLAGS += -mcpu=cortex-m3 -mthumb \
-DSTM32F1 -DDISCOVERY_STLINK -I../libopencm3/include \
-I platforms/stm32
diff --git a/src/platforms/stlink/platform.c b/src/platforms/stlink/platform.c
index fb10faa..dd501a4 100644
--- a/src/platforms/stlink/platform.c
+++ b/src/platforms/stlink/platform.c
@@ -36,8 +36,6 @@
uint8_t running_status;
volatile uint32_t timeout_counter;
-jmp_buf fatal_error_jmpbuf;
-
uint16_t led_idle_run;
/* Pins PC[14:13] are used to detect hardware revision. Read
* 11 for STLink V1 e.g. on VL Discovery, tag as hwversion 0
diff --git a/src/platforms/stlink/platform.h b/src/platforms/stlink/platform.h
index c304db2..498e512 100644
--- a/src/platforms/stlink/platform.h
+++ b/src/platforms/stlink/platform.h
@@ -24,7 +24,6 @@
#ifndef __PLATFORM_H
#define __PLATFORM_H
-#include "gdb_packet.h"
#include "gpio.h"
#include "timing.h"
#include "version.h"
@@ -33,8 +32,6 @@
#include <libopencm3/stm32/f1/memorymap.h>
#include <libopencm3/usb/usbd.h>
-#include <setjmp.h>
-
#define BOARD_IDENT "Black Magic Probe (STLINK), (Firmware " FIRMWARE_VERSION ")"
#define BOARD_IDENT_DFU "Black Magic (Upgrade) for STLink/Discovery, (Firmware " FIRMWARE_VERSION ")"
#define BOARD_IDENT_UPD "Black Magic (DFU Upgrade) for STLink/Discovery, (Firmware " FIRMWARE_VERSION ")"
@@ -131,23 +128,12 @@
#define DEBUG(...)
-extern jmp_buf fatal_error_jmpbuf;
-
extern uint16_t led_idle_run;
#define LED_IDLE_RUN led_idle_run
#define SET_RUN_STATE(state) {running_status = (state);}
#define SET_IDLE_STATE(state) {gpio_set_val(LED_PORT, led_idle_run, state);}
#define SET_ERROR_STATE(x)
-#define PLATFORM_SET_FATAL_ERROR_RECOVERY() {setjmp(fatal_error_jmpbuf);}
-#define PLATFORM_FATAL_ERROR(error) do { \
- if(running_status) gdb_putpacketz("X1D"); \
- else gdb_putpacketz("EFF"); \
- running_status = 0; \
- target_list_free(); \
- longjmp(fatal_error_jmpbuf, (error)); \
-} while (0)
-
/* Use newlib provided integer only stdio functions */
#define sscanf siscanf
#define sprintf siprintf
diff --git a/src/platforms/stm32/timing.c b/src/platforms/stm32/timing.c
index cac22ca..55a217a 100644
--- a/src/platforms/stm32/timing.c
+++ b/src/platforms/stm32/timing.c
@@ -17,6 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "general.h"
+#include "morse.h"
#include <libopencm3/cm3/systick.h>
#include <libopencm3/cm3/scb.h>
diff --git a/src/platforms/swlink/Makefile.inc b/src/platforms/swlink/Makefile.inc
index 8899471..62f90bb 100644
--- a/src/platforms/swlink/Makefile.inc
+++ b/src/platforms/swlink/Makefile.inc
@@ -2,6 +2,7 @@ CROSS_COMPILE ?= arm-none-eabi-
CC = $(CROSS_COMPILE)gcc
OBJCOPY = $(CROSS_COMPILE)objcopy
+OPT_FLAGS = -Os
CFLAGS += -mcpu=cortex-m3 -mthumb \
-DSTM32F1 -DDISCOVERY_SWLINK -I../libopencm3/include \
-I platforms/stm32
diff --git a/src/platforms/swlink/platform.c b/src/platforms/swlink/platform.c
index cbdae0c..02cde19 100644
--- a/src/platforms/swlink/platform.c
+++ b/src/platforms/swlink/platform.c
@@ -33,8 +33,6 @@
#include <libopencm3/usb/usbd.h>
#include <libopencm3/stm32/f1/adc.h>
-jmp_buf fatal_error_jmpbuf;
-
void platform_init(void)
{
uint32_t data;
diff --git a/src/platforms/swlink/platform.h b/src/platforms/swlink/platform.h
index ffa35cf..e31f543 100644
--- a/src/platforms/swlink/platform.h
+++ b/src/platforms/swlink/platform.h
@@ -24,13 +24,10 @@
#ifndef __PLATFORM_H
#define __PLATFORM_H
-#include "gdb_packet.h"
#include "gpio.h"
#include "timing.h"
#include "version.h"
-#include <setjmp.h>
-
#define BOARD_IDENT "Black Magic Probe (SWLINK), (Firmware " FIRMWARE_VERSION ")"
#define BOARD_IDENT_DFU "Black Magic (Upgrade), STM8S Discovery, (Firmware " FIRMWARE_VERSION ")"
#define BOARD_IDENT_UPD "Black Magic (DFU Upgrade), STM8S Discovery, (Firmware " FIRMWARE_VERSION ")"
@@ -126,21 +123,10 @@
#define DEBUG(...)
-extern jmp_buf fatal_error_jmpbuf;
-
#define SET_RUN_STATE(state) {running_status = (state);}
#define SET_IDLE_STATE(state) {gpio_set_val(LED_PORT, LED_IDLE_RUN, state);}
#define SET_ERROR_STATE(x)
-#define PLATFORM_SET_FATAL_ERROR_RECOVERY() {setjmp(fatal_error_jmpbuf);}
-#define PLATFORM_FATAL_ERROR(error) { \
- if(running_status) gdb_putpacketz("X1D"); \
- else gdb_putpacketz("EFF"); \
- running_status = 0; \
- target_list_free(); \
- longjmp(fatal_error_jmpbuf, (error)); \
-}
-
/* Use newlib provided integer only stdio functions */
#define sscanf siscanf
#define sprintf siprintf