From 5d824afaee622ecb2d022eca0145b0a51c99894e Mon Sep 17 00:00:00 2001 From: Michael Keller Date: Thu, 26 Jan 2017 08:56:22 +1300 Subject: [PATCH 1/6] Rebase of #1917: Update SDK to 6.2.1 2016q4 (thanks to @TheAngularity). --- .travis.yml | 2 +- make/tools.mk | 10 +++++----- src/main/build/atomic.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5072324926..df472a95ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,7 +82,7 @@ install: - make arm_sdk_install before_script: - - tools/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gcc --version + - tools/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc --version - clang --version - clang++ --version diff --git a/make/tools.mk b/make/tools.mk index 810716a57d..4ad98115d6 100644 --- a/make/tools.mk +++ b/make/tools.mk @@ -14,16 +14,16 @@ ############################## # Set up ARM (STM32) SDK -ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-5_4-2016q3 +ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-6_2-2016q4 # Checked below, Should match the output of $(shell arm-none-eabi-gcc -dumpversion) -GCC_REQUIRED_VERSION ?= 5.4.1 +GCC_REQUIRED_VERSION ?= 6.2.1 ## arm_sdk_install : Install Arm SDK .PHONY: arm_sdk_install -ARM_SDK_URL_BASE := https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q3-update/+download/gcc-arm-none-eabi-5_4-2016q3-20160926 +ARM_SDK_URL_BASE := https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2016q4/gcc-arm-none-eabi-6_2-2016q4-20161216 -# source: https://launchpad.net/gcc-arm-embedded/5.0/ +# source: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads ifdef LINUX ARM_SDK_URL := $(ARM_SDK_URL_BASE)-linux.tar.bz2 endif @@ -33,7 +33,7 @@ ifdef MACOSX endif ifdef WINDOWS - ARM_SDK_URL := $(ARM_SDK_URL_BASE)-win32.zip + ARM_SDK_URL := $(ARM_SDK_URL_BASE)-win32-zip.zip endif ARM_SDK_FILE := $(notdir $(ARM_SDK_URL)) diff --git a/src/main/build/atomic.h b/src/main/build/atomic.h index 4603091ed4..959c6e9d8d 100644 --- a/src/main/build/atomic.h +++ b/src/main/build/atomic.h @@ -85,7 +85,7 @@ static inline uint8_t __basepriSetRetVal(uint8_t prio) // ideally this would only protect memory passed as parameter (any type should work), but gcc is curently creating almost full barrier // this macro can be used only ONCE PER LINE, but multiple uses per block are fine -#if (__GNUC__ > 5) +#if (__GNUC__ > 6) #warning "Please verify that ATOMIC_BARRIER works as intended" // increment version number is BARRIER works // TODO - use flag to disable ATOMIC_BARRIER and use full barrier instead From c4c9c77dcefd95d343d91738d08b54b4aa413a74 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Fri, 10 Feb 2017 16:53:12 +0000 Subject: [PATCH 2/6] Fix CMS compiler warning --- src/main/cms/cms_menu_blackbox.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/cms/cms_menu_blackbox.c b/src/main/cms/cms_menu_blackbox.c index d1ea564a88..7e5e891eeb 100644 --- a/src/main/cms/cms_menu_blackbox.c +++ b/src/main/cms/cms_menu_blackbox.c @@ -90,7 +90,9 @@ static char cmsx_BlackboxDeviceStorageFree[CMS_BLACKBOX_STRING_LENGTH]; static void cmsx_Blackbox_GetDeviceStatus() { char * unit = "B"; +#if defined(USE_SDCARD) || defined(USE_FLASHFS) bool storageDeviceIsWorking = false; +#endif uint32_t storageUsed = 0; uint32_t storageFree = 0; @@ -148,7 +150,6 @@ static void cmsx_Blackbox_GetDeviceStatus() #endif default: - storageDeviceIsWorking = true; snprintf(cmsx_BlackboxStatus, CMS_BLACKBOX_STRING_LENGTH, "---"); } From e34ad5d6c2c1616f21c13abd2e68d1277b267ca8 Mon Sep 17 00:00:00 2001 From: jflyper Date: Fri, 10 Feb 2017 16:05:15 +0900 Subject: [PATCH 3/6] Force two software serial ports --- src/main/target/AIRHEROF3/target.h | 11 ++--- src/main/target/BETAFLIGHTF3/target.h | 4 +- src/main/target/BLUEJAYF4/target.h | 11 ++--- src/main/target/CC3D/target.h | 6 +-- src/main/target/FURYF3/target.h | 5 +- src/main/target/ISHAPEDF3/target.h | 11 ++--- src/main/target/KISSFC/target.h | 6 ++- src/main/target/MULTIFLITEPICO/target.h | 11 ++--- src/main/target/NAZE/target.h | 11 ++--- src/main/target/OMNIBUS/target.h | 3 +- src/main/target/OMNIBUSF4/target.h | 14 +----- src/main/target/REVO/target.h | 5 +- src/main/target/SINGULARITY/target.h | 6 +-- src/main/target/SPRACINGF3/target.h | 12 ++--- src/main/target/SPRACINGF3MINI/target.h | 13 +++-- src/main/target/VRRACE/target.h | 5 +- src/main/target/X_RACERSPI/target.h | 5 +- src/main/target/common_post.h | 66 +++++++++++++++++++++++++ 18 files changed, 124 insertions(+), 81 deletions(-) diff --git a/src/main/target/AIRHEROF3/target.h b/src/main/target/AIRHEROF3/target.h index 7e88ffe13d..9810a59457 100755 --- a/src/main/target/AIRHEROF3/target.h +++ b/src/main/target/AIRHEROF3/target.h @@ -63,12 +63,11 @@ #define USE_ESCSERIAL #define ESCSERIAL_TIMER_TX_HARDWARE 0 // PWM 1 -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 -#define SOFTSERIAL_2_TIMER TIM3 -#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7 -#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8 +#define SOFTSERIAL1_RX_PIN PA6 // PWM 5 +#define SOFTSERIAL1_TX_PIN PA7 // PWM 6 + +#define SOFTSERIAL2_RX_PIN PB6 // PWM 7 +#define SOFTSERIAL2_TX_PIN PB1 // PWM 8 #define UART1_TX_PIN PA9 #define UART1_RX_PIN PA10 diff --git a/src/main/target/BETAFLIGHTF3/target.h b/src/main/target/BETAFLIGHTF3/target.h index 951e3f4814..59f5e1c003 100755 --- a/src/main/target/BETAFLIGHTF3/target.h +++ b/src/main/target/BETAFLIGHTF3/target.h @@ -70,8 +70,8 @@ #define UART3_TX_PIN PB10 #define UART3_RX_PIN PB11 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 6 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 7 // PWM 6 +#define SOFTSERIAL1_RX_PIN PB0 // PWM 5 +#define SOFTSERIAL1_TX_PIN PB1 // PWM 6 #undef USE_I2C diff --git a/src/main/target/BLUEJAYF4/target.h b/src/main/target/BLUEJAYF4/target.h index db082c2e4b..845634e943 100644 --- a/src/main/target/BLUEJAYF4/target.h +++ b/src/main/target/BLUEJAYF4/target.h @@ -113,19 +113,14 @@ #define UART6_TX_PIN PC6 #define USE_SOFTSERIAL1 +#define SOFTSERIAL1_RX_PIN PB0 // PWM5 +#define SOFTSERIAL1_TX_PIN PB1 // PWM6 + #define SERIAL_PORT_COUNT 5 #define USE_ESCSERIAL #define ESCSERIAL_TIMER_TX_HARDWARE 0 // PWM 1 -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 - - -#define USE_ESCSERIAL -#define ESCSERIAL_TIMER_TX_HARDWARE 0 - #define USE_SPI #define USE_SPI_DEVICE_1 diff --git a/src/main/target/CC3D/target.h b/src/main/target/CC3D/target.h index 9871d0cf46..9b1e75bbfb 100644 --- a/src/main/target/CC3D/target.h +++ b/src/main/target/CC3D/target.h @@ -76,6 +76,8 @@ #define SERIAL_PORT_COUNT 3 #else #define USE_SOFTSERIAL1 +#define SOFTSERIAL1_TX_PIN PB5 // PWM 2 +#define SOFTSERIAL1_RX_PIN PB0 // PWM 3 #define SERIAL_PORT_COUNT 4 #endif @@ -83,10 +85,6 @@ #undef USE_UART1_RX_DMA #endif -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 1 // PWM 2 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3 - #define UART3_RX_PIN PB11 #define UART3_TX_PIN PB10 diff --git a/src/main/target/FURYF3/target.h b/src/main/target/FURYF3/target.h index 7bd8ee724e..a8c6c3663e 100644 --- a/src/main/target/FURYF3/target.h +++ b/src/main/target/FURYF3/target.h @@ -129,9 +129,8 @@ #define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7) -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 1 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 2 +#define SOFTSERIAL1_RX_PIN PB0 +#define SOFTSERIAL1_TX_PIN PB1 #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // SDA (PB9/AF4), SCL (PB8/AF4) diff --git a/src/main/target/ISHAPEDF3/target.h b/src/main/target/ISHAPEDF3/target.h index c631a54172..ddcfc7d789 100644 --- a/src/main/target/ISHAPEDF3/target.h +++ b/src/main/target/ISHAPEDF3/target.h @@ -73,12 +73,11 @@ #define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7) -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 -#define SOFTSERIAL_2_TIMER TIM3 -#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7 -#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8 +#define SOFTSERIAL1_RX_PIN PB4 // PWM 5 +#define SOFTSERIAL1_TX_PIN PB5 // PWM 6 + +#define SOFTSERIAL2_RX_PIN PB0 // PWM 7 +#define SOFTSERIAL2_TX_PIN PB1 // PWM 8 #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/KISSFC/target.h b/src/main/target/KISSFC/target.h index acd455cb17..eeb4abc210 100644 --- a/src/main/target/KISSFC/target.h +++ b/src/main/target/KISSFC/target.h @@ -60,12 +60,11 @@ #define LED_STRIP #endif -#define USE_SOFTSERIAL #define USE_VCP #define USE_UART1 #define USE_UART2 #define USE_UART3 -#define SERIAL_PORT_COUNT 5 +#define SERIAL_PORT_COUNT 4 #define UART1_TX_PIN PA9 #define UART1_RX_PIN PA10 @@ -76,10 +75,13 @@ #define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7) +// XXX 11 is out of bound +/* #ifdef KISSCC #define SOFTSERIAL_1_TIMER_RX_HARDWARE 11 #define SOFTSERIAL_1_TIMER_TX_HARDWARE 11 #endif +*/ #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/MULTIFLITEPICO/target.h b/src/main/target/MULTIFLITEPICO/target.h index 6ebc86e4e7..4727248757 100755 --- a/src/main/target/MULTIFLITEPICO/target.h +++ b/src/main/target/MULTIFLITEPICO/target.h @@ -81,12 +81,11 @@ #define UART3_RX_PIN PB11 // PB11 (AF7) /* -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 -#define SOFTSERIAL_2_TIMER TIM3 -#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7 -#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8 +#define SOFTSERIAL1_RX_PIN PB4 // PWM 5 +#define SOFTSERIAL1_TX_PIN PB5 // PWM 6 + +#define SOFTSERIAL2_RX_PIN PB0 // PWM 7 +#define SOFTSERIAL2_TX_PIN PB1 // PWM 8 */ #define USE_I2C diff --git a/src/main/target/NAZE/target.h b/src/main/target/NAZE/target.h index b9cc396a3a..9f992744c1 100644 --- a/src/main/target/NAZE/target.h +++ b/src/main/target/NAZE/target.h @@ -125,12 +125,11 @@ #define USE_SOFTSERIAL2 #define SERIAL_PORT_COUNT 4 -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 -#define SOFTSERIAL_2_TIMER TIM3 -#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7 -#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8 +#define SOFTSERIAL1_RX_PIN PA6 // PWM 5 +#define SOFTSERIAL1_TX_PIN PA7 // PWM 6 + +#define SOFTSERIAL2_RX_PIN PB0 // PWM 7 +#define SOFTSERIAL2_TX_PIN PB1 // PWM 8 #define UART3_RX_PIN PB11 #define UART3_TX_PIN PB10 diff --git a/src/main/target/OMNIBUS/target.h b/src/main/target/OMNIBUS/target.h index bc56b8c318..35fe1e4965 100644 --- a/src/main/target/OMNIBUS/target.h +++ b/src/main/target/OMNIBUS/target.h @@ -68,8 +68,7 @@ #define USE_UART1 #define USE_UART2 #define USE_UART3 -#define USE_SOFTSERIAL1 -#define SERIAL_PORT_COUNT 5 +#define SERIAL_PORT_COUNT 4 #define UART1_TX_PIN PA9 #define UART1_RX_PIN PA10 diff --git a/src/main/target/OMNIBUSF4/target.h b/src/main/target/OMNIBUSF4/target.h index 3d6e36c268..bc175d46bd 100644 --- a/src/main/target/OMNIBUSF4/target.h +++ b/src/main/target/OMNIBUSF4/target.h @@ -125,19 +125,7 @@ #define UART6_RX_PIN PC7 #define UART6_TX_PIN PC6 -#define USE_SOFTSERIAL1 -//#define SOFTSERIAL1_RX_PIN PC8 // S5_IN (TIM8 CH3) -//#define SOFTSERIAL1_TX_PIN PC9 // S6_IN (TIM8 CH4) - -#define USE_SOFTSERIAL2 -// Special case of using different timers for RX and TX -//#define SOFTSERIAL2_RX_PIN PA1 // PWM5, LED_STRIP -//#define SOFTSERIAL2_TX_PIN PA8 // PWM6 -// Experimental (untested) -//#define SOFTSERIAL2_RX_PIN PA8 // PWM6 -//#define SOFTSERIAL2_TX_PIN PB15 // S2_IN - -#define SERIAL_PORT_COUNT 6 //VCP, USART1, USART3, USART6, SOFTSERIALx2 +#define SERIAL_PORT_COUNT 4 //VCP, USART1, USART3, USART6 #define USE_ESCSERIAL #define ESCSERIAL_TIMER_TX_HARDWARE 0 // PWM 1 diff --git a/src/main/target/REVO/target.h b/src/main/target/REVO/target.h index a257860c9b..a93fdc3813 100644 --- a/src/main/target/REVO/target.h +++ b/src/main/target/REVO/target.h @@ -157,10 +157,7 @@ #define UART6_RX_PIN PC7 #define UART6_TX_PIN PC6 -#define USE_SOFTSERIAL1 -#define USE_SOFTSERIAL2 - -#define SERIAL_PORT_COUNT 6 //VCP, USART1, USART3, USART6, SOFTSERIALx2 +#define SERIAL_PORT_COUNT 4 //VCP, USART1, USART3, USART6 #define USE_ESCSERIAL #define ESCSERIAL_TIMER_TX_HARDWARE 0 // PWM 1 diff --git a/src/main/target/SINGULARITY/target.h b/src/main/target/SINGULARITY/target.h index 498c2a765a..b2dd548633 100644 --- a/src/main/target/SINGULARITY/target.h +++ b/src/main/target/SINGULARITY/target.h @@ -59,10 +59,8 @@ #define UART3_TX_PIN PB10 #define UART3_RX_PIN PB11 - -#define SOFTSERIAL_1_TIMER TIM15 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 7 //Not connected -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 8 +#define SOFTSERIAL1_RX_PIN PA2 //Not connected +#define SOFTSERIAL1_TX_PIN PA3 #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/SPRACINGF3/target.h b/src/main/target/SPRACINGF3/target.h index 644e81e7aa..1649af95bc 100644 --- a/src/main/target/SPRACINGF3/target.h +++ b/src/main/target/SPRACINGF3/target.h @@ -135,12 +135,12 @@ #define USE_SOFTSERIAL2 #define SERIAL_PORT_COUNT 5 -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 -#define SOFTSERIAL_2_TIMER TIM3 -#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7 -#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8 +#define SOFTSERIAL1_RX_PIN PB4 // PWM 5 +#define SOFTSERIAL1_TX_PIN PB5 // PWM 6 + +#define SOFTSERIAL2_RX_PIN PB0 // PWM 7 +#define SOFTSERIAL2_TX_PIN PB1 // PWM 8 + #define SONAR_SOFTSERIAL2_EXCLUSIVE #endif diff --git a/src/main/target/SPRACINGF3MINI/target.h b/src/main/target/SPRACINGF3MINI/target.h index ebff516b0e..7c7c4c8d83 100644 --- a/src/main/target/SPRACINGF3MINI/target.h +++ b/src/main/target/SPRACINGF3MINI/target.h @@ -92,8 +92,13 @@ #define USE_UART1 #define USE_UART2 #define USE_UART3 + +#ifdef TINYBEEF3 +#define SERIAL_PORT_COUNT 4 +#else #define USE_SOFTSERIAL1 #define SERIAL_PORT_COUNT 5 +#endif #define USE_ESCSERIAL #define ESCSERIAL_TIMER_TX_HARDWARE 0 // PWM 1 @@ -107,9 +112,11 @@ #define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7) -#define SOFTSERIAL_1_TIMER TIM2 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 9 // PA0 / PAD3 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 10 // PA1 / PAD4 +#ifndef TINYBEEF3 +#define SOFTSERIAL1_RX_PIN PA0 // PA0 / PAD3 +#define SOFTSERIAL1_TX_PIN PA1 // PA1 / PAD4 +#endif + #define SONAR_SOFTSERIAL1_EXCLUSIVE #define USE_I2C diff --git a/src/main/target/VRRACE/target.h b/src/main/target/VRRACE/target.h index fa27f4785d..7c2e6803c4 100644 --- a/src/main/target/VRRACE/target.h +++ b/src/main/target/VRRACE/target.h @@ -116,9 +116,8 @@ #define USE_SOFTSERIAL1 -#define SOFTSERIAL_1_TIMER TIM1 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 1 // PWM 2 +#define SOFTSERIAL1_RX_PIN PE13 // PWM 3 +#define SOFTSERIAL1_TX_PIN PE11 // PWM 2 #define SERIAL_PORT_COUNT 6 //VCP, USART1, USART2, USART3, USART6, SOFTSERIAL1 #define USE_ESCSERIAL diff --git a/src/main/target/X_RACERSPI/target.h b/src/main/target/X_RACERSPI/target.h index f62d0ff86a..c9d50095fc 100644 --- a/src/main/target/X_RACERSPI/target.h +++ b/src/main/target/X_RACERSPI/target.h @@ -68,9 +68,8 @@ #define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7) -#define SOFTSERIAL_1_TIMER TIM3 -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6 +#define SOFTSERIAL1_RX_PIN PB0 // PWM 5 +#define SOFTSERIAL1_TX_PIN PB1 // PWM 6 #define SONAR_SOFTSERIAL1_EXCLUSIVE #define USE_I2C diff --git a/src/main/target/common_post.h b/src/main/target/common_post.h index 7a089ebff7..2364c69044 100644 --- a/src/main/target/common_post.h +++ b/src/main/target/common_post.h @@ -26,3 +26,69 @@ # undef VTX_SMARTAUDIO # undef VTX_TRAMP #endif + +// Forced configuration of two software serials and SERIAL_PORT_COUNT recalc +#ifndef USE_SOFTSERIAL1 +# define USE_SOFTSERIAL1 +#endif + +#ifndef USE_SOFTSERIAL2 +# define USE_SOFTSERIAL2 +#endif + +#ifdef USE_VCP +# define N_VCP 1 +#else +# define N_VCP 0 +#endif + +#ifdef USE_UART1 + #define N_UART1 1 +#else + #define N_UART1 0 +#endif + +#ifdef USE_UART2 + #define N_UART2 1 +#else + #define N_UART2 0 +#endif + +#ifdef USE_UART3 + #define N_UART3 1 +#else + #define N_UART3 0 +#endif + +#ifdef USE_UART4 + #define N_UART4 1 +#else + #define N_UART4 0 +#endif + +#ifdef USE_UART5 + #define N_UART5 1 +#else + #define N_UART5 0 +#endif + +#ifdef USE_UART6 + #define N_UART6 1 +#else + #define N_UART6 0 +#endif + +#ifdef USE_SOFTSERIAL1 + #define N_SSERIAL1 1 +#else + #define N_SSERIAL1 0 +#endif + +#ifdef USE_SOFTSERIAL2 + #define N_SSERIAL2 1 +#else + #define N_SSERIAL2 0 +#endif + +#undef SERIAL_PORT_COUNT +#define SERIAL_PORT_COUNT (N_VCP + N_UART1 + N_UART2 + N_UART3 + N_UART4 + N_UART5 + N_UART6 + N_SSERIAL1 + N_SSERIAL2) From ddd78af0e7b0060a0dd932cc5ca67f5b0251f968 Mon Sep 17 00:00:00 2001 From: jflyper Date: Fri, 10 Feb 2017 22:07:29 +0900 Subject: [PATCH 4/6] Complete KISSCC and fix simplex TX case --- src/main/drivers/serial_softserial.c | 12 ++++++++++-- src/main/target/KISSFC/target.h | 11 +++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/drivers/serial_softserial.c b/src/main/drivers/serial_softserial.c index 906c70d952..491cc0999c 100644 --- a/src/main/drivers/serial_softserial.c +++ b/src/main/drivers/serial_softserial.c @@ -260,7 +260,16 @@ serialPort_t *openSoftSerial(softSerialPortIndex_e portIndex, serialReceiveCallb return NULL; softSerial->txIO = txIO; - softSerial->exTimerHardware = timerTx; + + if (!(mode & MODE_RX)) { + // TX Simplex, must have a timer + if (!timerTx) + return NULL; + softSerial->timerHardware = timerTx; + } else { + // Duplex + softSerial->exTimerHardware = timerTx; + } IOInit(txIO, OWNER_SERIAL_TX, RESOURCE_INDEX(portIndex) + RESOURCE_SOFT_OFFSET); } } @@ -449,7 +458,6 @@ void processRxState(softSerial_t *softSerial) void onSerialTimerOverflow(timerOvrHandlerRec_t *cbRec, captureCompare_t capture) { UNUSED(capture); - softSerial_t *self = container_of(cbRec, softSerial_t, overCb); if (self->port.mode & MODE_TX) diff --git a/src/main/target/KISSFC/target.h b/src/main/target/KISSFC/target.h index eeb4abc210..bf97dc015c 100644 --- a/src/main/target/KISSFC/target.h +++ b/src/main/target/KISSFC/target.h @@ -64,7 +64,6 @@ #define USE_UART1 #define USE_UART2 #define USE_UART3 -#define SERIAL_PORT_COUNT 4 #define UART1_TX_PIN PA9 #define UART1_RX_PIN PA10 @@ -75,13 +74,13 @@ #define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7) -// XXX 11 is out of bound -/* #ifdef KISSCC -#define SOFTSERIAL_1_TIMER_RX_HARDWARE 11 -#define SOFTSERIAL_1_TIMER_TX_HARDWARE 11 +#define USE_SOFTSERIAL1 +#define SOFTSERIAL1_TX_PIN PA13 +#define SERIAL_PORT_COUNT 5 +#else +#define SERIAL_PORT_COUNT 4 #endif -*/ #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA From 2f119a41a79feb52fe2624a990c02abfe9ea35bd Mon Sep 17 00:00:00 2001 From: jflyper Date: Sat, 11 Feb 2017 03:52:03 +0900 Subject: [PATCH 5/6] Pre-define software uarts in common.h --- src/main/target/common.h | 4 ++++ src/main/target/common_post.h | 11 ++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/target/common.h b/src/main/target/common.h index 65eb2bd9de..6a7c8bbd7b 100644 --- a/src/main/target/common.h +++ b/src/main/target/common.h @@ -71,6 +71,10 @@ #define USE_PWM #define USE_PPM +// Force two softserials (Individual target.h may turn these off) +#define USE_SOFTSERIAL1 +#define USE_SOFTSERIAL2 + #if defined(STM32F4) || defined(STM32F7) #define TASK_GYROPID_DESIRED_PERIOD 125 #define SCHEDULER_DELAY_LIMIT 10 diff --git a/src/main/target/common_post.h b/src/main/target/common_post.h index 2364c69044..041bbfe85c 100644 --- a/src/main/target/common_post.h +++ b/src/main/target/common_post.h @@ -27,15 +27,8 @@ # undef VTX_TRAMP #endif -// Forced configuration of two software serials and SERIAL_PORT_COUNT recalc -#ifndef USE_SOFTSERIAL1 -# define USE_SOFTSERIAL1 -#endif - -#ifndef USE_SOFTSERIAL2 -# define USE_SOFTSERIAL2 -#endif - +// Forced config of USE_SOFTSERIAL{1,2} in common.h makes SERIAL_PORT_COUNT +// defined in target.h invalid. Count them and re-define SERIAL_PORT_COUNT. #ifdef USE_VCP # define N_VCP 1 #else From 57208bb69017d4882dc8cf9d0be2bcc26003153c Mon Sep 17 00:00:00 2001 From: borisbstyle Date: Fri, 10 Feb 2017 23:30:07 +0100 Subject: [PATCH 6/6] Remove Softserial on SPRACINGF3EVO --- src/main/target/SPRACINGF3EVO/target.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/target/SPRACINGF3EVO/target.h b/src/main/target/SPRACINGF3EVO/target.h index 46be8a86c7..c387e356d9 100755 --- a/src/main/target/SPRACINGF3EVO/target.h +++ b/src/main/target/SPRACINGF3EVO/target.h @@ -74,6 +74,9 @@ #define USE_ESCSERIAL #define ESCSERIAL_TIMER_TX_HARDWARE 0 // PWM 1 +#undef USE_SOFTSERIAL1 +#undef USE_SOFTSERIAL2 + #define UART1_TX_PIN PA9 #define UART1_RX_PIN PA10