Commit Graph

45 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 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
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
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 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 e5b46eb2a7 HAL_ChibiOS: fixed build error with gcc 11.3 2022-10-06 10:45:49 +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
bugobliterator 66b8b9cf74 HAL_ChibiOS: add support for dumping crash logs to flash page 2021-10-30 19:24:57 +11:00
Siddharth Purohit abc26d1993 AP_HAL_ChibiOS: add QSPI Device Driver in HAL 2021-06-30 19:33:17 +10: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
Andrew Tridgell 408f8b3940 HAL_ChibiOS: added check for overwrite of nullptr on H7
the STM32H7 has 64k of ITCM memory at address zero. We allow
allocation of everything except the first 1024 bytes. This checks for
those reserved bytes being overwritte, which would indicate a write to
nullptr
2020-11-18 17:14:43 +11:00
Andrew Tridgell 95a823a702 HAL_ChibiOS: added link list of all memory allocations
check all allocations for corruption on free() and malloc_check()
2020-11-18 17:14:43 +11:00
Andrew Tridgell ce3e1a69ec HAL_ChibiOS: added memory guard system 2020-11-18 17:14:43 +11:00
Andrew Tridgell 822460ce7d HAL_ChibiOS: fixed strdup() on ChibiOS 2020-03-28 15:28:03 +11:00
Andrew Tridgell 2b7bffa906 HAL_ChibiOS: adjust dma reserve allocation
use larger target and allow for smaller allocation
2020-01-18 07:13:11 +11:00
Andrew Tridgell d1565a96c5 HAL_ChibiOS: wrap cacheBuffer functions
needed to avoid problem with end() method in UARTDriver shadowing with
F7 implementation of cache macros
2019-08-27 15:40:43 +10:00
Andrew Tridgell 26d1371d25 HAL_ChibiOS: separate out DMA allocation for sdcard IO
this fixes an issue with DMA to SPI6 on STM32H7. On the H7 SRAM4 can
be used for DMA and BDMA to all devices except for SDMMC which uses
IDMA.

by separating out DMA of sdcard data from other data we can arrange
for DMA to all devices to work
2019-03-09 07:33:47 +11:00
Andrew Tridgell 64681cb05c HAL_ChibiOS: allocate threads from any heap
this fixes a failure on MatekF405-Wing where it fails to allocate the
SPI thread for the IMU
2019-02-27 11:54:28 +11:00
Andrew Tridgell 70930cca29 HAL_ChibiOS: fixed bootloader build with gcc 4.9 2019-02-26 16:18:26 +11:00
Andrew Tridgell 9966fbea0f HAL_ChibiOS: fixed bootloader build error 2019-02-26 16:18:26 +11:00
Andrew Tridgell cda1959629 HAL_ChibiOS: added support for more flexible memory regions
this allows for an arbitrary number of memory regions, with each one
flagged as DMA safe, fast or normal
2019-02-26 16:18:26 +11:00
Andrew Tridgell ff21508ce8 HAL_ChibiOS: ensure 32 byte alignment for DMA on H7 2019-02-26 16:18:26 +11:00
Michael du Breuil e8373e1fdf AP_HAL_ChibiOS: add scripting heap 2018-12-31 19:25:23 -07:00
Michael du Breuil 8c464572d8 AP_HAL_ChibiOS: Use a less clever version of realloc
The clever version loses access to memory, and is excessively hard coded
2018-11-26 22:32:56 +00:00
Andrew Tridgell 065dba973b HAL_ChibiOS: fixed build warning on iomcu 2018-11-07 07:35:45 +11:00
Andrew Tridgell bcc1bd9752 HAL_ChibiOS: added realloc implementation
needed for AP_Scripting
2018-10-09 10:08:52 +11:00
Siddharth Purohit 42b4730d88 HAL_ChibiOS: add changes to hwdef to support STM32F1 based controller 2018-09-19 12:14:15 +10:00
Siddharth Purohit 2604b00b43 HAL_ChibiOS: use ch.h header for oslib api 2018-08-03 13:44:59 +10:00
Siddharth Purohit 5f88163e17 HAL_ChibiOS: update configuration and rtlib headers for ChibiOS 18.x.x 2018-08-03 13:44:59 +10:00
Andrew Tridgell 8a26ca1ddf HAL_ChibiOS: added a DMA reserve heap
this ensures we keep some DMA-capable memory aside for when it is
needed
2018-07-20 15:48:21 +10:00
Andrew Tridgell 369ac5edd0 HAL_ChibiOS: save more space in the bootloader 2018-06-25 21:22:31 +10:00
Andrew Tridgell c12d14d7a4 HAL_ChibiOS: check for ChibiOS features 2018-06-22 08:00:31 +10:00
Andrew Tridgell c273b23940 HAL_ChibiOS: moved MCU config to python database
this moves the key MCU config variables related to memory to the
python MCU database, allowing the hwdef.dat to be considerably simpler
2018-06-06 07:15:41 +10:00
Andrew Tridgell 2493cdbcb6 HAL_ChibiOS: switch to new bouncebuffer system
this removes the dma_flush and dma_invalidate methods and uses a
common bouncebuffer system for all CPU types. This enables microSD
support on STM32F7
2018-06-06 07:15:41 +10:00
Andrew Tridgell eec4a12cc2 HAL_ChibiOS: switched to using DTCM memory for DMA
this uses SRAM1 and SRAM2 for main memory, which enables the use of the
data cache for faster operation, and using DTCM for all DMA operations.
2018-06-06 07:15:41 +10:00
Andrew Tridgell 2087354939 HAL_ChibiOS: align buffers to STM32F7 cache lines
this allows for DMA flush and invalidate operations to work on all
dynamically allocated memory
2018-06-06 07:15:41 +10:00
Andrew Tridgell 29add8a880 HAL_ChibiOS: fixed build without FATFS enabled 2018-02-07 20:33:45 +11:00
Andrew Tridgell 6e4ef32628 HAL_ChibiOS: moved to generated loader script 2018-01-15 11:46:02 +11:00
Andrew Tridgell f135e73e04 HAL_ChibiOS: F412 doesn't have CCM ram 2018-01-15 11:46:02 +11:00
bugobliterator 5feef04f5f HAL_ChibiOS: add support for CCM memory
this uses DMA bounce buffers for bus transfers, and falls back to CCM
ram in allocations if the type is unspecified
2018-01-15 11:46:02 +11:00
Andrew Tridgell 86fbdcd060 HAL_ChibiOS: ensure malloc returns zeroed memory 2018-01-15 11:46:02 +11:00
Andrew Tridgell 8b6bab7b17 HAL_Chibios: added ChibiOS HAL
this is based on initial work by Sid, reset here for easier merging
2018-01-15 11:46:02 +11:00