Reject a numeric DEFAULT_SERIALn_PROTOCOL/HAL_SERIALn_PROTOCOL/HAL_OTGn_PROTOCOL
value during hwdef processing, and convert the in-tree boards that used numbers
to the equivalent SerialProtocol_* name (value-preserving).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CORVON 743V2 is a 10-motor / 2-servo flight controller based on the
STM32H743VIH6. ICM-42688P and BMI088 IMUs on SPI3, BMP581 baro and
IST8310 compass on the internal I2C2 bus, dual analog battery monitor,
analog airspeed and RSSI, 8 UARTs, FDCAN1 and microSD logging.
These boards are based on FMUv3 but, unlike the Pixhawk2/Cube, do not
have an IMU heater. Now that the heater is enabled per-board rather than
inherited from fmuv3, these boards simply do not enable it.
fmuv3.inc no longer enables HAL_HAVE_IMU_HEATER (and fmuv3-bdshot.inc,
which now includes it, inherits that). Boards based on FMUv3 declare the
IMU heater explicitly, so whether a board has a heater is recorded on the
board itself rather than inherited.
The fmuv3 / fmuv3-bdshot reference targets keep the heater in their own
hwdef.dat. Boards which enable the heater but set no HAL_IMU_TEMP_DEFAULT
(and do not set BRD_HEAT_TARG in defaults.parm) carry a comment querying
whether they really have a heater. No functional change.
fmuv3-bdshot.inc was a complete sideways copy of the fmuv3 definition
that had to be kept in sync by hand. It now includes fmuv3.inc and
overrides only what differs for bi-directional dshot: PWM2/PWM3 gain
BIDIR, PWM5/PWM6 gain NODMA, SPI4 and its devices are removed to free up
DMA streams, and the DMA priorities are set accordingly.
The standalone copy lacked the Solo-specific, 1M-flash-check and external
IST8310 probing defines that fmuv3 carries, so those are undef'd to keep
behaviour identical. The generated hwdef.h for fmuv3-bdshot,
Pixhawk1-bdshot and Pixhawk1-1M-bdshot is byte-for-byte unchanged.
After the rename of the FMUv3 hardware definitions to .inc, add a thin
hwdef.dat for each board which simply includes its .inc. This keeps the
fmuv3 and fmuv3-bdshot build targets working and lets other boards share
the .inc without the board-level hwdef.dat. No functional change.
FCAPv3 shares the TBS LUCID H7 electrical design but has no MAX7456: analog
OSD comes from an on-board STM32G431 co-processor fed MSP DisplayPort over
UART5. RC input is on UART4 (SBUS), leaving USART6 as a spare. Motor pads are
numbered S1-S10 from PA0 in silk order.
ChibiOS now reports the MSIPLL-locked 4MHz MSI range at its real
3.998MHz, giving a 79.96MHz SYSCLK rather than the nominal 80MHz. That
tripped the HAL_EXPECTED_SYSCLOCK static_assert on LSE-clocked L4 boards.
Also define HAL_CAN_ALLOW_INEXACT_CLOCK for CAN timing.
computeTimings required PCLK to be an exact integer multiple of the
target bitrate. On MSI-PLL/LSE clocked L4 boards PCLK is 79.96MHz, so the
1Mbit search truncated 79.96 to 79 (prime), found no solution, and left
the CAN interface uninitialised. Round the prescaler search to nearest
and accept the closest achievable bitrate within 1%. This is a no-op
where PCLK is an exact multiple, so other boards are unaffected.
the H723/H725/H730/H733/H735 parts have FDCAN3 and the updated
ChibiOS FDCANv2 driver requires STM32_IRQ_FDCAN3_PRIORITY to be
defined. This fixes the build of BotBloxDroneNet
The 12V output on the POWER AUX connector is gated by a BEC enable on
PG4. It was driven on at boot with no way to control it, and the enable
was mislabeled VDD_5V_PERIPH_EN even though it drives the 12V rail, not
5V.
Rename it to VDD_12V_PERIPH_EN, give it a GPIO, and pre-map it to RELAY1
via RELAY1_PIN_DEFAULT so it can be switched from an RC channel
(RELAY1_FUNCTION + RCx_OPTION). Default behavior is unchanged: the rail
is still on at boot via the pin's OUTPUT HIGH state.
LIS2MDL and IIS2MDC are the same ST silicon with identical register
maps, WHO_AM_I, I2C address and sensitivity. Remove the separate
LIS2MDL driver entirely and switch boards that referenced it to IIS2MDC.
AIRBRAINH743 COMPASS line changed from LIS2MDL to IIS2MDC.
ESP32 Build / build (esp32buzz, 10) (push) Has been cancelled
ESP32 Build / build (esp32s3empty, 10) (push) Has been cancelled
Macos Build / build (sitl) (push) Has been cancelled
QURT Build / build (push) Has been cancelled
test ccache / build (10, chibios) (push) Has been cancelled
test chibios / build (CubeOrange-ODID, 10, chibios) (push) Has been cancelled
test chibios / build (CubeOrange-PPP, 10, chibios) (push) Has been cancelled
test chibios / build (CubeOrange-bootloader, 10, chibios) (push) Has been cancelled
test chibios / build (CubeRedPrimary-bootloader, 10, chibios) (push) Has been cancelled
test chibios / build (Pixhawk6X-PPPGW, 10, chibios) (push) Has been cancelled
test chibios / build (SOHW, 10, chibios) (push) Has been cancelled
test chibios / build (build-options-defaults-test, 10, chibios) (push) Has been cancelled
test chibios / build (configure-all, 10, chibios) (push) Has been cancelled
test chibios / build (fmuv2-plane, 10, chibios) (push) Has been cancelled
test chibios / build (fmuv3, 10, chibios) (push) Has been cancelled
test chibios / build (fmuv3-bootloader, 10, chibios) (push) Has been cancelled
test chibios / build (iofirmware, 10, chibios) (push) Has been cancelled
test chibios / build (new-check, 10, chibios) (push) Has been cancelled
test chibios / build (periph-build, 10, chibios) (push) Has been cancelled
test chibios / build (revo-mini, 10, chibios) (push) Has been cancelled
test chibios / build (signing, 10, chibios) (push) Has been cancelled
test chibios / build (stm32f7, 10, chibios) (push) Has been cancelled
test chibios / build (stm32h7, 10, chibios) (push) Has been cancelled
test chibios / build (stm32h7-debug, 10, chibios) (push) Has been cancelled
test dds / build (sitl) (push) Has been cancelled
test Linux SBC / build (bbbmini, armhf) (push) Has been cancelled
test Linux SBC / build (bebop, armhf) (push) Has been cancelled
test Linux SBC / build (bhat, armhf) (push) Has been cancelled
test Linux SBC / build (canzero, armhf) (push) Has been cancelled
test Linux SBC / build (linux, base) (push) Has been cancelled
test Linux SBC / build (navigator, armhf-musl) (push) Has been cancelled
test Linux SBC / build (navigator64, aarch64) (push) Has been cancelled
test Linux SBC / build (navio, armhf) (push) Has been cancelled
test Linux SBC / build (navio2, armhf) (push) Has been cancelled
test Linux SBC / build (pxfmini, armhf) (push) Has been cancelled
test Linux SBC / build (t3-gem-o1, aarch64) (push) Has been cancelled
test replay / build (replay, base) (push) Has been cancelled
test replay / build (replay, clang) (push) Has been cancelled
test scripts / build (astyle-cleanliness) (push) Has been cancelled
test scripts / build (logger_metadata) (push) Has been cancelled
test scripts / build (param-file-validation) (push) Has been cancelled
test scripts / build (param_parse) (push) Has been cancelled
test blimp / build (base) (push) Has been cancelled
test blimp / build (clang) (push) Has been cancelled
test blimp / autotest (sitltest-blimp) (push) Has been cancelled
test copter / build (base) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1a) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1c) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1d) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1e) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests2b) (push) Has been cancelled
test copter / build-gcc-heli (push) Has been cancelled
test copter / autotest-heli (sitltest-heli) (push) Has been cancelled
test ap_periph / build-gcc-ap_periph (push) Has been cancelled
test plane / autotest (sitltest-plane-tests1a) (push) Has been cancelled
test plane / autotest (sitltest-plane-tests1b) (push) Has been cancelled
test plane / autotest (sitltest-quadplane) (push) Has been cancelled
test rover / build (base) (push) Has been cancelled
test rover / autotest (sitltest-rover) (push) Has been cancelled
test rover / autotest (sitltest-sailboat) (push) Has been cancelled
test sub / build (base) (push) Has been cancelled
test sub / build (clang) (push) Has been cancelled
test sub / autotest (sitltest-sub) (push) Has been cancelled
test tracker / build (clang) (push) Has been cancelled
test tracker / autotest (sitltest-tracker) (push) Has been cancelled
test unit tests and sitl building / build (examples, clang) (push) Has been cancelled
test unit tests and sitl building / build (sitl, clang) (push) Has been cancelled
test unit tests and sitl building / build (unit-tests, base) (push) Has been cancelled
test unit tests and sitl building / build (unit-tests, clang) (push) Has been cancelled
test scripting / test-scripting (push) Has been cancelled
colcon build/test / build-test (push) Has been cancelled
Macos Build / build (CubeOrange) (push) Has been cancelled
pre-commit / ci (push) Has been cancelled
test chibios / build (CubeOrange-EKF2, 10, chibios) (push) Has been cancelled
test chibios / build (MatekF405-Wing, 10, chibios) (push) Has been cancelled
test chibios / build (revo-bootloader, 10, chibios) (push) Has been cancelled
test dds / build (stm32h7) (push) Has been cancelled
test Linux SBC / build (erlebrain2, armhf) (push) Has been cancelled
test Linux SBC / build (pxf, armhf) (push) Has been cancelled
test scripts / build (check_autotest_options) (push) Has been cancelled
test scripts / build (python-cleanliness) (push) Has been cancelled
test scripts / build (shellcheck) (push) Has been cancelled
test scripts / build (validate_board_list) (push) Has been cancelled
test copter / build (clang) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1b) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests2a) (push) Has been cancelled
test ap_periph / autotest-can (sitltest-can) (push) Has been cancelled
test plane / build (base) (push) Has been cancelled
test plane / build (clang) (push) Has been cancelled
test plane / autotest (sitltest-plane-tests1c) (push) Has been cancelled
test rover / build (clang) (push) Has been cancelled
test rover / autotest (sitltest-balancebot) (push) Has been cancelled
test tracker / build (base) (push) Has been cancelled
test unit tests and sitl building / build (examples, base) (push) Has been cancelled
test unit tests and sitl building / build (sitl, base) (push) Has been cancelled
PF12 is the SCALED_VDD_3V3_SENSORS4 ADC input per the schematic; the
actual VDD_5V_HIPOWER_nEN line is on PG10, which is what the
application hwdef already uses. The bootloader was driving the wrong
pin and never asserting HIPOWER during boot.
All three IMU candidates on the ARKV6X — IIM-42652, ICM-42688, and
IIM-42653 — support 19-bit high-resolution FIFO sampling on the
Invensensev3 driver. Enable it for all three instances.
The original bdshot variant only enabled BIDIR on TIM5 channels (PWM
1-4), leaving PWM 5-6 on TIM4 as plain DShot without telemetry. Mirror
the Pixhawk6X-bdshot pattern by enabling BIDIR on TIM4_CH2 and
TIM4_CH3 as well.
Add DMA_NOSHARE TIM5* TIM4* so motor output DMA streams cannot be
preempted by other peripherals — the parent ARKV6X DMA_PRIORITY places
TIM* last, which can starve bdshot under load.
ESP32 Build / build (esp32buzz, 10) (push) Has been cancelled
ESP32 Build / build (esp32s3empty, 10) (push) Has been cancelled
Macos Build / build (sitl) (push) Has been cancelled
QURT Build / build (push) Has been cancelled
test ccache / build (10, chibios) (push) Has been cancelled
test chibios / build (CubeOrange-ODID, 10, chibios) (push) Has been cancelled
test chibios / build (CubeOrange-PPP, 10, chibios) (push) Has been cancelled
test chibios / build (CubeOrange-bootloader, 10, chibios) (push) Has been cancelled
test chibios / build (CubeRedPrimary-bootloader, 10, chibios) (push) Has been cancelled
test chibios / build (Pixhawk6X-PPPGW, 10, chibios) (push) Has been cancelled
test chibios / build (SOHW, 10, chibios) (push) Has been cancelled
test chibios / build (build-options-defaults-test, 10, chibios) (push) Has been cancelled
test chibios / build (configure-all, 10, chibios) (push) Has been cancelled
test chibios / build (fmuv2-plane, 10, chibios) (push) Has been cancelled
test chibios / build (fmuv3, 10, chibios) (push) Has been cancelled
test chibios / build (fmuv3-bootloader, 10, chibios) (push) Has been cancelled
test chibios / build (iofirmware, 10, chibios) (push) Has been cancelled
test chibios / build (new-check, 10, chibios) (push) Has been cancelled
test chibios / build (periph-build, 10, chibios) (push) Has been cancelled
test chibios / build (revo-mini, 10, chibios) (push) Has been cancelled
test chibios / build (signing, 10, chibios) (push) Has been cancelled
test chibios / build (stm32f7, 10, chibios) (push) Has been cancelled
test chibios / build (stm32h7, 10, chibios) (push) Has been cancelled
test chibios / build (stm32h7-debug, 10, chibios) (push) Has been cancelled
test dds / build (sitl) (push) Has been cancelled
test Linux SBC / build (bbbmini, armhf) (push) Has been cancelled
test Linux SBC / build (bebop, armhf) (push) Has been cancelled
test Linux SBC / build (bhat, armhf) (push) Has been cancelled
test Linux SBC / build (canzero, armhf) (push) Has been cancelled
test Linux SBC / build (navigator, armhf-musl) (push) Has been cancelled
test Linux SBC / build (navigator64, aarch64) (push) Has been cancelled
test Linux SBC / build (navio, armhf) (push) Has been cancelled
test Linux SBC / build (navio2, armhf) (push) Has been cancelled
test Linux SBC / build (pxfmini, armhf) (push) Has been cancelled
test Linux SBC / build (t3-gem-o1, aarch64) (push) Has been cancelled
test replay / build (replay, base) (push) Has been cancelled
test replay / build (replay, clang) (push) Has been cancelled
test scripts / build (astyle-cleanliness) (push) Has been cancelled
test scripts / build (check_autotest_options) (push) Has been cancelled
test scripts / build (logger_metadata) (push) Has been cancelled
test scripts / build (param-file-validation) (push) Has been cancelled
test scripts / build (param_parse) (push) Has been cancelled
test blimp / build (base) (push) Has been cancelled
test blimp / build (clang) (push) Has been cancelled
test copter / build (base) (push) Has been cancelled
test copter / build-gcc-heli (push) Has been cancelled
test ap_periph / build-gcc-ap_periph (push) Has been cancelled
test rover / build (base) (push) Has been cancelled
test sub / build (base) (push) Has been cancelled
test sub / build (clang) (push) Has been cancelled
test tracker / build (clang) (push) Has been cancelled
test unit tests and sitl building / build (examples, clang) (push) Has been cancelled
test unit tests and sitl building / build (sitl, clang) (push) Has been cancelled
test unit tests and sitl building / build (unit-tests, base) (push) Has been cancelled
test unit tests and sitl building / build (unit-tests, clang) (push) Has been cancelled
test blimp / autotest (sitltest-blimp) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1a) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1c) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1d) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1e) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests2b) (push) Has been cancelled
test copter / autotest-heli (sitltest-heli) (push) Has been cancelled
test plane / autotest (sitltest-plane-tests1a) (push) Has been cancelled
test plane / autotest (sitltest-plane-tests1b) (push) Has been cancelled
test plane / autotest (sitltest-quadplane) (push) Has been cancelled
test rover / autotest (sitltest-rover) (push) Has been cancelled
test rover / autotest (sitltest-sailboat) (push) Has been cancelled
test sub / autotest (sitltest-sub) (push) Has been cancelled
test tracker / autotest (sitltest-tracker) (push) Has been cancelled
test Linux SBC / build (linux, base) (push) Has been cancelled
colcon build/test / build-test (push) Has been cancelled
Macos Build / build (CubeOrange) (push) Has been cancelled
pre-commit / ci (push) Has been cancelled
test chibios / build (CubeOrange-EKF2, 10, chibios) (push) Has been cancelled
test chibios / build (MatekF405-Wing, 10, chibios) (push) Has been cancelled
test chibios / build (revo-bootloader, 10, chibios) (push) Has been cancelled
test dds / build (stm32h7) (push) Has been cancelled
test Linux SBC / build (erlebrain2, armhf) (push) Has been cancelled
test Linux SBC / build (pxf, armhf) (push) Has been cancelled
test scripts / build (python-cleanliness) (push) Has been cancelled
test scripts / build (shellcheck) (push) Has been cancelled
test scripts / build (validate_board_list) (push) Has been cancelled
test copter / build (clang) (push) Has been cancelled
test plane / build (base) (push) Has been cancelled
test plane / build (clang) (push) Has been cancelled
test rover / build (clang) (push) Has been cancelled
test tracker / build (base) (push) Has been cancelled
test unit tests and sitl building / build (examples, base) (push) Has been cancelled
test unit tests and sitl building / build (sitl, base) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests1b) (push) Has been cancelled
test copter / autotest (sitltest-copter-tests2a) (push) Has been cancelled
test ap_periph / autotest-can (sitltest-can) (push) Has been cancelled
test plane / autotest (sitltest-plane-tests1c) (push) Has been cancelled
test rover / autotest (sitltest-balancebot) (push) Has been cancelled
Rename STM32_I2C_I2Cn_IRQ_PRIORITY to STM32_IRQ_I2Cn_PRIORITY to
match the naming used by the kernel v9 I2Cv4 driver, mirroring
the same rename already applied to stm32g4_mcuconf.h.
The ChibiOS I2Cv4 LLD (used on STM32G0/G4/C0/U0/U3/H5/L4+) uses a
single DMA channel per I2C peripheral, shared between TX and RX,
configured via STM32_I2C_I2Cx_DMA_CHANNEL. The previous code
emitted the separate STM32_I2C_I2Cx_RX/TX_DMA_STREAM defines used
by I2Cv2/I2Cv3, which no longer satisfy the I2Cv4 driver.
Detect I2Cv4 MCUs from CHIBIOS_PLATFORM_MK, allocate a single DMA
channel per I2C peripheral in dma_resolver.py (no _RX/_TX split),
and generate HAL_I2Cn_CONFIG entries that feed the single channel
into the shared DMA slot with SHARED_DMA_NONE as the partner.
Also replace the unconditional STM32_I2C_USE_I2Cn TRUE lines in
stm32g4_mcuconf.h with #ifndef-guarded defaults to FALSE, so
boards only enable the I2C peripherals their hwdef actually uses.
Without this, the I2Cv4 driver demanded DMA channels for every
I2C peripheral on every G4 board regardless of pin usage.
The ROMFS / ROMFS_WILDCARD / ROMFS_DIRECTORY hwdef keywords were
previously only understood by the ChibiOS hwdef parser, which has
duplicated implementations of romfs_add / romfs_wildcard / romfs_add_dir
and a write_ROMFS step that publishes env_vars['ROMFS_FILES']. Lift
all of that into the base HWDef class so any HAL with a hwdef parser
(SITL, future HALs) gets ROMFS handling for free.
- Base hwdef.py owns self.romfs, the romfs_*() methods, the
ROMFS / ROMFS_WILDCARD / ROMFS_DIRECTORY process_line cases,
the undef ROMFS handler, and write_ROMFS(); base run() calls
write_ROMFS() at the end so subclasses that don't override run()
publish ROMFS automatically.
- ChibiOS keeps a thin romfs_add_dir() override solely for its
bootloader-build no-op guard; everything else is inherited.
No behaviour change for ChibiOS boards.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>