Commit Graph

399 Commits

Author SHA1 Message Date
Andrew Tridgell 9a709be045 HAL_ChibiOS: fixed a cache corruption issue on H7
This fixes a bug introduced in this PR:

https://github.com/ArduPilot/ardupilot/pull/25900

the bug is that when we don't go via the bouncebuffer on H7 we were
also skipping the cache invalidate/flush ops. This caused data
corruption for filesystem operations, particularly noticible as lua
scripts failing to load with parse errors or log corruption
2024-03-22 17:49:41 +11:00
Andrew Tridgell 6e3369611e HAL_ChibiOS: enable clock management on G4
this allows for a different clock tree in the main fw from the
bootloader
2024-01-25 11:44:52 +11:00
Andrew Tridgell 06a8aef998 HAL_ChibiOS: switched G4 FDCAN clock to 80MHz
this requires main CPU clock at 160 MHz instead of 168 MHz
2024-01-25 11:44:44 +11:00
Andrew Tridgell f7c7ee00e9 HAL_ChibiOS: added a delete_next thread field for cleanup
allows for cleanup of web server threads in bootloader
2024-01-21 12:30:08 +11:00
Thomas Watson 5f5673b58f AP_HAL_ChibiOS: match thread stack pointer types to ChibiOS
`__main_thread_stack_base__` and `__main_thread_stack_end__` are
variables whose address is defined to be the corresponding part of the
stack. These are declared as `extern stkalign_t` in ChibiOS code, and
being declared as `extern uint32_t` in ArduPilot code creates a warning
at link time when using LTO. Correct the declaration to eliminate this
warning.

Also update `__main_stack_base__` and `__main_stack_end__` which don't
currently trigger this warning but serve similar purposes and so might
in the future.

The hardware expects an alignment of `stkalign_t` (which is 8 bytes) and
the linker script defines the variable values with this alignment as
well, so this is safe.

No code size or functional change.
2024-01-16 09:24:34 +11:00
Andrew Tridgell 6ea2c28a4d HAL_ChibiOS: fixed DMA on SPI on H743
this fixes DMA failures affecting IMUs on H743. The reason for the
failure is not yet clear, but this reverts back to our old stragegy of
always using the bouncebuffer on H7 as a quick workaround
2024-01-07 19:10:25 +11:00
Andrew Tridgell c54aa0241a HAL_ChibiOS: added mem_is_dma_safe() function
used for bouncebuffer code and in FATFS code
2024-01-05 06:52:11 -08:00
Andrew Tridgell cc8c671cb7 HAL_ChibiOS: don't link evtimer in chibios_board.mk 2024-01-03 12:14:47 +11:00
Andrew Tridgell 418897c443 HAL_ChibiOS: removed old lwip options 2024-01-03 12:14:47 +11:00
Andrew Tridgell 9456b585fa HAL_ChibiOS: don't link lwip bindings from ChibiOS 2024-01-03 12:14:47 +11:00
Andrew Tridgell d2d2067f1c HAL_ChibiOS: fixed micros and millis on boards without 1MHz clock 2023-12-24 10:10:14 +11:00
Andrew Tridgell 4a59097b5e HAL_ChibiOS: use C implemention of div1000 2023-12-21 09:09:11 +11:00
Andrew Tridgell 6dbc3b6a70 HAL_ChibiOS: speed up millis(), micros64() etc
these use faster primitives and an assembly division by 1000 to get
between 2x and 3x speedup on these critical calls
2023-12-19 11:47:24 +11:00
Andrew Tridgell a4fb05de95 HAL_ChibiOS: increase LWIP windows
now getting 6.8MByte/s with NET_TESTS=4
2023-12-11 18:00:38 +11:00
Andrew Tridgell 28885dca4c HAL_ChibiOS: adjust buffer sizes
this fixes issues with TCP accepts being lost in web server
2023-12-11 18:00:38 +11:00
Andrew Tridgell f603f045b5 HAL_ChibiOS: make lwip debugging easier
use ap_networking_printf wrapper
2023-12-11 18:00:38 +11:00
Andrew Tridgell 436c60c7de HAL_ChibiOS: defaults to 50 socket limit
makes for more useful web server
2023-12-11 18:00:38 +11:00
Andrew Tridgell f471732aad HAL_ChibiOS: enable SO_REUSEADDR 2023-11-28 12:18:55 +11:00
Andrew Tridgell 0659ab8ef4 HAL_ChibiOS: increase max TCP resources 2023-11-28 12:18:55 +11:00
thu5cob 49d7d0b1c4 HAL_ChibiOS: Fix stm32l4+ flash issue
stm32l4+ flash reset register has been reset properly
2023-10-06 14:52:34 +11:00
Andrew Tridgell 999919424b hwdef: allow for MCO pin to be configured
this allows for hwdef.dat lines like this:

  PA8 MCO1 RCC
  PC9 MCO2 RCC

you can control the scaling by defining the following:

- STM32_MCO1SEL
- STM32_MCO1PRE_VALUE
- STM32_MCO2SEL
- STM32_MCO2PRE_VALUE
2023-08-25 07:37:12 +10:00
Andy Piper 52dbac1de7 AP_HAL_ChibiOS: run STM32F103 core clock at 72Mhz on 24Mhz oscillators 2023-08-15 06:53:48 +10:00
Andy Piper c057cc5485 AP_HAL_ChibiOS: add get_output_mode() and use it to print correct banner for iomcu
add support for undef of STM32 lines and DMA_NOMAP
add support for F103 running at 24Mhz
add f103 variants of iofirmware
reduce memory usage in iomcu for new model
correct pwm output reporting
split iofirmware into config + mcu to allow f103 definition
don't enable non-existant timers on F103
2023-08-15 06:53:48 +10:00
Andy Piper f233a65580 AP_HAL_ChibiOS: add global interrupt handlers for TIM15 and TIM17 on F1 2023-08-15 06:53:48 +10:00
Tom Pittenger d59c3d7de0 AP_HAL_ChibiOS: remove common_eth.ld 2023-08-06 09:20:08 +10:00
bugobliterator cf6fd6717b AP_HAL_ChibiOS: fix alignment for Ethernet safe memory 2023-08-06 09:20:08 +10:00
Tom Pittenger 9698291920 AP_HAL_ChibiOS: fix unused var compile error 2023-08-06 09:20:08 +10:00
bugobliterator e6b51df7cd AP_HAL_ChibiOS: dynamically allocate memory for MAC Peripheral 2023-08-06 09:20:08 +10:00
Tom Pittenger f66327d97d AP_HAL_ChibiOS: Ethernet related memory allocations 2023-08-06 09:20:08 +10:00
Tom Pittenger 3b79ff0ad3 AP_HAL_ChibiOS: add hooks to compile Networking 2023-08-06 09:20:08 +10:00
Tom Pittenger d841d250d8 AP_HAL_ChibiOS: allow HW without HW_RNG to SW-based create psuedo-random 2023-08-06 09:20:08 +10:00
Andrew Tridgell 0accc9f897 HAL_ChibiOS: clear EOP bit at end of F4 programming 2023-07-10 06:52:44 +10:00
Andrew Tridgell 0aab2f7974 HAL_ChibiOS: implement newlib alloc functions as malloc wrappers
this fixes issue #24106
2023-07-05 07:13:39 +10:00
Andrew Tridgell 54e2e33ee1 HAL_ChibiOS: allow hwdef to specify a NRST_MODE override
this allows the boot behaviour of a board to be changes to avoid a
reset issue
2023-06-27 10:32:43 +10:00
Andrew Tridgell ddb991d9b5 HAL_ChibiOS: fixed 24mhz crystal on H7 with 480MHz clock
need to adjust the PLLQ as well as the PLLN
2023-06-20 18:56:13 +10:00
Andrew Tridgell 1055c5f1c6 waf: fixed dependency of ChibiOS build on compiler flags
this adds a chibios_flags.h which contains the flags we pass to the
ChibiOS make, which allows us to have a make level dependency on the
flags

this fixes (among other things) the build of copter followed by
bootloader for SPRacingH7
2023-06-20 18:08:31 +10:00
Martin Luessi b336526765 AP_HAL_ChibiOS: Move scheduler task table to RAM for H750 2023-06-06 19:19:10 +10:00
Martin Luessi 82280b6a8d AP_HAL_ChibiOS: Rename STM32_FORCE_CLOCK_INIT to HAL_FORCE_CLOCK_INIT 2023-06-06 19:19:10 +10:00
Martin Luessi 350dfc235e AP_HAL_ChibiOS: Add libgcc comment to H750 linker script 2023-06-06 19:19:10 +10:00
Martin Luessi f55261c852 AP_HAL_ChibiOS: Use DTCM for vector table for external flash targets 2023-06-06 19:19:10 +10:00
Martin Luessi ab03c49ea8 AP_HAL_ChibiOS: Move more time critical code to RAM for H750 2023-06-06 19:19:10 +10:00
Martin Luessi 0c93800ec1 AP_HAL_ChibiOS: Copy vector table to RAM if external flash is primary 2023-06-06 19:19:10 +10:00
Martin Luessi 84ccd046c6 AP_HAL_ChibiOS: Change linker script so vector table can be copied to RAM for external flash targets 2023-06-06 19:19:10 +10:00
Martin Luessi f5e6b055b6 AP_HAL_ChibiOS: Allow custom STM32_QSPISEL for H7 2023-06-06 19:19:10 +10:00
Martin Luessi 01f030da7c AP_HAL_ChibiOS: Option to force clock init 2023-06-06 19:19:10 +10:00
Andrew Tridgell 6f469c48e7 HAL_ChibiOS: support f_mkfs on all boards 2023-06-06 15:19:00 +10:00
Andrew Tridgell 146cc3312c HAL_ChibiOS: implement ff_memalloc, fixing mkdir() after format
this implements FATFS memory allocation in the HAL_ChibiOS malloc.c
which fixes mkdir() after a format of the microSD

The strategy is to deny large allocations and try for DMA allocations
if possible. This both fixes mkdir() and makes filesystem operations
faster as we have less copying of memory via the bouncebuffer
2023-06-03 17:07:04 +10:00
Andrew Tridgell 4946ce5431 HAL_ChibiOS: revert recent USB changes
these are causing some boards to crash on startup. Tested with a
QiotekZealotH743 which doesn't get out of setup_usb_strings()

once we have debugged this we can re-add the functionality
2023-06-03 16:50:30 +10:00
bugobliterator f7d3969116 AP_HAL_ChibiOS: enable write protection on USB msd
also fixes support for MSD on FS
2023-05-31 18:40:17 +10:00
bugobliterator a9ef3b031e AP_HAL_ChibiOS: add support for setting baudrate for ACM port in USB MSD 2023-05-31 18:40:17 +10:00