Commit Graph

380 Commits

Author SHA1 Message Date
Andrew Tridgell 98849a3998 HAL_ChibiOS: fixed build for EMPTY uarts
this fixes NucleoH743 build
2021-11-01 15:48:25 +11:00
bugobliterator 57e1fb1a81 HAL_ChibiOS: disable building CrashCatcher for non 2M boards 2021-10-30 19:24:57 +11:00
bugobliterator 70f606c480 AP_HAL_ChibiOS: restrict crash dump mechanisms only on boards with 2M flash 2021-10-30 19:24:57 +11:00
bugobliterator 66b8b9cf74 HAL_ChibiOS: add support for dumping crash logs to flash page 2021-10-30 19:24:57 +11:00
bugobliterator 69f53a6188 HAL_ChibiOS: add defines for CrashCatcher methods to use 2021-10-30 19:24:57 +11:00
Andrew Tridgell 0378e1a879 HAL_ChibiOS: removed need for a lot of boilerplate hwdef lines
bootloader and AP_Periph lines can default to right values
2021-10-26 15:56:53 +11:00
Iampete1 d7cc2cb296 AP_HAL_ChibiOS: hwdef.py: allow same GPIO pin in multiple alt configs 2021-10-26 10:05:20 +11:00
Andrew Tridgell c8664e0b98 HAL_ChibiOS: added STM32L476 support 2021-10-17 20:30:20 +11:00
Andrew Tridgell 5a68e21435 HAL_ChibiOS: support STM32L431 2021-10-17 20:30:20 +11:00
Andrew Tridgell 71e7bb0fe3 HAL_ChibiOS: mark af_parse_cubemx.py as executable, py3 2021-10-17 20:30:20 +11:00
Andrew Tridgell 25324ae0e2 HAL_ChibiOS: support SDMMC2 for sdcard 2021-10-12 15:47:51 +11:00
bugobliterator f298ea406e HAL_ChibiOS: enable RNG only for H7 based boards off for the rest by default 2021-10-07 19:43:11 +11:00
Andrew Tridgell 33529c98a9 HAL_ChibiOS: check the ROMFS line for IOMCU is added 2021-10-06 06:45:43 +11:00
Andrew Tridgell 4dbff85de7 HAL_ChibiOS: check for common hwdef.dat errors
catches missing GPIO type, mismatched timers and UARTs or bad pin types
2021-10-05 15:46:02 +11:00
Iampete1 8ae5bc5ad0 AP_HAL_ChibiOS: hwdef: allow GPIO alt config 2021-09-29 19:55:21 +10:00
Andrew Tridgell 27e93155f4 HAL_ChibiOS: fixed build on boards with OTG2 and no CAN interfaces 2021-09-29 18:11:04 +10:00
Andrew Tridgell 0212e23cd3 HAL_ChibiOS: added support for STM32L496 MCUs
good MCU for AP_Periph
2021-09-24 18:08:00 +10:00
Peter Barker 1bd62362a4 AP_HAL_ChibiOS: move from HAL_NO_GCS to HAL_GCS_ENABLED 2021-09-22 21:37:00 +10:00
Andrew Tridgell 7f59366cc0 HAL_ChibiOS: process AIRSPEED lines in hwdef.dat 2021-09-21 13:51:40 +10:00
Andrew Tridgell 532396e5e6 REVERT: HAL_ChibiOS: Rename STM32F412 hw definition file
This reverts commit 5de6c690d8.

That commit broke the build for the affected board as the chibios
headers rely on the name of the file matching a ifdef
2021-09-07 10:37:43 +10:00
Andrew Tridgell b77580f934 HAL_ChibiOS: avoid an issue with DCache init on H743
this fixes an issue found by Andy Piper where the H743 bootloader gets
a hard fault in the DCache enable code when SRAM1 is primary memory.

This is the simplest fix I could think of, and avoids the problem by
making DTCM the first segment in the bootloader.

Note that we can't use DTCM as first segment for main firmware since
we went to double precision EKF as the static variables don't fit
2021-09-06 18:23:03 +10:00
Siddharth Purohit 81dc237a19 AP_HAL_ChibiOS: move to using Instruction RAM with External Flash setup 2021-09-01 17:10:53 +10:00
Siddharth Purohit 39bd229279 AP_HAL_ChibiOS: remove dependency on Semaphores in QSPIDevice in BL 2021-09-01 17:10:53 +10:00
Siddharth Purohit 4ba2835de1 AP_HAL_ChibiOS: add config for supporting load from external flash 2021-09-01 17:10:53 +10:00
Siddharth Purohit faedb12493 AP_HAL_ChibiOS: fix hwdef generation for bootloader supporting ext flash 2021-09-01 17:10:53 +10:00
Siddharth Purohit 6e81fcbed1 AP_HAL_ChibiOS: add support for things required to run QSPIDriver 2021-09-01 17:10:53 +10:00
Andrew Tridgell 39f44147b8 HAL_ChibiOS: reduce the impact of UART DMA contention
this changes the heuristics for UART TX DMA allocation to greatly
reduce the chances of DMA contention causing long delays on other
devices

This fixes issues with FETTec driver output and gimbal status messages
as reported by Amilcar and OlliW. The problem is particularly bad when
no GPS is connected to GPS1 on fmuv3 and derived boards (such as
CubeBlack)

key changes:

 - remember the contention_counter across begin() calls, as the GPS
   calls begin with new baudrates regularly

 - added a is_shared() API to Shared_DMA, allowing the UART driver to
   avoid TX DMA on shared streams when at low baudrates.
2021-08-31 07:55:27 +10:00
Marek Łukasiewicz 5de6c690d8 HAL_ChibiOS: Rename STM32F412 hw definition file 2021-08-30 10:27:45 +10:00
bugobliterator a32a32ab43 HAL_ChibiOS: change name for USART2_CTS pin in STM32H757xx.py 2021-08-25 10:09:23 +10:00
Andrew Tridgell 4cebcede31 HAL_ChibiOS: switched to fix allocation for BMDA streams on H7
this avoids issues with BDMA stream assignments due to bugs found
while testing boards with both I2C4 and SPI6
2021-08-25 07:11:31 +10:00
Andrew Tridgell 57e87b9820 HAL_ChibiOS: measure MCU temperature and ref voltage on H7
this uses ADC3 to measure the internal MCU temperature and the reference
voltage. This uses a currently unused BDMA channel
2021-08-25 07:11:31 +10:00
Andrew Tridgell 8df99f0d15 HAL_ChibiOS: added G431 and G441 support 2021-08-03 10:54:03 +10:00
Andrew Tridgell 4fce1ae092 HAL_ChibiOS: added G491 support 2021-07-30 10:20:52 +10:00
bugobliterator d1b0438412 AP_HAL_ChibiOS: add support for usb passthrough with baud changes 2021-07-21 17:06:41 +10:00
Andrew Tridgell 4f32fa537a HAL_ChibiOS: define HAL_HAVE_HARDWARE_DOUBLE on F765, F777 and H7 2021-07-10 07:20:41 +10:00
Andrew Tridgell 6c712c9001 HAL_ChibiOS: use SRAM1 as first ram segment on H7
this is needed to give the linker more than 128k for static variables
with double precision maths.
2021-07-10 07:20:41 +10:00
Siddharth Purohit 9b2359b34c AP_HAL_ChibiOS: allow option to enable ChibiOS features in bootloader 2021-07-02 08:50:16 +10:00
Andrew Tridgell b4b02b4ffc HAL_ChibiOS: use nargs='+' for chibios_hwdef.py 2021-07-01 09:33:16 +10:00
willpiper ce1ee6334f AP_HAL_ChibiOS: addressed reviewed comments 2021-07-01 09:33:16 +10:00
willpiper fb4a4e609a AP_HAL_ChibiOS: added --extra-hwdef option 2021-07-01 09:33:16 +10:00
Siddharth Purohit c962292bae AP_HAL_ChibiOS: add support for H757I Evaluation board 2021-06-30 19:33:17 +10:00
Siddharth Purohit abc26d1993 AP_HAL_ChibiOS: add QSPI Device Driver in HAL 2021-06-30 19:33:17 +10:00
Siddharth Purohit 4cb48da984 modules: update ChibiOS 2021-06-30 19:33:17 +10:00
bugobliterator 7e8f11b749 AP_HAL_ChibiOS: allow embedded bootloader to be excluded
Co-authored-by: Peter Barker <pb-gh@barker.dropbear.id.au>
2021-06-24 08:36:30 +10:00
Peter Barker 3ba57fed89 AP_HAL_ChibiOS: add support for AP_Logger into AP_Periph 2021-06-08 09:57:55 +10:00
Andrew Tridgell c34d8e80e9 HAL_ChibiOS: fixed serial info indexing for EMPTY uarts 2021-06-05 18:52:33 +10:00
Andrew Tridgell 23c0f257b6 HAL_ChibiOS: default off serial protocols in AP_Periph
this allows for a GPS on high numbered ports
2021-06-01 09:19:51 +10:00
Andrew Tridgell fced5271af HAL_ChibiOS: expand pin map of G474 to cover 64 pin parts 2021-05-25 09:35:25 +10:00
Andrew Tridgell ebe858f762 HAL_ChibiOS: auto-set HAL_LOGGING_ENABLED for AP_Periph builds 2021-05-19 17:38:47 +10:00
Andrew Tridgell 6b9e4161cb HAL_ChibiOS: removed UDID_START from all MCU defs
use UID_BASE from ChibiOS headers
2021-05-09 06:44:19 +10:00
Andrew Tridgell 36d5c98e96 HAL_ChibiOS: default UDID_START to UID_BASE 2021-05-09 06:44:19 +10:00
Andrew Tridgell 03cae60471 HAL_ChibiOS: added STM32F732 support 2021-05-09 06:44:19 +10:00
Andrew Tridgell 61c829d624 HAL_ChibiOS: only use SRAM4 for DMA for now
we can enable others when we have an allocation interface that
specifies the peripheral type
2021-04-07 17:10:45 +10:00
Iampete1 2377d33417 AP_HAL_ChibiOS: H7 set SRAM4 to no cache and allow DMA 2021-04-07 17:10:45 +10:00
Andrew Tridgell ffb2876f58 HAL_ChibiOS: disable unused ChibiOS features 2021-03-23 12:01:20 +11:00
Andrew Tridgell ff31e10d9e HAL_ChibiOS: ensure that RCIN DMA channel is not shared
RCIN DMA cannot be shared as it runs all the time
2021-03-23 12:01:20 +11:00
Andrew Tridgell 2842730868 HAL_ChibiOS: fixed F3 CAN build 2021-03-23 12:01:20 +11:00
Andrew Tridgell ac9e6ba86d HAL_ChibiOS: fix label for CCM on G4 2021-03-23 12:01:20 +11:00
Andrew Tridgell f57b1b9c4b HAL_ChibiOS: support logical/physical CAN bus mapping
allow for first CAN interface to be CAN2 or CAN3
2021-03-23 12:01:20 +11:00
Andrew Tridgell 2f7ff778be HAL_ChibiOS: fixed bug in DMA resolver
idsets can be empty for a peripheral
2021-03-23 12:01:20 +11:00
Andrew Tridgell 439a944801 HAL_ChibiOS: added support for STM32G474 MCU 2021-03-23 12:01:20 +11:00
Andy Piper e1d71486e4 AP_HAL_ChibiOS: build fixes for ChibiOS 20.3.x 2021-03-23 12:01:20 +11:00
Andrew Tridgell 4fbdb59398 HAL_ChibiOS: prevent sharing the same DMA stream on TIMn_UP channels
this avoids an issue with DShot where we run the same DMA stream on
two timers at once
2021-03-02 11:58:38 +11:00
Andy Piper 6cb263056d AP_HAL_ChibiOS: build fix for iomcu 2021-03-02 11:58:38 +11:00
Andy Piper d0e4d510cf AP_HAL_ChibiOS: order PWM timers by DMA UP stream id to prevent deadlocks in dshot 2021-03-02 11:58:38 +11:00
Andy Piper f9c5f9be00 AP_HAL_ChibiOS: make dshot DMA unlock event driven in order to allow unlocking from rcout thread
refactor rcout into separate thread and process all dshot requests there
move uart DMA completion to event model
process dshot locks in strick reverse order when unlocking
convert Shared_DMA to use mutexes
move UART transmit to a thread-per-uart
do blocking UART DMA transactions
do blocking dshot DMA transactions
trim stack sizes
cancel dma transactions on dshot when timeout occurs
support contention stats on blocking locking
move thread supression into chibios_hwdef.py
invalidate DMA bounce buffer correctly
separate UART initialisation into two halves
cleanup UART transaction timeouts
add @SYS/uarts.txt
move half-duplex handling to TX thread
correct thread statistics after use of ExpandingString
set unbuffered TX thread priority owner + 1
correctly unlock serial_led_send()
don't share IMU RX on KakuteF7Mini
observe dshot pulse time more accurately.
set TRBUFF bit for UART DMA transfers
deal with UART DMA timeouts correctly
don't deadlock on reverse ordered DMA locks
change PORT_INT_REQUIRED_STACK to 128
2021-02-20 14:37:11 +11:00
Andrew Tridgell 9de1519928 HAL_ChibiOS: prevent hw flow control from hogging a DMA channel
When hw flow control is enabled check the CTS pin before we grab the
DMA channel to prevent a long timeout trying to send to a blocked port
from holding a DMA channel against another device

this fixes issue #16587
2021-02-15 07:23:56 +11:00
Andy Piper 2cdc202d19 AP_HAL_ChibiOS: use non-cachable SRAM3 for DMA on H743
Adjust SRAM1+SRAM2 to 256k as describe in the H743 reference manual
Provide access to mem_info() information

Co-authored-by: Andrew Tridgell <andrew@tridgell.net>
2021-02-03 23:35:44 +11:00
Andy Piper 06a1500f98 AP_HAL_ChibiOS: ensure GPIO pins get undef'ed properly
minimise bi-directional dshot configs for:

CubeOrange
Durandal
MatekF405
MatekH743
OmnibusNanoV6
Pixracer
mRoPixracerPro
omnibusf4pro
CUAV-X7
2021-02-03 18:49:06 +11:00
bugobliterator c02c546077 AP_HAL_ChibiOS: add support for inline comments in hwdef.dat 2021-01-18 09:37:11 +11:00
bugobliterator 41693403e2 AP_HAL_ChibiOS: retain memory of past conflicts in dma_resolver 2021-01-18 09:37:11 +11:00
bugobliterator 4346264113 AP_HAL_ChibiOS: ensure UP and CH timer channels share DMA for H7 2021-01-12 10:45:03 +11:00
Andrew Tridgell afbdd69165 AP_HAL_ChibiOS: adjust stack sizes 2021-01-10 08:28:55 +11:00
Andy Piper 8fb403c569 AP_HAL_ChibiOS: make sure BDMA channels are not adjacent 2021-01-10 08:11:37 +11:00
Andy Piper 401e5c2073 AP_HAL_ChibiOS: add support for bidir DShot support in RCOutput
add support for sampling GPIO pins using timer
don't restart pwm group when not doing bi-dir
fix hwdef generation preproc for TIM DMA
decode telemetry at the start of the dshot cycle
calculate dshot pulse separation correctly and ensure we output rapidly enough
calculate dshot min periods and timeouts correctly
refactor dshot_send() into dshot_send_groups()
use bi-dir dshot channel mask
selectively enable bi-dir RC Channels
process bi-dir mask correctly when allocating DMA channels
allow UP and CH DMA channel sharing
optionally enable bidir vars in hwdef.

enable bi-dir dshot in KakuteF7Mini
enable bi-dir dshot in OmnibusF4Pro
enable bi-dir dshot in OmnibusNanoV6
enable bi-dir dshot in MatekF405
enable bi-dir dshot in fmuv5
enable bi-dir dshot in fmuv3
enable bi-dir dshot in OmnibusF7V2
enable bi-dir dshot in OmnibusNanoV6
enable bi-dir dshot in CubeOrange
enable bi-dir dshot in Pixracer
enable bi-dir dshot in mRoPixracerPro

Co-authored-by: bugobliterator <siddharthbharatpurohit@gmail.com>
2020-12-30 19:14:16 +11:00
Andy Piper 83c8807b39 AP_HAL_ChibiOS: when HAL_ENABLE_THREAD_STATISTICS is defined add ChibiOS thread stats to threads.txt
define HAL_ENABLE_THREAD_STATISTICS in hwdef.h
2020-12-30 18:15:05 +11:00
Phillip Kocmoud 062c6cef41 HAL_ChibiOS: Fix typo relating to pin PB7:I2C4_SDA 2020-12-23 06:43:19 +11:00
Tom Pittenger da74d755d0 AP_HAL_ChibiOS: add new HAL_PWM_COUNT define 2020-12-21 18:27:07 -08:00
Andrew Tridgell b4de6fb56a HAL_ChibiOS: added new option DEFAULTGPIO for hwdef.dat
this allows ESD issues to be avoided by pulling all unused pins low
2020-12-08 11:21:57 +11:00
Andrew Tridgell f44e4aaefb HAL_ChibiOS: always set STM32_DMA_REQUIRED for non-bootloader
this fixes an issue for uart-only AP_Periph builds
2020-12-08 10:27:27 +11:00
Tom Pittenger e235fd311e AP_HAL_ChibiOS: fixed comment in script file 2020-12-03 20:33:51 +11:00
Andrew Tridgell c778d14fd3 HAL_ChibiOS: enable stack checking on f303 boards 2020-12-01 11:14:50 +11:00
Andrew Tridgell 573cd6db6d HAL_ChibiOS: adjust MAIN_STACK for more ISR stack
we need more stack to deal with interrupt nesting between CAN, system
timer and serial interrupts
2020-12-01 11:14:50 +11:00
Andrew Tridgell 4d171ec19a AP_HAL_ChibiOS: support uartI, allowing a total of 9 uarts
this allows for OTG2 on the MatekH743 board, which makes SLCAN much
easier
2020-11-30 14:09:31 +11:00
Marek Łukasiewicz 64f208cbec HAL_ChibiOS: Add af_parse for CubeMX pinout csv 2020-11-18 18:39:07 +11:00
Marek Łukasiewicz 8813057b4c AP_HAL_ChibiOS: Tweak sorting to be py2/py3 compatible 2020-11-12 10:27:31 +11:00
Andrew Tridgell 17b4198921 HAL_ChibiOS: add WITH_FATFS to environment 2020-11-10 16:15:45 +11:00
Andrew Tridgell bb3b59966f HAL_ChibiOS: define INS_MAX_INSTANCES if less than 3
save some flash and memory
2020-11-10 16:15:45 +11:00
Andrew Tridgell 46976c4358 HAL_ChibiOS: fixed remapping of ioline_t with BRD_ALT_CONFIG
when a peripheral is made available via BRD_ALT_CONFIG we need to
remap the existing ioline_t in the UART and I2C drivers to use the new
pin.

This fixes an issue with half-duplex, inverted, swapped UART pins for
protocols like FPort and FPort2
2020-10-28 19:51:45 +11:00
Andrew Tridgell 702a3926f8 HAL_ChibiOS: setup defines for more flow control pins
allow all uarts to have flow control
2020-10-03 20:22:56 +10:00
Andrew Tridgell 4b747430e1 HAL_ChibiOS: save 2k in f103 bootloader
don't include serial bl support if dev list is empty
2020-09-24 12:32:19 +10:00
Siddharth Purohit a79efaeb1d AP_HAL_ChibiOS: hwdef: add support for HAL CANIface based bootloader 2020-09-24 12:32:19 +10:00
Siddharth Purohit 882c86c394 AP_HAL_ChibiOS: add app start offset to leave space for params 2020-09-24 12:32:19 +10:00
Siddharth Purohit 62df67a4b8 HAL_ChibiOS: hwdef: modify to use HAL CAN driver instead of ChibiOS's 2020-09-24 12:32:19 +10:00
Andrew Tridgell 1ffbbb2896 HAL_ChibiOS: added FLASH_TOTAL to environment 2020-09-10 07:41:25 +10:00
Andrew Tridgell 491e82159c HAL_ChibiOS: add HAL_WITH_SPI_xx defines for SPI devices
this allows us to avoid building drivers for SPI devices we don't
have, such as OSD
2020-09-02 05:56:46 +10:00
Siddharth Purohit 8dcb973dad HAL_ChibiOS: fix SWD config in f3 boards 2020-08-20 19:08:14 +10:00
Siddharth Purohit cdf8e369f1 AP_HAL_ChibiOS: create UAVCAN agnostic CANIface driver
HAL_ChibiOS
2020-08-19 17:31:09 +10:00
Andrew Tridgell 20b2396646 HAL_ChibiOS: fixed bug in undef of pins
revert pin to initial state on undef
2020-06-30 14:28:30 +10:00
Andrew Tridgell 61d036acf3 HAL_ChibiOS: added build time check for right system clock
this helps prevent cases where we underclock a chip due to mistake in
headers or hwdef.dat
2020-05-10 15:09:28 +10:00