Commit Graph

143 Commits

Author SHA1 Message Date
Andrew Tridgell 34815f9fb0 HAL_ChibiOS: scale RTS threshold to make software CTS more effective 2024-06-27 10:11:14 +10:00
Brad Bosch f2f9349419 AP_HAL: Add support for parity to Serial passthrough
Add code to reflect USB ACM parity setting to the passthrough port alongside existing support for ACM baud rate changes.  Some use cases for serial passthrough require specific parity settings.

For example, even parity is used and required by the USART protocol used in the STM32 system bootloader. This enhancement allows the use of standard flash programming tools such as STM32CubeProgrammer to flash connected STM based peripherals such as Receivers and Telemetry radios via serial passthrough.  Some examples of such peripherals include the FrSky R9 receivers as well as various other STM based LoRa modules used by the mLRS project.
2024-06-11 09:24:32 +10:00
Andrew Tridgell 8dbad82c8a AP_HAL_ChibiOS: use NEW_NOTHROW for new(std::nothrow) 2024-06-04 09:20:21 +10:00
Iampete1 e10b4abad8 ChibiOS: UART: Add support for RS-485 Driver Enable RTS flow control 2024-05-28 09:48:19 +10:00
Iampete1 edc12c2857 AP_HAL_ChibiOS: use new UART stats tracking helper moving history up to util 2024-04-03 13:10:06 +01:00
Andrew Tridgell 0a8faa83d9 HAL_ChibiOS: allow for up to 12.5MBps on H7 UARTs
use 8x oversampling instead of 16x oversampling
2024-01-02 08:12:37 +11:00
Thomas Watson dc4438d0e3 AP_HAL_ChibiOS: eliminate legacy UART ordering/references
SERIAL_ORDER has been around for a few years now and UART_ORDER is
rejected by the hwdef script, so support for UART_ORDER and associated
processing in the hwdef script is removed, along with the order
conversion script.
2023-12-19 06:53:15 +11:00
Andrew Tridgell 0ed33653fc HAL_ChibiOS: added a method for just changing port owner 2023-08-02 17:44:39 +10:00
Andrew Tridgell 56be632916 HAL_ChibiOS: use set_size_best()
maximise chance of getting a reasonable uart buffer size
2023-07-18 11:38:27 +10:00
Andrew Tridgell 8fd5341b5b HAL_ChibiOS: moved uart locking up to AP_HAL
and removed set_blocking_writes
2023-07-12 17:06:02 +10:00
bugobliterator 9e6c9022a3 AP_HAL_ChibiOS: add support for forwarding USB COM2 to Secondary controller 2023-04-26 18:04:00 +10:00
tsubashmail@gmail.com ae9e15ade5 HAL_ChibiOS: port for STM32L4+ processor
Added support for stm32l4+ processor

- Added scripts for hwdef generation
- Tested in custom hardware prototype (stm32l4r5vit6)
- Tested all peripherals and auto pilot modes.
2023-04-14 07:48:56 +10:00
Peter Barker 130f2c3bc8 AP_HAL_ChibiOS: add and use a "bool read(c)" method to AP_HAL
this is much less likely to not work vs the int16_t equivalent
2023-03-22 17:59:11 +11:00
James O'Shannessy b5e17bfc5d AP_HAL_ChibiOS: Fix half-duplex serial on L431 periph nodes 2023-02-23 08:53:40 +11:00
Andy Piper 81aa5b9dc6 AP_HAL_ChibiOS: make available/available_locked consistent with read/read_locked 2022-07-13 18:17:07 +10:00
Andy Piper 4068337971 AP_HAL_ChibiOS: correct UART RX stats 2022-06-14 10:25:17 +10:00
murata e007b21f9e AP_HAL_ChibiOS: Console output can be disabled 2022-05-17 09:53:06 +10:00
Andy Piper eaa414bb0c AP_HAL_ChibiOS: implement pseudo-flushing for buffered UARTS 2022-04-20 17:38:08 +10:00
Andrew Tridgell 1c5a954b24 HAL_ChibiOS: incorrect class of class in uart TX timeout
need to call chEvtGetAndClearEventsI() as we are in a system lock
state
2022-04-04 16:59:38 +10:00
Andrew Tridgell 638e20a0b9 HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
Andy Piper 48c21299f8 AP_HAL_ChibiOS: hwdef for SPRacingH7
hwdef for DevEBoxH7v2
pin definitions for STM32H750
add QSPI to DevEBox bootloader
add external flash to DevEBox
rename EXTERNAL_PROG_FLASH_MB to EXT_FLASH_SIZE_MB
Add support for EXT_FLASH_RESERVE_START_KB and EXT_FLASH_RESERVE_END_KB
Disable HAL_ENABLE_SAVE_PERSISTENT_PARAMS when there is no bootloader flash available
relax storage health status with SD card backend
don't check SD card health unless USE_POSIX
binary sections rearranged on external ram
manage RAMFUNC through ldscript and optimize function placement in external flash
inline timer functions
optimize placement of ChibiOS and functions in ITCM and AXI RAM
fix chibios features on bootloader build with external flash
change H750 memory layout
increase line storage for SD card based parameters
comment external flash linker script
move vtables into DTCM
update ram map for H757
enable crashdump support with external flash
correct bootloader pins and generator on SPRacingH7/DevEBoxH7v2
setup external flash reserve regions
allow different RAM_MAP for external flash on H750 and H757
2022-02-09 12:47:55 +00:00
Peter Barker 875f9a9497 AP_HAL_ChibiOS: add HAL_UART_STATS_ENABLED to disable stats gathering 2022-01-12 18:30:49 +11:00
Stephen Dade fb5ac63a63 AP_HAL_ChibiOS: Fix get_options() to use uint16_t 2021-12-15 14:14:07 +11:00
Andrew Tridgell 61ffe188d4 HAL_ChibiOS: implement disable_rxtx() 2021-11-07 07:00:35 +11:00
bugobliterator 5fa50c419d AP_HAL_ChibiOS: account for TXFIFO when doing flow control detection 2021-10-15 19:57:55 +11:00
Iampete1 5848510876 AP_HAL_ChibiOS: set flow control disabled if no RTS line 2021-10-05 12:11:47 +11:00
Iampete1 dc45a113f9 AP_HAL_ChibiOS:UARTDriver: allow re-defintion of RTS and CTS pins 2021-09-29 19:55:21 +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
Andrew Tridgell adbaccaa08 HAL_ChibiOS: fixed RTSCTS flow control issue
this fixes an issue reported on MatekH743, but also applies to other
boards. When not using DMA if there have been bytes written before the
auto flow control detection was enabled then these must be cleared
from _total_written so the flow control detection can work correctly
2021-09-13 21:28:08 +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
Andy Piper f71b951cb2 AP_HAL_ChibiOS: return correct value for tx_pending(). 2021-08-04 17:26:18 +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 db1df9d3a8 HAL_ChibiOS: raise DMA contention threshold for H7 2021-07-15 11:31:55 +10:00
Andrew Tridgell 926d4ad71c HAL_ChibiOS: implement NOFIFO option for uarts 2021-07-15 11:31:55 +10:00
Andrew Tridgell 4ed0b03f35 HAL_ChibiOS: implement set_RTS/CTS_pin methods 2021-07-09 13:27:57 +10:00
Andrew Tridgell 67fea9f2f8 HAL_ChibiOS: fixed DMA disable on contention
this fixes a problem with the automatic DMA disable on DMA contention
in UARTs. This fixes issue #14581

the problem was that while tx_dma_enabled was correctly set to false,
it would keep looping inside write_pending_bytes_DMA() if the data
arrived in the write buffer at a faster rate than it could be sent
out, which did happen with a mavlink stream rate of 4Hz. This means it
kept using DMA even with tx_dma_enabled set to false. The result was
that the automatic flow control code never got a chance to run and we
didn't switch back to non-DMA for these low baudrate contended UARTs
2021-06-05 19:03:03 +10:00
Andrew Tridgell 3128d71aac HAL_ChibiOS: display uart even when not initialised
don't rely on thread allocation for uart info display
2021-06-05 18:52:33 +10:00
Andrew Tridgell 6fab8feeae HAL_ChibiOS: implement uart_info per-uart
this allows for some UARTs to be of EMPTY type
2021-06-05 18:52:33 +10:00
Andrew Tridgell 135a4d2c83 HAL_ChibiOS: fixed order and labelling of @SYS/uarts.txt 2021-06-05 18:52:33 +10:00
Andrew Tridgell 47a5d78397 HAL_ChibiOS: disable DMA on high contention UARTs
switch to interrupt driven when in high contention
2021-04-08 06:53:48 +10:00
Andrew Tridgell 4cddb12508 HAL_ChibiOS: fixed DMA sent calculation on UART DMA timeout 2021-04-07 07:34:45 +10: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 3b88a3273b HAL_ChibiOS: adjust up uart tx stack size
lowest was showing 80 bytes free, which is too close to the 64 byte
level where we trigger an internal error
2021-02-20 14:37:11 +11:00
Andrew Tridgell 5e0f175223 HAL_ChibiOS: adjust UART buffer sizes for new UART code
this gains about 20k of RAM, and has almost no impact on log download
speed at 921600 on a F427. The improved threading means we can afford
to have smaller buffers
2021-02-20 14:37:11 +11:00
Andy Piper 4e61ba2dc8 AP_HAL_ChibiOS: reduce stack sizes for rcout, uart_rx and storage. 2021-02-20 14:37:11 +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
Andy Piper 4c2cbdab8d AP_HAL_ChibiOS: only setup half-duplex for receive when transmit is fully over 2021-02-17 20:09:48 +11:00
Andy Piper 5c32007cdf AP_HAL_ChibiOS: ensure stop bits can be set before UART begin 2021-02-17 20:09:48 +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