Commit Graph

40 Commits

Author SHA1 Message Date
Peter Barker
ecde9f8c3f AP_HAL_ChibiOS: make HAL_FLASH_PROTECTION a boolean, stop checking for definition 2022-08-16 08:10:16 +10:00
Andrew Tridgell
392e80001f HAL_ChibiOS: fixed H7 flash storage
this fixes the flash re-init problem when flash storage fills on
H7. It was caused by rejecting writes where one or more of the 32 byte
chunks was not all 0xff but was equal to the current data. That
happens when writing to the sector header in AP_FlashStorage

it also moves the interrupt disable inside the loop to allow for
other interrupts to run between blocks
2022-04-05 17:46:52 +10:00
Andrew Tridgell
a0c867bce7 HAL_ChibiOS: disable interrupts during flash operations
we have now shown that interrupts being enabled during flash
operations can cause the infamous "68ms" bug, or watchdog when using a
32 bit timer on boards using flash for storage

The issue is quite repeatable with a load of a very large waypoint
file (over 500 waypoints) using "wp ftpload" in MAVProxy. This puts a
huge load on flash storage.

Our current working theory is that while doing flash writes for
storage on dual-bank we block access to only one bank, so if another
thread uses a timeout function with a short timeout while the flash
write is happening and chVTDoTickI calls code which crosses the flash
bank boundary then it can cause chVTDoTickI to violate the assumption
that no more than CH_CFG_ST_DELTA ticks pass while it is calculating
the value to set in the system timer. In that case we get a delay of a
full timer wrap, which is 68ms on boards with 16 bit timer and 70
minutes on boards with 32 bit timer
2022-04-05 17:46:52 +10:00
Andy Piper
ed952a0ea0 AP_HAL_ChibiOS: allow flash to be write-protected/unprotected on reboot
control protection support via HAL_FLASH_PROTECTION
provide support for flash protection on SPRacingH7
SPRacingH7 bootloader needs to use w25q-dtr
2022-02-24 10:19:07 +11:00
bugobliterator
ee35350129 HAL_ChibiOS: setup for recording crashdump at the remaining flash space 2021-12-01 18:17:50 +11:00
bugobliterator
91fdf6e875 HAL_ChibiOS: fix issue with writing the last byte 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
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
22f7218acf HAL_ChibiOS: support 512k F7 parts for flash 2021-05-09 06:44:19 +10:00
Andrew Tridgell
439a944801 HAL_ChibiOS: added support for STM32G474 MCU 2021-03-23 12:01:20 +11:00
Andy Piper
2823fa7245 AP_HAL_ChibiOS: never write bytes that have not been erased on H7
Be more careful about flash failure conditions on H7
2021-01-27 18:30:36 +11:00
Andy Piper
78735a946e AP_HAL_ChibiOS: allow STM32_FLASH_DISABLE_ISR for H7 2021-01-27 18:30:36 +11:00
Andrew Tridgell
b4201436dd HAL_ChibiOS: fixed flash space on 16k bl boards
this avoids the stm32_flash_recent_erase() function which added around
800 bytes to the bootloader. It is not needed
2020-12-17 12:51:25 +11:00
Andrew Tridgell
0c440d5675 HAL_ChibiOS: cope with flash erase in expected delay
when there has been a flash erase when we are definately in an
expected delay
2020-12-08 13:22:36 +11:00
Andrew Tridgell
6a1f43d5df HAL_ChibiOS: fixed build with our old compiler
gcc 4.9 doesn't like static_assert() in C code
2020-06-07 14:11:48 +10:00
Andrew Tridgell
74f33d57c5 HAL_ChibiOS: avoid unnecessary H7 flash writes 2020-04-14 10:02:51 +10:00
Peter Barker
1a123e5f8d AP_HAL_ChibiOS: avoid referencing flash sector/page 22 on 1MB boards 2020-03-03 10:13:53 +11:00
Andrew Tridgell
bc1de7a208 HAL_ChibiOS: support STM32F3xx MCUs 2019-11-01 10:53:53 +11:00
Andrew Tridgell
e6cb35090c HAL_ChibiOS: fixed page size for STM31F105 flash 2019-10-21 19:12:01 +11:00
Andrew Tridgell
0ffe2e75be HAL_ChibiOS: fixed warnings 2019-08-27 15:40:43 +10: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
fb68fa8bc9 HAL_ChibiOS: fixed typo for 512k F4 parts 2019-08-27 10:29:56 +10:00
Andrew Tridgell
16bdaaa1af HAL_ChibiOS: added support for STM31F10x for AP_Periph 2019-08-27 10:29:56 +10:00
Andrew Tridgell
26e76e51ed HAL_ChibiOS: fixed H7 build with older compilers 2019-02-26 16:18:26 +11:00
Andrew Tridgell
5f88340919 HAL_ChibiOS: fixed flash build warning 2019-02-26 16:18:26 +11:00
Andrew Tridgell
8a40ee8132 HAL_ChibiOS: fixed idle wait on H7 flash program 2019-02-26 16:18:26 +11:00
Andrew Tridgell
3c9ba02ce9 HAL_ChibiOS: fixed H7 flash 2019-02-26 16:18:26 +11:00
Andrew Tridgell
565706cf7e HAL_ChibiOS: fixed H7 flash handling 2019-02-26 16:18:26 +11:00
Andrew Tridgell
7aba99e229 HAL_ChibiOS: fixes for ChibiOS version update 2018-08-03 13:44:59 +10:00
Andrew Tridgell
946d0208e5 HAL_ChibiOS: fixed stm32f7 cache bug in erase flash page 2018-06-28 11:35:13 +10:00
Andrew Tridgell
bf6fb72904 HAL_ChibiOS: fixed 32 bit flash writes 2018-06-25 21:22:31 +10:00
Andrew Tridgell
e870b5f00a HAL_ChibiOS: use 32 bit flash operations when possible 2018-06-25 21:22:31 +10:00
Andrew Tridgell
feefa05b41 HAL_ChibiOS: expose stm32_flash_ispageerased() 2018-06-25 21:22:31 +10:00
Andrew Tridgell
dd1bd43a2e HAL_ChibiOS: added stm32_flash_keep_unlocked() 2018-06-25 21:22:31 +10:00
Andrew Tridgell
0cd46c063c HAL_ChibiOS: fixed flash driver for F7
we need a data sync barrier due to the F7 cache
2018-06-22 08:00:31 +10:00
Andrew Tridgell
3ef88e1b8f HAL_ChibiOS: allow flash support for bootloader 2018-06-22 08:00:31 +10:00
Andrew Tridgell
721f3cd5d1 HAL_ChibiOS: fixed flash layout for F7
thanks to @alielectric
2018-06-06 07:15:41 +10:00
Andrew Tridgell
1f6ffc48e5 HAL_ChibiOS: allow STM32F7 to build with flash driver 2018-06-06 07:15:41 +10:00
Andrew Tridgell
d1e4185817 HAL_ChibiOS: don't build flash.c if not needed 2018-04-12 11:50:44 +10: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