Commit Graph

336 Commits

Author SHA1 Message Date
Martin Luessi
0b2b218b34 AP_HAL_ChibiOS: Allow custom STM32_PLL1_DIVQ_VALUE for H7 2024-01-07 10:59:27 +11:00
Martin Luessi
703d581f93 AP_HAL_ChibiOS: RAM initialization and linker files changes for external flash targets 2024-01-07 10:59:27 +11:00
Martin Luessi
7fe79f1f34 AP_HAL_ChibiOS: Fix H750 linker script 2024-01-07 10:59:27 +11:00
Martin Luessi
a1bfea6481 AP_HAL_ChibiOS: Move scheduler task table to RAM for H750 2024-01-07 10:59:27 +11:00
Martin Luessi
4cae583872 AP_HAL_ChibiOS: Add libgcc comment to H750 linker script 2024-01-07 10:59:27 +11:00
Martin Luessi
6de5f3c7f7 AP_HAL_ChibiOS: Use DTCM for vector table for external flash targets 2024-01-07 10:59:27 +11:00
Martin Luessi
13ca44423d AP_HAL_ChibiOS: Move more time critical code to RAM for H750 2024-01-07 10:59:27 +11:00
Martin Luessi
9b2616c8e6 AP_HAL_ChibiOS: Copy vector table to RAM if external flash is primary 2024-01-07 10:59:27 +11:00
Martin Luessi
71a985d7a2 AP_HAL_ChibiOS: Change linker script so vector table can be copied to RAM for external flash targets 2024-01-07 10:59:27 +11:00
Martin Luessi
9c12ee89e1 AP_HAL_ChibiOS: Allow custom STM32_QSPISEL for H7 2024-01-07 10:59:27 +11:00
Andrew Tridgell
72fa526de4 ChibiOS: disable DMA on I2C on F7 and H7 by default
this was already done on many (most?) boards, and greatly reduces DMA
sharing which improves performance of UARTs. This changes the default
to no DMA on I2C
2024-01-07 10:59:26 +11:00
Andrew Tridgell
ca64a421e3 HAL_ChibiOS: implement newlib alloc functions as malloc wrappers
this fixes issue #24106
2024-01-07 10:59:26 +11:00
Andrew Tridgell
7527c6e278 HAL_ChibiOS: support starting the clock at non-zero
for testing time wrap bugs
2023-03-26 16:46:47 +11:00
Andrew Tridgell
0489323551 HAL_ChibiOS: Revert "HAL_ChibiOS: fix a memory corruption bug on STM32H757"
This reverts commit 63633368f5.

this broke CAN1 on some H743 boards
2023-03-19 07:17:28 +11:00
Andrew Tridgell
63633368f5 HAL_ChibiOS: fix a memory corruption bug on STM32H757
this fixes an issue where a variable in SRAM1 gets set to a bad value
when we reset AHB1 with the top bit (a reserved bit)

the bug was only reproducible with this particular commit:

https://github.com/tridge/ardupilot/commits/cubeorangplus-crash-boot-bisect

but likely is just luck that it triggered on that commit. In this
instance it triggered as AP_OSD::singleton was reset to non-nullptr,
causing a panic() in AP_OSD::AP_OSD()

compiler was gcc 10.2-2020-q4
2023-03-18 08:35:51 +11:00
Andrew Tridgell
91227433e9 HAL_ChibiOS: support VDD_5V_PERIPH_EN with active high 2023-03-15 19:08:53 +11:00
Peter Barker
349dd5089c AP_HAL_ChibiOS: replace NO_FASTBOOT with AP_FASTBOOT_ENABLED 2023-03-01 18:16:31 +11:00
Peter Barker
21836d792a AP_HAL_ChibiOS: remove calls to save_fault_watchdog if on bootloader 2023-03-01 12:01:03 +11:00
Peter Barker
1cb4bc223d AP_HAL_ChibiOS: entirely remove check_limit_flash_1M if not needed
taking up valuable space on non-F427 boards
2023-02-22 19:41:49 +11:00
Kirill Shilov
8a51c73e4a AIRLink: added LTE module enable pin to hwdef 2022-12-18 07:19:42 +11:00
Andrew Tridgell
07f80c2442 HAL_ChibiOS: make check_limit_flash_1M() available in main firmware 2022-10-06 10:58:46 +11:00
Andrew Tridgell
e5b46eb2a7 HAL_ChibiOS: fixed build error with gcc 11.3 2022-10-06 10:45:49 +11:00
Andrew Tridgell
f8b1169165 HAL_ChibiOS: rename ecc_raw to apsec_data 2022-09-05 12:35:37 +10:00
bugobliterator
0c78f8bac2 AP_HAL_ChibiOS: add support for booting into DFU 2022-08-30 10:51:06 +10:00
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
308717d5eb HAL_ChibiOS: enable ITCM and DTCM on H7 at startup
these may have been disabled by the px4 H7 bootloader
2022-06-15 17:28:40 +10:00
Lokesh Ramina
adfb2f9cad AP_HAL_Chibios: add_12Mhz_Clock_stm32F405
There was no option for 12Mhz for STM32F405
2022-05-12 17:40:21 +10:00
Andrew Tridgell
e73f868fc0 HAL_ChibiOS: disable fatal exceptions for DMA errors
this zeros-watchdog was caused by a SPI DMA error on STM32F405:

  https://discuss.ardupilot.org/t/crash-with-4-2-0-beta-and-4-3-0-daily-bdshot/83297

we had incorrectly left these internal errors enabled when asserts
were not enabled. That led to a osalSysHalt()

without these we get an spi_fail internal error, caught by the
SPIDevice code
2022-04-19 21:52:53 +10:00
Andy Piper
e89eb34d55 AP_HAL_ChibiOS: add I2C and compass backend to drivers in memory on H750
move more of EKF into memory on H750
move rc handling into memory on H750
disable double math on SPRacing H7
2022-04-12 09:19:45 +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
ceef68e07b AP_HAL_ChibiOS: allow H7 480Mhz clock speed to be configured in hwdef via MCU_CLOCKRATE_MHZ 2022-03-16 20:37:30 +11:00
bugobliterator
90a660b445 AP_HAL_ChibiOS: update clock tree to have FDCAN Base clock at 80MHz 2022-03-11 18:13:54 +11: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
Andy Piper
f840315aa4 AP_HAL_ChibiOS: clock H750 at 480Mhz when using 8Mhz, 16Mhz and 24Mhz crystals 2022-02-23 18:19:56 +11:00
Andrew Tridgell
f2308e96a9 HAL_ChibiOS: added stm32_was_software_reset() 2022-02-17 14:37:41 +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
Andrew Tridgell
e07057d24f HAL_ChibiOS: support SDIO 48MHz clock on F412 2022-02-02 07:42:23 +11:00
Andrew Tridgell
040ff007ea HAL_ChibiOS: fixed some F4 clocks, and support no crystal on F4
this fixes up some of the F4 varients that were running at the wrong
clock, and also gives support for running F4s with no crystal
2022-01-29 18:57:33 +11:00
Andrew Tridgell
61ecf0c443 HAL_ChibiOS: cleanup SDMMC enable defines
ensure both are set
2021-12-28 16:04:57 +11:00
Andrew Tridgell
146f394d64 HAL_ChibiOS: include fatfs format code 2021-12-28 16:04:57 +11:00
Andrew Tridgell
fbadc24fca HAL_ChibiOS: support 12MHz crystal on L4xx MCUs 2021-12-07 10:23:54 +11:00
bugobliterator
f9bb9b4fc0 AP_HAL_ChibiOS: log heap and bss memory regions if enough space 2021-12-01 18:17:50 +11:00
bugobliterator
ee35350129 HAL_ChibiOS: setup for recording crashdump at the remaining flash space 2021-12-01 18:17:50 +11:00
bugobliterator
52c7886270 HAL_ChibiOS: fix issue with failing to write final buffer 2021-12-01 18:17:50 +11:00
bugobliterator
eae3fb016f HAL_ChibiOS: dump per thread stack for crash 2021-12-01 18:17:50 +11:00
Andrew Tridgell
f7bc7b0d9b HAL_ChibiOS: support more enable pins for late enable 2021-11-10 08:47:21 +11:00
bugobliterator
57e1fb1a81 HAL_ChibiOS: disable building CrashCatcher for non 2M boards 2021-10-30 19:24:57 +11:00
bugobliterator
91fdf6e875 HAL_ChibiOS: fix issue with writing the last byte 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