diff --git a/firmware/chibios/os/ports/IAR/ARMCMx/STM32F0xx/cmparams.h b/firmware/chibios/os/ports/IAR/ARMCMx/STM32F0xx/cmparams.h
new file mode 100644
index 0000000000..a4df125018
--- /dev/null
+++ b/firmware/chibios/os/ports/IAR/ARMCMx/STM32F0xx/cmparams.h
@@ -0,0 +1,69 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
+ 2011,2012,2013 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+ ---
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes ChibiOS/RT, without being obliged to provide
+ the source code for any proprietary components. See the file exception.txt
+ for full details of how and when the exception can be applied.
+*/
+
+/**
+ * @file IAR/ARMCMx/STM32F1xx/cmparams.h
+ * @brief ARM Cortex-M3 parameters for the STM32F1xx.
+ *
+ * @defgroup IAR_ARMCMx_STM32F1xx STM32F1xx Specific Parameters
+ * @ingroup IAR_ARMCMx_SPECIFIC
+ * @details This file contains the Cortex-M3 specific parameters for the
+ * STM32F1xx platform.
+ * @{
+ */
+
+#ifndef _CMPARAMS_H_
+#define _CMPARAMS_H_
+
+/**
+ * @brief Cortex core model.
+ */
+#define CORTEX_MODEL CORTEX_M3
+
+/**
+ * @brief Systick unit presence.
+ */
+#define CORTEX_HAS_ST TRUE
+
+/**
+ * @brief Memory Protection unit presence.
+ */
+#define CORTEX_HAS_MPU FALSE
+
+/**
+ * @brief Floating Point unit presence.
+ */
+#define CORTEX_HAS_FPU FALSE
+
+/**
+ * @brief Number of bits in priority masks.
+ */
+#define CORTEX_PRIORITY_BITS 4
+
+#endif /* _CMPARAMS_H_ */
+
+/** @} */
diff --git a/firmware/chibios/os/ports/IAR/ARMCMx/STM32F0xx/vectors.s b/firmware/chibios/os/ports/IAR/ARMCMx/STM32F0xx/vectors.s
new file mode 100644
index 0000000000..6f765b2cb9
--- /dev/null
+++ b/firmware/chibios/os/ports/IAR/ARMCMx/STM32F0xx/vectors.s
@@ -0,0 +1,317 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
+ 2011,2012,2013 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+ ---
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes ChibiOS/RT, without being obliged to provide
+ the source code for any proprietary components. See the file exception.txt
+ for full details of how and when the exception can be applied.
+*/
+
+#if !defined(STM32F10X_LD) && !defined(STM32F10X_LD_VL) && \
+ !defined(STM32F10X_MD) && !defined(STM32F10X_MD_VL) && \
+ !defined(STM32F10X_HD) && !defined(STM32F10X_XL) && \
+ !defined(STM32F10X_CL)
+#define _FROM_ASM_
+#include "board.h"
+#endif
+
+ MODULE ?vectors
+
+ AAPCS INTERWORK, VFP_COMPATIBLE, RWPI_COMPATIBLE
+ PRESERVE8
+
+ SECTION IRQSTACK:DATA:NOROOT(3)
+ SECTION .intvec:CODE:NOROOT(3)
+
+ EXTERN __iar_program_start
+ PUBLIC __vector_table
+
+ DATA
+
+__vector_table:
+ DCD SFE(IRQSTACK)
+ DCD __iar_program_start
+ DCD NMIVector
+ DCD HardFaultVector
+ DCD MemManageVector
+ DCD BusFaultVector
+ DCD UsageFaultVector
+ DCD Vector1C
+ DCD Vector20
+ DCD Vector24
+ DCD Vector28
+ DCD SVCallVector
+ DCD DebugMonitorVector
+ DCD Vector34
+ DCD PendSVVector
+ DCD SysTickVector
+ DCD Vector40
+ DCD Vector44
+ DCD Vector48
+ DCD Vector4C
+ DCD Vector50
+ DCD Vector54
+ DCD Vector58
+ DCD Vector5C
+ DCD Vector60
+ DCD Vector64
+ DCD Vector68
+ DCD Vector6C
+ DCD Vector70
+ DCD Vector74
+ DCD Vector78
+ DCD Vector7C
+ DCD Vector80
+ DCD Vector84
+ DCD Vector88
+ DCD Vector8C
+ DCD Vector90
+ DCD Vector94
+ DCD Vector98
+ DCD Vector9C
+ DCD VectorA0
+ DCD VectorA4
+ DCD VectorA8
+ DCD VectorAC
+ DCD VectorB0
+ DCD VectorB4
+ DCD VectorB8
+ DCD VectorBC
+ DCD VectorC0
+ DCD VectorC4
+ DCD VectorC8
+ DCD VectorCC
+ DCD VectorD0
+ DCD VectorD4
+ DCD VectorD8
+ DCD VectorDC
+ DCD VectorE0
+ DCD VectorE4
+ DCD VectorE8
+#if defined(STM32F10X_MD_VL) || defined(STM32F10X_HD) || \
+ defined(STM32F10X_XL) || defined(STM32F10X_CL)
+ DCD VectorEC
+ DCD VectorF0
+ DCD VectorF4
+#endif
+#if defined(STM32F10X_HD) || defined(STM32F10X_XL) || defined(STM32F10X_CL)
+ DCD VectorF8
+ DCD VectorFC
+ DCD Vector100
+ DCD Vector104
+ DCD Vector108
+ DCD Vector10C
+ DCD Vector110
+ DCD Vector114
+ DCD Vector118
+ DCD Vector11C
+ DCD Vector120
+ DCD Vector124
+ DCD Vector128
+ DCD Vector12C
+#endif
+#if defined(STM32F10X_CL)
+ DCD Vector130
+ DCD Vector134
+ DCD Vector138
+ DCD Vector13C
+ DCD Vector140
+ DCD Vector144
+ DCD Vector148
+ DCD Vector14C
+#endif
+
+/*
+ * Default interrupt handlers.
+ */
+ PUBWEAK NMIVector
+ PUBWEAK HardFaultVector
+ PUBWEAK MemManageVector
+ PUBWEAK BusFaultVector
+ PUBWEAK UsageFaultVector
+ PUBWEAK Vector1C
+ PUBWEAK Vector20
+ PUBWEAK Vector24
+ PUBWEAK Vector28
+ PUBWEAK SVCallVector
+ PUBWEAK DebugMonitorVector
+ PUBWEAK Vector34
+ PUBWEAK PendSVVector
+ PUBWEAK SysTickVector
+ PUBWEAK Vector40
+ PUBWEAK Vector44
+ PUBWEAK Vector48
+ PUBWEAK Vector4C
+ PUBWEAK Vector50
+ PUBWEAK Vector54
+ PUBWEAK Vector58
+ PUBWEAK Vector5C
+ PUBWEAK Vector60
+ PUBWEAK Vector64
+ PUBWEAK Vector68
+ PUBWEAK Vector6C
+ PUBWEAK Vector70
+ PUBWEAK Vector74
+ PUBWEAK Vector78
+ PUBWEAK Vector7C
+ PUBWEAK Vector80
+ PUBWEAK Vector84
+ PUBWEAK Vector88
+ PUBWEAK Vector8C
+ PUBWEAK Vector90
+ PUBWEAK Vector94
+ PUBWEAK Vector98
+ PUBWEAK Vector9C
+ PUBWEAK VectorA0
+ PUBWEAK VectorA4
+ PUBWEAK VectorA8
+ PUBWEAK VectorAC
+ PUBWEAK VectorB0
+ PUBWEAK VectorB4
+ PUBWEAK VectorB8
+ PUBWEAK VectorBC
+ PUBWEAK VectorC0
+ PUBWEAK VectorC4
+ PUBWEAK VectorC8
+ PUBWEAK VectorCC
+ PUBWEAK VectorD0
+ PUBWEAK VectorD4
+ PUBWEAK VectorD8
+ PUBWEAK VectorDC
+ PUBWEAK VectorE0
+ PUBWEAK VectorE4
+ PUBWEAK VectorE8
+ PUBWEAK VectorEC
+ PUBWEAK VectorF0
+ PUBWEAK VectorF4
+ PUBWEAK VectorF8
+ PUBWEAK VectorFC
+ PUBWEAK Vector100
+ PUBWEAK Vector104
+ PUBWEAK Vector108
+ PUBWEAK Vector10C
+ PUBWEAK Vector110
+ PUBWEAK Vector114
+ PUBWEAK Vector118
+ PUBWEAK Vector11C
+ PUBWEAK Vector120
+ PUBWEAK Vector124
+ PUBWEAK Vector128
+ PUBWEAK Vector12C
+ PUBWEAK Vector130
+ PUBWEAK Vector134
+ PUBWEAK Vector138
+ PUBWEAK Vector13C
+ PUBWEAK Vector140
+ PUBWEAK Vector144
+ PUBWEAK Vector148
+ PUBWEAK Vector14C
+ PUBLIC _unhandled_exception
+
+ SECTION .text:CODE:REORDER(1)
+ THUMB
+
+NMIVector
+HardFaultVector
+MemManageVector
+BusFaultVector
+UsageFaultVector
+Vector1C
+Vector20
+Vector24
+Vector28
+SVCallVector
+DebugMonitorVector
+Vector34
+PendSVVector
+SysTickVector
+Vector40
+Vector44
+Vector48
+Vector4C
+Vector50
+Vector54
+Vector58
+Vector5C
+Vector60
+Vector64
+Vector68
+Vector6C
+Vector70
+Vector74
+Vector78
+Vector7C
+Vector80
+Vector84
+Vector88
+Vector8C
+Vector90
+Vector94
+Vector98
+Vector9C
+VectorA0
+VectorA4
+VectorA8
+VectorAC
+VectorB0
+VectorB4
+VectorB8
+VectorBC
+VectorC0
+VectorC4
+VectorC8
+VectorCC
+VectorD0
+VectorD4
+VectorD8
+VectorDC
+VectorE0
+VectorE4
+VectorE8
+VectorEC
+VectorF0
+VectorF4
+VectorF8
+VectorFC
+Vector100
+Vector104
+Vector108
+Vector10C
+Vector110
+Vector114
+Vector118
+Vector11C
+Vector120
+Vector124
+Vector128
+Vector12C
+Vector130
+Vector134
+Vector138
+Vector13C
+Vector140
+Vector144
+Vector148
+Vector14C
+_unhandled_exception
+ b _unhandled_exception
+
+ END
diff --git a/firmware/console/console_io.c b/firmware/console/console_io.c
index 5992ecf17d..13cb6c1005 100644
--- a/firmware/console/console_io.c
+++ b/firmware/console/console_io.c
@@ -122,7 +122,7 @@ bool isSerialOverUart(void) {
return is_serial_over_uart;
}
-#if EFI_PROD_CODE
+#if EFI_PROD_CODE || EFI_EGT
static SerialConfig serialConfig = { SERIAL_SPEED, 0, USART_CR2_STOP1_BITS | USART_CR2_LINEN, 0 };
@@ -138,6 +138,10 @@ SerialDriver * getConsoleChannel(void) {
#endif
}
+
+#endif /* EFI_PROD_CODE || EFI_EGT */
+
+#if EFI_PROD_CODE
bool isConsoleReady(void) {
if (isSerialOverUart()) {
return isSerialConsoleStarted;
@@ -145,9 +149,10 @@ bool isConsoleReady(void) {
return is_usb_serial_ready();
}
}
-
#endif /* EFI_PROD_CODE */
+
+
static THD_WORKING_AREA(consoleThreadStack, 2 * UTILITY_THREAD_STACK_SIZE);
static msg_t consoleThreadThreadEntryPoint(void *arg) {
(void) arg;
diff --git a/firmware/console/console_io.h b/firmware/console/console_io.h
index e2de8ffc58..55a6eb6117 100644
--- a/firmware/console/console_io.h
+++ b/firmware/console/console_io.h
@@ -33,9 +33,14 @@ SerialDriver * getConsoleChannel(void);
void consolePutChar(int x);
void consoleOutputBuffer(const uint8_t *buf, int size);
void startConsole(void (*console_line_callback_p)(char *));
-bool isConsoleReady(void);
bool isSerialOverUart(void);
+#if EFI_PROD_CODE || EFI_SIMULATOR
+bool isConsoleReady(void);
+#else
+#define isConsoleReady() true
+#endif
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/firmware/iar_egt/ch.ewp b/firmware/iar_egt/ch.ewp
index aa6cf27155..a83e5f4d21 100644
--- a/firmware/iar_egt/ch.ewp
+++ b/firmware/iar_egt/ch.ewp
@@ -302,7 +302,7 @@
$PROJ_DIR$\..\chibios\os\ports\common\ARMCMx
$PROJ_DIR$\..\chibios\os\ports\common\ARMCMx\CMSIS\include
$PROJ_DIR$\..\chibios\os\ports\IAR\ARMCMx
- $PROJ_DIR$\..\chibios\os\ports\IAR\ARMCMx\STM32F4xx
+ $PROJ_DIR$\..\chibios\os\ports\IAR\ARMCMx\STM32F0xx
$PROJ_DIR$\..\chibios\os\hal\include
$PROJ_DIR$\..\chibios\os\hal\platforms\STM32
$PROJ_DIR$\..\chibios\os\hal\platforms\STM32\DMAv1
@@ -313,10 +313,10 @@
$PROJ_DIR$\..\chibios\os\hal\platforms\STM32\RTCv2
$PROJ_DIR$\..\chibios\os\hal\platforms\STM32\USARTv1
$PROJ_DIR$\..\chibios\os\hal\platforms\STM32\OTGv1
- $PROJ_DIR$\..\chibios\os\hal\platforms\STM32F4xx
+ $PROJ_DIR$\..\chibios\os\hal\platforms\STM32F0xx
$PROJ_DIR$\..\chibios\os\various
$PROJ_DIR$\..\chibios\os\various\devices_lib\accel
- $PROJ_DIR$\..\chibios\boards\ST_STM32F4_DISCOVERY
+ $PROJ_DIR$\..\chibios\boards\ST_STM32F0_DISCOVERY
$PROJ_DIR$\..\controllers
$PROJ_DIR$\..\controllers\algo
$PROJ_DIR$\..\controllers\core
@@ -327,7 +327,7 @@
$PROJ_DIR$\..\console
$PROJ_DIR$\..\config
$PROJ_DIR$\..\config\engines
- $PROJ_DIR$\..\config\stm32f4ems
+ $PROJ_DIR$\..\config\stm32f0egt
$PROJ_DIR$\..\console\tunerstudio
$PROJ_DIR$\..\console_util
$PROJ_DIR$\..\emulation
@@ -335,7 +335,7 @@
$PROJ_DIR$\..\emulation\hw_layer
$PROJ_DIR$\..\hw_layer\algo
$PROJ_DIR$\..\hw_layer\lcd
- $PROJ_DIR$\..\hw_layer\stm32f4
+ $PROJ_DIR$\..\hw_layer\stm32f0
$PROJ_DIR$\..\hw_layer\serial_over_usb
$PROJ_DIR$\..\hw_layer
$PROJ_DIR$\..\ext
@@ -588,8 +588,8 @@