From 78e84f9aa4eb4d211f48516bfcb957156af931d5 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 28 Jan 2025 10:08:44 +0100 Subject: [PATCH 01/23] Merge maintenance-8.x.x fixes into master --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b9de50239..171bb4df3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,7 @@ else() endif() -project(INAV VERSION 8.1.0) +project(INAV VERSION 9.0.0) enable_language(ASM) From 03efa418bd7b64a8a1a190ccbe4b28af66decac4 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Wed, 29 Jan 2025 14:41:06 +0100 Subject: [PATCH 02/23] s/\t/ /g --- docs/OSD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/OSD.md b/docs/OSD.md index dc34fc75c8..58f459ccc3 100644 --- a/docs/OSD.md +++ b/docs/OSD.md @@ -23,7 +23,7 @@ Not all OSDs are created equally. This table shows the differences between the d | DJI WTFOS | 60 x 22 | X | | X | YES | | HDZero | 50 x 18 | X | | X | YES | | Avatar | 53 x 20 | X | | X | YES | -| DJI O3 | 53 x 20 (HD) | X | | X (partial) | NO - BF Characters only | +| DJI O3 | 53 x 20 (HD) | X | | X (partial) | NO - BF Characters only | ## OSD Elements Here are the OSD Elements provided by INAV. From 79396168f920ed3d0e1f4997fea6129cafb6048b Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Sat, 1 Feb 2025 11:03:58 +0000 Subject: [PATCH 03/23] mc alt hold fix --- src/main/navigation/navigation_multicopter.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/navigation/navigation_multicopter.c b/src/main/navigation/navigation_multicopter.c index cd23edd6b3..56efd4cf62 100644 --- a/src/main/navigation/navigation_multicopter.c +++ b/src/main/navigation/navigation_multicopter.c @@ -140,19 +140,14 @@ bool adjustMulticopterAltitudeFromRCInput(void) const int16_t rcThrottleAdjustment = applyDeadbandRescaled(rcCommand[THROTTLE] - altHoldThrottleRCZero, rcControlsConfig()->alt_hold_deadband, -500, 500); if (rcThrottleAdjustment) { - // set velocity proportional to stick movement - float rcClimbRate; + /* Set velocity proportional to stick movement + * Scale from altHoldThrottleRCZero to maxthrottle or minthrottle to altHoldThrottleRCZero */ - // Make sure we can satisfy max_manual_climb_rate in both up and down directions - if (rcThrottleAdjustment > 0) { - // Scaling from altHoldThrottleRCZero to maxthrottle - rcClimbRate = rcThrottleAdjustment * navConfig()->mc.max_manual_climb_rate / (float)(getMaxThrottle() - altHoldThrottleRCZero - rcControlsConfig()->alt_hold_deadband); - } - else { - // Scaling from minthrottle to altHoldThrottleRCZero - rcClimbRate = rcThrottleAdjustment * navConfig()->mc.max_manual_climb_rate / (float)(altHoldThrottleRCZero - getThrottleIdleValue() - rcControlsConfig()->alt_hold_deadband); - } + // Calculate max up and min down limit values scaled for deadband + int16_t limitValue = rcThrottleAdjustment > 0 ? getMaxThrottle() : getThrottleIdleValue(); + limitValue = applyDeadbandRescaled(limitValue - altHoldThrottleRCZero, rcControlsConfig()->alt_hold_deadband, -500, 500); + int16_t rcClimbRate = ABS(rcThrottleAdjustment) * navConfig()->mc.max_manual_climb_rate / limitValue; updateClimbRateToAltitudeController(rcClimbRate, 0, ROC_TO_ALT_CONSTANT); return true; From f88f25c8e70ef0526c31f26ec38999de9f2019ca Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Sat, 1 Feb 2025 11:08:01 +0000 Subject: [PATCH 04/23] Update navigation_multicopter.c --- src/main/navigation/navigation_multicopter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/navigation/navigation_multicopter.c b/src/main/navigation/navigation_multicopter.c index 56efd4cf62..811186d0bd 100644 --- a/src/main/navigation/navigation_multicopter.c +++ b/src/main/navigation/navigation_multicopter.c @@ -143,7 +143,7 @@ bool adjustMulticopterAltitudeFromRCInput(void) /* Set velocity proportional to stick movement * Scale from altHoldThrottleRCZero to maxthrottle or minthrottle to altHoldThrottleRCZero */ - // Calculate max up and min down limit values scaled for deadband + // Calculate max up or min down limit value scaled for deadband int16_t limitValue = rcThrottleAdjustment > 0 ? getMaxThrottle() : getThrottleIdleValue(); limitValue = applyDeadbandRescaled(limitValue - altHoldThrottleRCZero, rcControlsConfig()->alt_hold_deadband, -500, 500); From 9f0ad979ca9dbf045b6d9ee416404de5f9df17bf Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:35:06 +0000 Subject: [PATCH 05/23] Update CMakeLists.txt --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 171bb4df3f..5b9de50239 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,7 @@ else() endif() -project(INAV VERSION 9.0.0) +project(INAV VERSION 8.1.0) enable_language(ASM) From 5ceb7a3bd01f66f048a24a26ca7175fd4c39ff0b Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <> Date: Tue, 25 Feb 2025 11:06:52 +0100 Subject: [PATCH 06/23] Set version as 8.0.1. Small maintenance version to add DJI_NATIVE osd option and some assorted changes changes since 8.0.0 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 87172bfc43..6183069ba1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ else() endif() endif() -project(INAV VERSION 8.1.0) +project(INAV VERSION 8.0.1) enable_language(ASM) From 439f0dcccdb0be9d40b201c766e50c2316dc526b Mon Sep 17 00:00:00 2001 From: error414 Date: Sat, 1 Mar 2025 22:37:28 +0100 Subject: [PATCH 07/23] Adsbee1090 --- docs/ADSB.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/ADSB.md b/docs/ADSB.md index 933cb264cd..3a36d1aa34 100644 --- a/docs/ADSB.md +++ b/docs/ADSB.md @@ -13,6 +13,7 @@ All ADSB receivers which can send Mavlink [ADSB_VEHICLE](https://mavlink.io/en/m * [PINGRX](https://uavionix.com/product/pingrx-pro/) (not tested) * [TT-SC1](https://www.aerobits.pl/product/aero/) (tested) +* [ADSBee1090](https://pantsforbirds.com/adsbee-1090/) (tested) ## TT-SC1 settings * download software for ADSB TT-SC1 from https://www.aerobits.pl/product/aero/ , file Micro_ADSB_App-vX.XX.X_win_setup.zip and install it @@ -24,3 +25,21 @@ All ADSB receivers which can send Mavlink [ADSB_VEHICLE](https://mavlink.io/en/m PCB board for TT-SC1-B module https://oshwlab.com/error414/adsb-power-board ![TT-SC1 settings](Screenshots/ADSB_TTSC01_settings.png) +## ADSBee 1090 settings +* connect to ADSBee1090 via USB and set COMMS_UART to mavlink2 \ +`` +AT+PROTOCOL=COMMS_UART,MAVLINK2 +``\ +`` +AT+BAUDRATE=COMMS_UART,115200 +``\ +It's recommended to turn of wifi \ +`` +AT+ESP32_ENABLE=0 +``\ +`` +AT+SETTINGS=SAVE +`` +* in INAV configurator ports TAB set telemetry MAVLINK, and baudrate 115200 +* https://pantsforbirds.com/adsbee-1090/quick-start/ + From bee0c205752d58e3e5101ca15f238c3f450c1d5e Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Sat, 22 Mar 2025 20:15:47 +0100 Subject: [PATCH 08/23] Fix channel 17 jitter in 16 channel jeti systems and add instrumenation --- src/main/build/debug.h | 1 + src/main/fc/settings.yaml | 2 +- src/main/rx/jetiexbus.c | 21 ++++++++++++++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/build/debug.h b/src/main/build/debug.h index 0bb74bac1a..c465220363 100644 --- a/src/main/build/debug.h +++ b/src/main/build/debug.h @@ -79,6 +79,7 @@ typedef enum { DEBUG_GPS, DEBUG_LULU, DEBUG_SBUS2, + DEBUG_EXBUS, DEBUG_COUNT // also update debugModeNames in cli.c } debugType_e; diff --git a/src/main/fc/settings.yaml b/src/main/fc/settings.yaml index 5fe2926163..d17899bac8 100644 --- a/src/main/fc/settings.yaml +++ b/src/main/fc/settings.yaml @@ -84,7 +84,7 @@ tables: "VIBE", "CRUISE", "REM_FLIGHT_TIME", "SMARTAUDIO", "ACC", "NAV_YAW", "PCF8574", "DYN_GYRO_LPF", "AUTOLEVEL", "ALTITUDE", "AUTOTRIM", "AUTOTUNE", "RATE_DYNAMICS", "LANDING", "POS_EST", - "ADAPTIVE_FILTER", "HEADTRACKER", "GPS", "LULU", "SBUS2"] + "ADAPTIVE_FILTER", "HEADTRACKER", "GPS", "LULU", "SBUS2", "EXBUS"] - name: aux_operator values: ["OR", "AND"] enum: modeActivationOperator_e diff --git a/src/main/rx/jetiexbus.c b/src/main/rx/jetiexbus.c index 9e3c04d2c1..9dcadb84b5 100644 --- a/src/main/rx/jetiexbus.c +++ b/src/main/rx/jetiexbus.c @@ -39,6 +39,7 @@ #include #include +#include #include "platform.h" @@ -48,6 +49,7 @@ #include "build/debug.h" #include "common/utils.h" +#include "common/maths.h" #include "drivers/time.h" @@ -117,16 +119,19 @@ void jetiExBusDecodeChannelFrame(uint8_t *exBusFrame) { uint16_t value; uint8_t frameAddr; + uint8_t channelDataLen = exBusFrame[EXBUS_HEADER_LEN - 1]; + uint8_t receivedChannelCount = MIN((channelDataLen) / 2, JETIEXBUS_CHANNEL_COUNT); // Decode header switch (((uint16_t)exBusFrame[EXBUS_HEADER_SYNC] << 8) | ((uint16_t)exBusFrame[EXBUS_HEADER_REQ])) { case EXBUS_CHANNELDATA_DATA_REQUEST: // not yet specified case EXBUS_CHANNELDATA: - for (uint8_t i = 0; i < JETIEXBUS_CHANNEL_COUNT; i++) { - frameAddr = EXBUS_HEADER_LEN + i * 2; + DEBUG_SET(DEBUG_EXBUS, 0, receivedChannelCount); + for (uint8_t i = 0; i < receivedChannelCount; i++) { + frameAddr = EXBUS_HEADER_LEN + (i * 2); value = ((uint16_t)exBusFrame[frameAddr + 1]) << 8; - value += (uint16_t)exBusFrame[frameAddr]; + value |= (uint16_t)exBusFrame[frameAddr]; // Convert to internal format jetiExBusChannelData[i] = value >> 3; } @@ -138,6 +143,7 @@ void jetiExBusFrameReset(void) { jetiExBusFramePosition = 0; jetiExBusFrameLength = EXBUS_MAX_CHANNEL_FRAME_SIZE; + } /* @@ -154,6 +160,9 @@ void jetiExBusFrameReset(void) // Receive ISR callback static void jetiExBusDataReceive(uint16_t c, void *data) { + static uint32_t resetTimeCount = 0; + static uint32_t resetOverrunCount = 0; + static uint32_t resetInvalidCount = 0; UNUSED(data); static timeUs_t jetiExBusTimeLast = 0; @@ -164,6 +173,7 @@ static void jetiExBusDataReceive(uint16_t c, void *data) // Check if we shall reset frame position due to time if (cmpTimeUs(now, jetiExBusTimeLast) > JETIEXBUS_MIN_FRAME_GAP) { jetiExBusFrameReset(); + DEBUG_SET(DEBUG_EXBUS, 1, resetTimeCount++); jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_ZERO; } @@ -192,6 +202,7 @@ static void jetiExBusDataReceive(uint16_t c, void *data) if (jetiExBusFramePosition == jetiExBusFrameMaxSize) { // frame overrun jetiExBusFrameReset(); + DEBUG_SET(DEBUG_EXBUS, 2, resetOverrunCount++); jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_ZERO; @@ -216,6 +227,7 @@ static void jetiExBusDataReceive(uint16_t c, void *data) } jetiExBusFrameReset(); // not a valid frame + DEBUG_SET(DEBUG_EXBUS, 3, resetInvalidCount++); jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_ZERO; return; @@ -228,6 +240,7 @@ static void jetiExBusDataReceive(uint16_t c, void *data) if (jetiExBusRequestState == EXBUS_STATE_IN_PROGRESS) { jetiExBusRequestState = EXBUS_STATE_RECEIVED; jetiTimeStampRequest = now; + DEBUG_SET(DEBUG_EXBUS, 7, now); } jetiExBusFrameReset(); @@ -268,6 +281,8 @@ bool jetiExBusInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfi rxRuntimeConfig->rcReadRawFn = jetiExBusReadRawRC; rxRuntimeConfig->rcFrameStatusFn = jetiExBusFrameStatus; + memset(jetiExBusChannelData, 0, sizeof(uint16_t) * JETIEXBUS_CHANNEL_COUNT); + jetiExBusFrameReset(); const serialPortConfig_t *portConfig = findSerialPortConfig(FUNCTION_RX_SERIAL); From 39b215a54b33a2820bdd87c0dfe1e67294a971c7 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Sat, 22 Mar 2025 22:23:34 +0100 Subject: [PATCH 09/23] reset frame/request state on received frame --- src/main/rx/jetiexbus.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/rx/jetiexbus.c b/src/main/rx/jetiexbus.c index 9dcadb84b5..80c5af4c33 100644 --- a/src/main/rx/jetiexbus.c +++ b/src/main/rx/jetiexbus.c @@ -143,7 +143,6 @@ void jetiExBusFrameReset(void) { jetiExBusFramePosition = 0; jetiExBusFrameLength = EXBUS_MAX_CHANNEL_FRAME_SIZE; - } /* @@ -215,14 +214,18 @@ static void jetiExBusDataReceive(uint16_t c, void *data) // Check the header for the message length if (jetiExBusFramePosition == EXBUS_HEADER_LEN) { + DEBUG_SET(DEBUG_EXBUS, 4, 0); + DEBUG_SET(DEBUG_EXBUS, 5, 0); if ((jetiExBusFrameState == EXBUS_STATE_IN_PROGRESS) && (jetiExBusFrame[EXBUS_HEADER_MSG_LEN] <= EXBUS_MAX_CHANNEL_FRAME_SIZE)) { jetiExBusFrameLength = jetiExBusFrame[EXBUS_HEADER_MSG_LEN]; + DEBUG_SET(DEBUG_EXBUS, 4, 1); return; } if ((jetiExBusRequestState == EXBUS_STATE_IN_PROGRESS) && (jetiExBusFrame[EXBUS_HEADER_MSG_LEN] <= EXBUS_MAX_REQUEST_FRAME_SIZE)) { jetiExBusFrameLength = jetiExBusFrame[EXBUS_HEADER_MSG_LEN]; + DEBUG_SET(DEBUG_EXBUS, 5, 1); return; } @@ -235,9 +238,12 @@ static void jetiExBusDataReceive(uint16_t c, void *data) // Done? if (jetiExBusFrameLength == jetiExBusFramePosition) { - if (jetiExBusFrameState == EXBUS_STATE_IN_PROGRESS) + if (jetiExBusFrameState == EXBUS_STATE_IN_PROGRESS) { jetiExBusFrameState = EXBUS_STATE_RECEIVED; + jetiExBusRequestState = EXBUS_STATE_ZERO; + } if (jetiExBusRequestState == EXBUS_STATE_IN_PROGRESS) { + jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_RECEIVED; jetiTimeStampRequest = now; DEBUG_SET(DEBUG_EXBUS, 7, now); From 6ae615ce834b9d960a2fd50198d2c0d67b214411 Mon Sep 17 00:00:00 2001 From: Jonathan Hudson Date: Mon, 24 Mar 2025 11:03:22 +0000 Subject: [PATCH 10/23] fix MATEKF405 variants BBL logging (#10741) * fix MATEKF405 variants BBL logging * [matekf405mini] sp3 across all variants --- src/main/target/MATEKF405/CMakeLists.txt | 1 + src/main/target/MATEKF405/target.h | 22 +++++++++------------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main/target/MATEKF405/CMakeLists.txt b/src/main/target/MATEKF405/CMakeLists.txt index ebf457cda2..d5c4656763 100644 --- a/src/main/target/MATEKF405/CMakeLists.txt +++ b/src/main/target/MATEKF405/CMakeLists.txt @@ -1,2 +1,3 @@ target_stm32f405xg(MATEKF405) target_stm32f405xg(MATEKF405OSD) +target_stm32f405xg(MATEKF405MINI) diff --git a/src/main/target/MATEKF405/target.h b/src/main/target/MATEKF405/target.h index 50786e8efc..a33807c06a 100644 --- a/src/main/target/MATEKF405/target.h +++ b/src/main/target/MATEKF405/target.h @@ -53,15 +53,7 @@ #define SPI3_MISO_PIN PB4 #define SPI3_MOSI_PIN PB5 -#ifdef MATEKF405OSD -// *************** SD Card ************************** -#define USE_SDCARD -#define USE_SDCARD_SPI -#define SDCARD_SPI_BUS BUS_SPI3 -#define SDCARD_CS_PIN PC1 - -#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT -#else +#ifdef MATEKF405MINI // *************** M25P256 flash ******************** #define USE_FLASHFS #define USE_FLASH_M25P16 @@ -69,6 +61,14 @@ #define M25P16_CS_PIN PC0 #define ENABLE_BLACKBOX_LOGGING_ON_SPIFLASH_BY_DEFAULT +#else +// *************** SD Card ************************** +#define USE_SDCARD +#define USE_SDCARD_SPI +#define SDCARD_SPI_BUS BUS_SPI3 +#define SDCARD_CS_PIN PC1 + +#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT #endif // *************** OSD ***************************** @@ -173,11 +173,7 @@ #define CURRENT_METER_ADC_CHANNEL ADC_CHN_2 #define RSSI_ADC_CHANNEL ADC_CHN_3 -#ifdef MATEKF405 #define DEFAULT_FEATURES (FEATURE_OSD | FEATURE_CURRENT_METER | FEATURE_VBAT | FEATURE_TELEMETRY | FEATURE_BLACKBOX ) -#else -#define DEFAULT_FEATURES (FEATURE_OSD | FEATURE_CURRENT_METER | FEATURE_VBAT | FEATURE_TELEMETRY ) -#endif #define CURRENT_METER_SCALE 179 #define USE_LED_STRIP From ecda71571c63ac4cf814e59cea32f9e54c0ef157 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Mon, 24 Mar 2025 16:33:45 +0100 Subject: [PATCH 11/23] Update gcc from 13.2 to 13.3 as an experiment. --- cmake/arm-none-eabi-checks.cmake | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/arm-none-eabi-checks.cmake b/cmake/arm-none-eabi-checks.cmake index f31a26c3e3..492ce8fd0c 100644 --- a/cmake/arm-none-eabi-checks.cmake +++ b/cmake/arm-none-eabi-checks.cmake @@ -2,18 +2,18 @@ include(gcc) set(arm_none_eabi_triplet "arm-none-eabi") # Keep version in sync with the distribution files below -set(arm_none_eabi_gcc_version "13.2.1") +set(arm_none_eabi_gcc_version "13.3.1") # This is the output directory "pretty" name and URI name prefix -set(base_dir_name "arm-gnu-toolchain-13.2.rel1") +set(base_dir_name "arm-gnu-toolchain-13.3.rel1") # This is the name inside the archive, which is no longer evincible from URI, alas -set(archive_base_dir_name "arm-gnu-toolchain-13.2.Rel1") -set(arm_none_eabi_base_url "https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/${base_dir_name}") +set(archive_base_dir_name "arm-gnu-toolchain-13.3.rel1") +set(arm_none_eabi_base_url "https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/${base_dir_name}") # suffix and checksum -set(arm_none_eabi_win32 "mingw-w64-i686-arm-none-eabi.zip" 7fd677088038cdf82f33f149e2e943ee) -set(arm_none_eabi_linux_amd64 "x86_64-arm-none-eabi.tar.xz" 791754852f8c18ea04da7139f153a5b7) -set(arm_none_eabi_linux_aarch64 "aarch64-arm-none-eabi.tar.xz" 5a08122e6d4caf97c6ccd1d29e62599c) -set(arm_none_eabi_darwin_amd64 "darwin-x86_64-arm-none-eabi.tar.xz" 41d49840b0fc676d2ae35aab21a58693) -set(arm_none_eabi_darwin_aarch64 "darwin-arm64-arm-none-eabi.tar.xz" 2c43e9d72206c1f81227b0a685df5ea6) +set(arm_none_eabi_win32 "mingw-w64-i686-arm-none-eabi.zip" 39d9882ca0eb475e81170ae826c1435d) +set(arm_none_eabi_linux_amd64 "x86_64-arm-none-eabi.tar.xz" 0601a9588bc5b9c99ad2b56133b7f118) +set(arm_none_eabi_linux_aarch64 "aarch64-arm-none-eabi.tar.xz" 303102d97b877ebbeb36b3158994b218) +set(arm_none_eabi_darwin_amd64 "darwin-x86_64-arm-none-eabi.tar.xz" 4bb141e44b831635fde4e8139d470f1f) +set(arm_none_eabi_darwin_aarch64 "darwin-arm64-arm-none-eabi.tar.xz" f1c18320bb3121fa89dca11399273f4e) function(host_uname_machine var) # We need to call uname -m manually, since at the point From a0e0c0cfa1ca277b3e220c209ddac3e99e3d8f23 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:21:31 +0100 Subject: [PATCH 12/23] warning fixes --- .../STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_rcc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_rcc.c b/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_rcc.c index e7b85d92d6..7aa7d509dd 100644 --- a/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_rcc.c +++ b/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_rcc.c @@ -22,8 +22,10 @@ #ifdef USE_FULL_ASSERT #include "stm32_assert.h" #else +#ifndef assert_param #define assert_param(expr) ((void)0U) #endif +#endif /** @addtogroup STM32H7xx_LL_Driver * @{ From 8221f3ba327cc9e277eeb4a97b9401f76db8d648 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Mon, 24 Mar 2025 19:27:25 +0100 Subject: [PATCH 13/23] Add extra instrumentation --- src/main/rx/jetiexbus.c | 10 ++++++ src/main/rx/jetiexbus.h | 4 ++- src/main/telemetry/jetiexbus.c | 57 ++++++++++++++++++++++++++++++++-- src/main/telemetry/jetiexbus.h | 2 ++ 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/main/rx/jetiexbus.c b/src/main/rx/jetiexbus.c index 80c5af4c33..c3855042ca 100644 --- a/src/main/rx/jetiexbus.c +++ b/src/main/rx/jetiexbus.c @@ -87,6 +87,8 @@ serialPort_t *jetiExBusPort; uint32_t jetiTimeStampRequest = 0; +bool jetiExBusCanTx = false; + static uint8_t jetiExBusFramePosition; static uint8_t jetiExBusFrameLength; @@ -198,6 +200,14 @@ static void jetiExBusDataReceive(uint16_t c, void *data) } } + if(jetiExBusFramePosition == 1) { + if(c == 0x01) { + jetiExBusCanTx = true; + } else { + jetiExBusCanTx = false; + } + } + if (jetiExBusFramePosition == jetiExBusFrameMaxSize) { // frame overrun jetiExBusFrameReset(); diff --git a/src/main/rx/jetiexbus.h b/src/main/rx/jetiexbus.h index d23999e9b0..779788effe 100644 --- a/src/main/rx/jetiexbus.h +++ b/src/main/rx/jetiexbus.h @@ -21,7 +21,7 @@ #define EXBUS_CRC_LEN 2 #define EXBUS_OVERHEAD (EXBUS_HEADER_LEN + EXBUS_CRC_LEN) #define EXBUS_MAX_CHANNEL_FRAME_SIZE (EXBUS_HEADER_LEN + JETIEXBUS_CHANNEL_COUNT*2 + EXBUS_CRC_LEN) -#define EXBUS_MAX_REQUEST_FRAME_SIZE 9 +#define EXBUS_MAX_REQUEST_FRAME_SIZE 32 //9 #define EXBUS_EX_REQUEST (0x3A) @@ -48,5 +48,7 @@ extern uint8_t jetiExBusRequestFrame[EXBUS_MAX_REQUEST_FRAME_SIZE]; struct serialPort_s; extern struct serialPort_s *jetiExBusPort; +extern bool jetiExBusCanTx; + uint16_t jetiExBusCalcCRC16(uint8_t *pt, uint8_t msgLen); bool jetiExBusInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig); diff --git a/src/main/telemetry/jetiexbus.c b/src/main/telemetry/jetiexbus.c index b0ffad8434..90095d5015 100644 --- a/src/main/telemetry/jetiexbus.c +++ b/src/main/telemetry/jetiexbus.c @@ -138,14 +138,22 @@ const exBusSensor_t jetiExSensors[] = { {"GPS Speed", "m/s", EX_TYPE_22b, DECIMAL_MASK(2)}, {"GPS H-Distance", "m", EX_TYPE_22b, DECIMAL_MASK(0)}, {"GPS H-Direction", "\xB0", EX_TYPE_22b, DECIMAL_MASK(1)}, - {"INAV D2", "", EX_TYPE_DES, 0 }, // device descripton + {"INAV D2", "", EX_TYPE_DES, 0 }, // device descripton {"GPS Heading", "\xB0", EX_TYPE_22b, DECIMAL_MASK(1)}, {"GPS Altitude", "m", EX_TYPE_22b, DECIMAL_MASK(2)}, {"G-Force X", "", EX_TYPE_22b, DECIMAL_MASK(3)}, {"G-Force Y", "", EX_TYPE_22b, DECIMAL_MASK(3)}, {"G-Force Z", "", EX_TYPE_22b, DECIMAL_MASK(3)}, {"RPM", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Trip Distance", "m", EX_TYPE_22b, DECIMAL_MASK(1)} + {"Trip Distance", "m", EX_TYPE_22b, DECIMAL_MASK(1)}, + {"Channel Count", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Timeouts", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Overruns", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Invalid frames", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Frame done", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Request done", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Tel frame lost", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"Request Timeout", "", EX_TYPE_22b, DECIMAL_MASK(0)} }; // after every 15 sensors increment the step by 2 (e.g. ...EX_VAL15, EX_VAL16 = 17) to skip the device description @@ -172,6 +180,14 @@ enum exSensors_e { EX_GFORCE_Z, EX_RPM, EX_TRIP_DISTANCE, + EX_DEBUG0, + EX_DEBUG1, + EX_DEBUG2, + EX_DEBUG3, + EX_DEBUG4, + EX_DEBUG5, + EX_DEBUG6, + EX_DEBUG7 }; union{ @@ -183,7 +199,7 @@ union{ #define JETI_EX_SENSOR_COUNT (ARRAYLEN(jetiExSensors)) -static uint8_t jetiExBusTelemetryFrame[40]; +static uint8_t jetiExBusTelemetryFrame[JETI_EXBUS_TELEMETRY_FRAME_LEN]; static uint8_t jetiExBusTransceiveState = EXBUS_TRANS_RX; static uint8_t firstActiveSensor = 0; static uint32_t exSensorEnabled = 0; @@ -283,6 +299,19 @@ void initJetiExBusTelemetry(void) } #endif + bitArraySet(&exSensorEnabled, EX_DEBUG0); + bitArraySet(&exSensorEnabled, EX_DEBUG1); + bitArraySet(&exSensorEnabled, EX_DEBUG2); + bitArraySet(&exSensorEnabled, EX_DEBUG3); + bitArraySet(&exSensorEnabled, EX_DEBUG4); + bitArraySet(&exSensorEnabled, EX_DEBUG5); + bitArraySet(&exSensorEnabled, EX_DEBUG6); + bitArraySet(&exSensorEnabled, EX_DEBUG7); + + //for(int i = 16; i < 32; ++i) { + // bitArrayClr(&exSensorEnabled, i); + //} + firstActiveSensor = getNextActiveSensor(0); // find the first active sensor } @@ -421,6 +450,23 @@ int32_t getSensorValue(uint8_t sensor) case EX_TRIP_DISTANCE: return getTotalTravelDistance() / 10; + + case EX_DEBUG0: + return debug[0]; + case EX_DEBUG1: + return debug[1]; + case EX_DEBUG2: + return debug[2]; + case EX_DEBUG3: + return debug[3]; + case EX_DEBUG4: + return debug[4]; + case EX_DEBUG5: + return debug[5]; + case EX_DEBUG6: + return debug[6]; + case EX_DEBUG7: + return debug[7]; default: return -1; @@ -509,6 +555,10 @@ void handleJetiExBusTelemetry(void) static uint8_t item = 0; uint32_t timeDiff; + if(!jetiExBusCanTx) { + return; + } + // Check if we shall reset frame position due to time if (jetiExBusRequestState == EXBUS_STATE_RECEIVED) { @@ -518,6 +568,7 @@ void handleJetiExBusTelemetry(void) if (timeDiff > 3000) { // include reserved time jetiExBusRequestState = EXBUS_STATE_ZERO; framesLost++; + //DEBUG_SET(DEBUG_EXBUS, 6, framesLost); return; } diff --git a/src/main/telemetry/jetiexbus.h b/src/main/telemetry/jetiexbus.h index 9c8327db4a..3c6b465ed0 100644 --- a/src/main/telemetry/jetiexbus.h +++ b/src/main/telemetry/jetiexbus.h @@ -17,6 +17,8 @@ #pragma once +#define JETI_EXBUS_TELEMETRY_FRAME_LEN 128 + void initJetiExBusTelemetry(void); void checkJetiExBusTelemetryState(void); void handleJetiExBusTelemetry(void); From 0cbb9754d54b62dbf9603f0eaf2b1484fe535913 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 09:39:36 +0100 Subject: [PATCH 14/23] waring --- .../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_mdma.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_mdma.c b/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_mdma.c index c57e98d3a2..dcd5f41a6b 100644 --- a/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_mdma.c +++ b/lib/main/STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_mdma.c @@ -23,8 +23,10 @@ #ifdef USE_FULL_ASSERT #include "stm32_assert.h" #else +#ifndef assert_param #define assert_param(expr) ((void)0U) #endif +#endif /** @addtogroup STM32H7xx_LL_Driver * @{ From 6970048771dcc6adfb6a338384b0025cd0fd8684 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:36:10 +0100 Subject: [PATCH 15/23] Renive tranceiver state tracking --- src/main/telemetry/jetiexbus.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/telemetry/jetiexbus.c b/src/main/telemetry/jetiexbus.c index 90095d5015..bcc1ac9c51 100644 --- a/src/main/telemetry/jetiexbus.c +++ b/src/main/telemetry/jetiexbus.c @@ -200,7 +200,6 @@ union{ #define JETI_EX_SENSOR_COUNT (ARRAYLEN(jetiExSensors)) static uint8_t jetiExBusTelemetryFrame[JETI_EXBUS_TELEMETRY_FRAME_LEN]; -static uint8_t jetiExBusTransceiveState = EXBUS_TRANS_RX; static uint8_t firstActiveSensor = 0; static uint32_t exSensorEnabled = 0; @@ -574,7 +573,6 @@ void handleJetiExBusTelemetry(void) if ((jetiExBusRequestFrame[EXBUS_HEADER_DATA_ID] == EXBUS_EX_REQUEST) && (jetiExBusCalcCRC16(jetiExBusRequestFrame, jetiExBusRequestFrame[EXBUS_HEADER_MSG_LEN]) == 0)) { if (serialRxBytesWaiting(jetiExBusPort) == 0) { - jetiExBusTransceiveState = EXBUS_TRANS_TX; item = sendJetiExBusTelemetry(jetiExBusRequestFrame[EXBUS_HEADER_PACKET_ID], item); jetiExBusRequestState = EXBUS_STATE_PROCESSED; return; @@ -585,13 +583,7 @@ void handleJetiExBusTelemetry(void) } } - // check the state if transmit is ready - if (jetiExBusTransceiveState == EXBUS_TRANS_IS_TX_COMPLETED) { - if (isSerialTransmitBufferEmpty(jetiExBusPort)) { - jetiExBusTransceiveState = EXBUS_TRANS_RX; - jetiExBusRequestState = EXBUS_STATE_ZERO; - } - } + jetiExBusRequestState = EXBUS_STATE_ZERO; } uint8_t sendJetiExBusTelemetry(uint8_t packetID, uint8_t item) @@ -638,7 +630,7 @@ uint8_t sendJetiExBusTelemetry(uint8_t packetID, uint8_t item) } serialWriteBuf(jetiExBusPort, jetiExBusTelemetryFrame, jetiExBusTelemetryFrame[EXBUS_HEADER_MSG_LEN]); - jetiExBusTransceiveState = EXBUS_TRANS_IS_TX_COMPLETED; + jetiExBusCanTx = false; return item; } From 0c36a5c23f859f13ce37942a597922f879bf07cb Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:47:12 +0100 Subject: [PATCH 16/23] Only add debug sensors to telemetry, if debug is enabled. Also remove instrumentation in rx code, as it did not provide any insights to the issues. --- src/main/rx/jetiexbus.c | 10 ---------- src/main/telemetry/jetiexbus.c | 35 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/main/rx/jetiexbus.c b/src/main/rx/jetiexbus.c index c3855042ca..58dcde04b3 100644 --- a/src/main/rx/jetiexbus.c +++ b/src/main/rx/jetiexbus.c @@ -129,7 +129,6 @@ void jetiExBusDecodeChannelFrame(uint8_t *exBusFrame) case EXBUS_CHANNELDATA_DATA_REQUEST: // not yet specified case EXBUS_CHANNELDATA: - DEBUG_SET(DEBUG_EXBUS, 0, receivedChannelCount); for (uint8_t i = 0; i < receivedChannelCount; i++) { frameAddr = EXBUS_HEADER_LEN + (i * 2); value = ((uint16_t)exBusFrame[frameAddr + 1]) << 8; @@ -174,7 +173,6 @@ static void jetiExBusDataReceive(uint16_t c, void *data) // Check if we shall reset frame position due to time if (cmpTimeUs(now, jetiExBusTimeLast) > JETIEXBUS_MIN_FRAME_GAP) { jetiExBusFrameReset(); - DEBUG_SET(DEBUG_EXBUS, 1, resetTimeCount++); jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_ZERO; } @@ -211,7 +209,6 @@ static void jetiExBusDataReceive(uint16_t c, void *data) if (jetiExBusFramePosition == jetiExBusFrameMaxSize) { // frame overrun jetiExBusFrameReset(); - DEBUG_SET(DEBUG_EXBUS, 2, resetOverrunCount++); jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_ZERO; @@ -224,23 +221,17 @@ static void jetiExBusDataReceive(uint16_t c, void *data) // Check the header for the message length if (jetiExBusFramePosition == EXBUS_HEADER_LEN) { - DEBUG_SET(DEBUG_EXBUS, 4, 0); - DEBUG_SET(DEBUG_EXBUS, 5, 0); - if ((jetiExBusFrameState == EXBUS_STATE_IN_PROGRESS) && (jetiExBusFrame[EXBUS_HEADER_MSG_LEN] <= EXBUS_MAX_CHANNEL_FRAME_SIZE)) { jetiExBusFrameLength = jetiExBusFrame[EXBUS_HEADER_MSG_LEN]; - DEBUG_SET(DEBUG_EXBUS, 4, 1); return; } if ((jetiExBusRequestState == EXBUS_STATE_IN_PROGRESS) && (jetiExBusFrame[EXBUS_HEADER_MSG_LEN] <= EXBUS_MAX_REQUEST_FRAME_SIZE)) { jetiExBusFrameLength = jetiExBusFrame[EXBUS_HEADER_MSG_LEN]; - DEBUG_SET(DEBUG_EXBUS, 5, 1); return; } jetiExBusFrameReset(); // not a valid frame - DEBUG_SET(DEBUG_EXBUS, 3, resetInvalidCount++); jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_ZERO; return; @@ -256,7 +247,6 @@ static void jetiExBusDataReceive(uint16_t c, void *data) jetiExBusFrameState = EXBUS_STATE_ZERO; jetiExBusRequestState = EXBUS_STATE_RECEIVED; jetiTimeStampRequest = now; - DEBUG_SET(DEBUG_EXBUS, 7, now); } jetiExBusFrameReset(); diff --git a/src/main/telemetry/jetiexbus.c b/src/main/telemetry/jetiexbus.c index bcc1ac9c51..56365bbbdb 100644 --- a/src/main/telemetry/jetiexbus.c +++ b/src/main/telemetry/jetiexbus.c @@ -146,14 +146,14 @@ const exBusSensor_t jetiExSensors[] = { {"G-Force Z", "", EX_TYPE_22b, DECIMAL_MASK(3)}, {"RPM", "", EX_TYPE_22b, DECIMAL_MASK(0)}, {"Trip Distance", "m", EX_TYPE_22b, DECIMAL_MASK(1)}, - {"Channel Count", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Timeouts", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Overruns", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Invalid frames", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Frame done", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Request done", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Tel frame lost", "", EX_TYPE_22b, DECIMAL_MASK(0)}, - {"Request Timeout", "", EX_TYPE_22b, DECIMAL_MASK(0)} + {"DEBUG0", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG1", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG2", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG3", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG4", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG5", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG6", "", EX_TYPE_22b, DECIMAL_MASK(0)}, + {"DEBUG7", "", EX_TYPE_22b, DECIMAL_MASK(0)} }; // after every 15 sensors increment the step by 2 (e.g. ...EX_VAL15, EX_VAL16 = 17) to skip the device description @@ -298,14 +298,16 @@ void initJetiExBusTelemetry(void) } #endif - bitArraySet(&exSensorEnabled, EX_DEBUG0); - bitArraySet(&exSensorEnabled, EX_DEBUG1); - bitArraySet(&exSensorEnabled, EX_DEBUG2); - bitArraySet(&exSensorEnabled, EX_DEBUG3); - bitArraySet(&exSensorEnabled, EX_DEBUG4); - bitArraySet(&exSensorEnabled, EX_DEBUG5); - bitArraySet(&exSensorEnabled, EX_DEBUG6); - bitArraySet(&exSensorEnabled, EX_DEBUG7); + if (debugMode != DEBUG_NONE) { + bitArraySet(&exSensorEnabled, EX_DEBUG0); + bitArraySet(&exSensorEnabled, EX_DEBUG1); + bitArraySet(&exSensorEnabled, EX_DEBUG2); + bitArraySet(&exSensorEnabled, EX_DEBUG3); + bitArraySet(&exSensorEnabled, EX_DEBUG4); + bitArraySet(&exSensorEnabled, EX_DEBUG5); + bitArraySet(&exSensorEnabled, EX_DEBUG6); + bitArraySet(&exSensorEnabled, EX_DEBUG7); + } //for(int i = 16; i < 32; ++i) { // bitArrayClr(&exSensorEnabled, i); @@ -567,7 +569,6 @@ void handleJetiExBusTelemetry(void) if (timeDiff > 3000) { // include reserved time jetiExBusRequestState = EXBUS_STATE_ZERO; framesLost++; - //DEBUG_SET(DEBUG_EXBUS, 6, framesLost); return; } From 111d3f674a549237b2f081730e9ccc41857082d0 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:47:52 +0100 Subject: [PATCH 17/23] Remove DEBUG_EXBUS --- src/main/build/debug.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/build/debug.h b/src/main/build/debug.h index c465220363..0bb74bac1a 100644 --- a/src/main/build/debug.h +++ b/src/main/build/debug.h @@ -79,7 +79,6 @@ typedef enum { DEBUG_GPS, DEBUG_LULU, DEBUG_SBUS2, - DEBUG_EXBUS, DEBUG_COUNT // also update debugModeNames in cli.c } debugType_e; From f2acee1779054f59f14eb38d3e4d6d52f485c3c3 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:48:31 +0100 Subject: [PATCH 18/23] remove EXBUS debug mode --- src/main/fc/settings.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/fc/settings.yaml b/src/main/fc/settings.yaml index d17899bac8..5fe2926163 100644 --- a/src/main/fc/settings.yaml +++ b/src/main/fc/settings.yaml @@ -84,7 +84,7 @@ tables: "VIBE", "CRUISE", "REM_FLIGHT_TIME", "SMARTAUDIO", "ACC", "NAV_YAW", "PCF8574", "DYN_GYRO_LPF", "AUTOLEVEL", "ALTITUDE", "AUTOTRIM", "AUTOTUNE", "RATE_DYNAMICS", "LANDING", "POS_EST", - "ADAPTIVE_FILTER", "HEADTRACKER", "GPS", "LULU", "SBUS2", "EXBUS"] + "ADAPTIVE_FILTER", "HEADTRACKER", "GPS", "LULU", "SBUS2"] - name: aux_operator values: ["OR", "AND"] enum: modeActivationOperator_e From 990be67cb1c83b670fe809946a915b60696ae93b Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:49:58 +0100 Subject: [PATCH 19/23] remove instrumentation variables --- src/main/rx/jetiexbus.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/rx/jetiexbus.c b/src/main/rx/jetiexbus.c index 58dcde04b3..94177187b2 100644 --- a/src/main/rx/jetiexbus.c +++ b/src/main/rx/jetiexbus.c @@ -160,9 +160,6 @@ void jetiExBusFrameReset(void) // Receive ISR callback static void jetiExBusDataReceive(uint16_t c, void *data) { - static uint32_t resetTimeCount = 0; - static uint32_t resetOverrunCount = 0; - static uint32_t resetInvalidCount = 0; UNUSED(data); static timeUs_t jetiExBusTimeLast = 0; From 53c764ee9ce8ba0390f25fd51fa5ed25f2c06f1f Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:57:15 +0100 Subject: [PATCH 20/23] Revert "Update gcc from 13.2 to 13.3 as an experiment." This reverts commit ecda71571c63ac4cf814e59cea32f9e54c0ef157. --- cmake/arm-none-eabi-checks.cmake | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/arm-none-eabi-checks.cmake b/cmake/arm-none-eabi-checks.cmake index 492ce8fd0c..f31a26c3e3 100644 --- a/cmake/arm-none-eabi-checks.cmake +++ b/cmake/arm-none-eabi-checks.cmake @@ -2,18 +2,18 @@ include(gcc) set(arm_none_eabi_triplet "arm-none-eabi") # Keep version in sync with the distribution files below -set(arm_none_eabi_gcc_version "13.3.1") +set(arm_none_eabi_gcc_version "13.2.1") # This is the output directory "pretty" name and URI name prefix -set(base_dir_name "arm-gnu-toolchain-13.3.rel1") +set(base_dir_name "arm-gnu-toolchain-13.2.rel1") # This is the name inside the archive, which is no longer evincible from URI, alas -set(archive_base_dir_name "arm-gnu-toolchain-13.3.rel1") -set(arm_none_eabi_base_url "https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/${base_dir_name}") +set(archive_base_dir_name "arm-gnu-toolchain-13.2.Rel1") +set(arm_none_eabi_base_url "https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/${base_dir_name}") # suffix and checksum -set(arm_none_eabi_win32 "mingw-w64-i686-arm-none-eabi.zip" 39d9882ca0eb475e81170ae826c1435d) -set(arm_none_eabi_linux_amd64 "x86_64-arm-none-eabi.tar.xz" 0601a9588bc5b9c99ad2b56133b7f118) -set(arm_none_eabi_linux_aarch64 "aarch64-arm-none-eabi.tar.xz" 303102d97b877ebbeb36b3158994b218) -set(arm_none_eabi_darwin_amd64 "darwin-x86_64-arm-none-eabi.tar.xz" 4bb141e44b831635fde4e8139d470f1f) -set(arm_none_eabi_darwin_aarch64 "darwin-arm64-arm-none-eabi.tar.xz" f1c18320bb3121fa89dca11399273f4e) +set(arm_none_eabi_win32 "mingw-w64-i686-arm-none-eabi.zip" 7fd677088038cdf82f33f149e2e943ee) +set(arm_none_eabi_linux_amd64 "x86_64-arm-none-eabi.tar.xz" 791754852f8c18ea04da7139f153a5b7) +set(arm_none_eabi_linux_aarch64 "aarch64-arm-none-eabi.tar.xz" 5a08122e6d4caf97c6ccd1d29e62599c) +set(arm_none_eabi_darwin_amd64 "darwin-x86_64-arm-none-eabi.tar.xz" 41d49840b0fc676d2ae35aab21a58693) +set(arm_none_eabi_darwin_aarch64 "darwin-arm64-arm-none-eabi.tar.xz" 2c43e9d72206c1f81227b0a685df5ea6) function(host_uname_machine var) # We need to call uname -m manually, since at the point From 699ce844e6e745e9e90893db8594760057906318 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 11:39:18 +0100 Subject: [PATCH 21/23] remove commented out debug code --- src/main/telemetry/jetiexbus.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/telemetry/jetiexbus.c b/src/main/telemetry/jetiexbus.c index 56365bbbdb..f5fcda865f 100644 --- a/src/main/telemetry/jetiexbus.c +++ b/src/main/telemetry/jetiexbus.c @@ -309,10 +309,6 @@ void initJetiExBusTelemetry(void) bitArraySet(&exSensorEnabled, EX_DEBUG7); } - //for(int i = 16; i < 32; ++i) { - // bitArrayClr(&exSensorEnabled, i); - //} - firstActiveSensor = getNextActiveSensor(0); // find the first active sensor } From 6830332b491de4f3ab1c8f59fd5a9e5047a7fe52 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 16:37:03 +0100 Subject: [PATCH 22/23] Mark some global variables used in the interrupt handler as volatile, and flag functions as NOINLINE --- src/main/rx/jetiexbus.c | 10 +++++----- src/main/rx/jetiexbus.h | 6 +++--- src/main/telemetry/jetiexbus.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/rx/jetiexbus.c b/src/main/rx/jetiexbus.c index 94177187b2..a793bdae2c 100644 --- a/src/main/rx/jetiexbus.c +++ b/src/main/rx/jetiexbus.c @@ -85,15 +85,15 @@ serialPort_t *jetiExBusPort; -uint32_t jetiTimeStampRequest = 0; +volatile uint32_t jetiTimeStampRequest = 0; -bool jetiExBusCanTx = false; +volatile bool jetiExBusCanTx = false; static uint8_t jetiExBusFramePosition; static uint8_t jetiExBusFrameLength; -static uint8_t jetiExBusFrameState = EXBUS_STATE_ZERO; -uint8_t jetiExBusRequestState = EXBUS_STATE_ZERO; +static volatile uint8_t jetiExBusFrameState = EXBUS_STATE_ZERO; +volatile uint8_t jetiExBusRequestState = EXBUS_STATE_ZERO; // Use max values for ram areas static uint8_t jetiExBusChannelFrame[EXBUS_MAX_CHANNEL_FRAME_SIZE]; @@ -158,7 +158,7 @@ void jetiExBusFrameReset(void) */ // Receive ISR callback -static void jetiExBusDataReceive(uint16_t c, void *data) +FAST_CODE NOINLINE static void jetiExBusDataReceive(uint16_t c, void *data) { UNUSED(data); diff --git a/src/main/rx/jetiexbus.h b/src/main/rx/jetiexbus.h index 779788effe..5029cad7c3 100644 --- a/src/main/rx/jetiexbus.h +++ b/src/main/rx/jetiexbus.h @@ -42,13 +42,13 @@ enum { EXBUS_STATE_PROCESSED }; -extern uint8_t jetiExBusRequestState; -extern uint32_t jetiTimeStampRequest; +extern volatile uint8_t jetiExBusRequestState; +extern volatile uint32_t jetiTimeStampRequest; extern uint8_t jetiExBusRequestFrame[EXBUS_MAX_REQUEST_FRAME_SIZE]; struct serialPort_s; extern struct serialPort_s *jetiExBusPort; -extern bool jetiExBusCanTx; +extern volatile bool jetiExBusCanTx; uint16_t jetiExBusCalcCRC16(uint8_t *pt, uint8_t msgLen); bool jetiExBusInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig); diff --git a/src/main/telemetry/jetiexbus.c b/src/main/telemetry/jetiexbus.c index f5fcda865f..58d3517fa2 100644 --- a/src/main/telemetry/jetiexbus.c +++ b/src/main/telemetry/jetiexbus.c @@ -546,7 +546,7 @@ void checkJetiExBusTelemetryState(void) return; } -void handleJetiExBusTelemetry(void) +FAST_CODE NOINLINE void handleJetiExBusTelemetry(void) { static uint16_t framesLost = 0; // only for debug static uint8_t item = 0; From bbc1d4e7b98343430d5ec1f99a0bfb18e4f134c3 Mon Sep 17 00:00:00 2001 From: Marcelo Bezerra <23555060+mmosca@users.noreply.github.com> Date: Tue, 25 Mar 2025 16:59:09 +0100 Subject: [PATCH 23/23] some f7 fcs were overflowing fast ram --- src/main/telemetry/jetiexbus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/telemetry/jetiexbus.c b/src/main/telemetry/jetiexbus.c index 58d3517fa2..56073e54cc 100644 --- a/src/main/telemetry/jetiexbus.c +++ b/src/main/telemetry/jetiexbus.c @@ -546,7 +546,7 @@ void checkJetiExBusTelemetryState(void) return; } -FAST_CODE NOINLINE void handleJetiExBusTelemetry(void) +void NOINLINE handleJetiExBusTelemetry(void) { static uint16_t framesLost = 0; // only for debug static uint8_t item = 0;