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 @@