Commit Graph

380 Commits

Author SHA1 Message Date
Andy Piper a115681373 AP_HAL_ChibiOS: add support for building USB MSD 2023-03-29 20:49:40 +11:00
Andy Piper a56a2ec2c1 AP_HAL_ChibiOS: correct SDC power saving 2023-03-29 20:49:40 +11:00
Andy Piper 73da2162d2 AP_HAL_ChibiOS: QSPI prescaler is indexed from 1 2023-03-29 20:49:40 +11:00
Andy Piper d9d252a1b7 AP_HAL_ChibiOS: update clock trees for H7 variants 2023-03-29 20:49:40 +11:00
Andy Piper 667b386356 AP_HAL_ChibiOS: port to ChibiOS 21.11.x
convert RCOutput to new virtual timer interface
cope with SDC vs SDMMC
use new SPIv3 driver. Correct clocks for SDMMCv2.
add STM32L431 support
port ChibiOS config to version 8
support SPIv3 driver model v2 on H7
use currcore in debug options
use new mmc API
disable speed optimizations in the bootloader to save a little flash
upgrade to halconf v8.4
relax constraints on QSP/flash clock.
add support for disabling QSPI reset in main firmware
2023-03-29 20:49:40 +11:00
Andrew Tridgell 4141dd5bbe HAL_ChibiOS: support starting the clock at non-zero
for testing time wrap bugs
2023-03-24 08:31:25 +11:00
Ryan Friedman 5dbfec1e33 AP_HAL_ChibiOS: Add poll implementation
Signed-off-by: Ryan Friedman <ryanfriedman5410+github@gmail.com>
Co-authored-by: Arsh Pratap <arshpratapofficial@gmail.com>
Co-authored-by: Andrew Tridgell <andrew@tridgell.net>
2023-03-22 09:22:36 +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
bugobliterator 909f59f0e0 HAL_ChibiOS: fix build with boards without HAL_CRASH_SERIAL_PORT 2021-10-30 19:24:57 +11:00
bugobliterator a6b2018cbf HAL_ChibiOS: fix build and serial crash dump for F4 based boards 2021-10-30 19:24:57 +11:00
bugobliterator 7d199f3e51 HAL_ChibiOS: record info into watchdog as well 2021-10-30 19:24:57 +11:00
bugobliterator 13c83f7010 HAL_ChibiOS: remove build of Crash dump to flash methods when !defined(HAL_CRASH_DUMP_FLASHPAGE) 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
bugobliterator bd08d2d257 HAL_ChibiOS: move crashcatcher methods out from system.cpp into hwdef common 2021-10-30 19:24:57 +11:00
bugobliterator c32bd845f2 HAL_ChibiOS: build crashcatcher lib alongside chibios 2021-10-30 19:24:57 +11:00
Andrew Tridgell 5a68e21435 HAL_ChibiOS: support STM32L431 2021-10-17 20:30:20 +11:00
Andrew Tridgell f1ea4f5d01 HAL_ChibiOS: use a 16 bit sysinterval_t on 16 bit timers
prevent mixed size subtraction errors
2021-10-17 20:29:42 +11:00
Andrew Tridgell 25324ae0e2 HAL_ChibiOS: support SDMMC2 for sdcard 2021-10-12 15:47:51 +11:00
Nick Exton ffa2bba35c HAL_ChibiOS: add missing return to Dual CDC get_usb_baud() 2021-10-12 10:54:44 +11:00
bugobliterator f298ea406e HAL_ChibiOS: enable RNG only for H7 based boards off for the rest by default 2021-10-07 19:43:11 +11:00
bugobliterator fc4d59c5a4 HAL_ChibiOS: setup hw random number generator for stm32 chips 2021-10-07 19:43:11 +11:00
Andrew Tridgell 52124cf602 HAL_ChibiOS: fixed f1 bootloader build errors 2021-10-06 06:44:36 +11:00
Andrew Tridgell 8deaa1b46b HAL_ChibiOS: fixed warning for USB 2021-10-06 06:44:36 +11:00
Andrew Tridgell 4daf4ad501 HAL_ChibiOS: lock in no warnings for chibios RTOS build 2021-10-06 06:44:36 +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 2e4766fe54 HAL_ChibiOS: ensure HI_POWER periph is on 2021-09-07 10:40:44 +10:00
Siddharth Purohit d484477a99 AP_HAL_ChibiOS: move to using PLL2_R_CK for QSPI 2021-09-01 17:10:53 +10:00
Siddharth Purohit 81dc237a19 AP_HAL_ChibiOS: move to using Instruction RAM with External Flash setup 2021-09-01 17:10:53 +10:00
Siddharth Purohit 813e93a69c AP_HAL_ChibiOS: do not reset GPIO for boards with external flash 2021-09-01 17:10:53 +10:00
Siddharth Purohit 4ba2835de1 AP_HAL_ChibiOS: add config for supporting load from external flash 2021-09-01 17:10:53 +10:00
Andrew Tridgell 584fb7cd7b HAL_ChibiOS: use more USB buffers on higher end F7 chips 2021-08-31 10:12:00 +10:00
Andrew Tridgell 4cebcede31 HAL_ChibiOS: switched to fix allocation for BMDA streams on H7
this avoids issues with BDMA stream assignments due to bugs found
while testing boards with both I2C4 and SPI6
2021-08-25 07:11:31 +10:00
Andrew Tridgell 57e87b9820 HAL_ChibiOS: measure MCU temperature and ref voltage on H7
this uses ADC3 to measure the internal MCU temperature and the reference
voltage. This uses a currently unused BDMA channel
2021-08-25 07:11:31 +10:00
Andrew Tridgell 531ca4289e HAL_ChibiOS: switch to minimum scheduling delta of 10us
this avoids an issue with the ChibiOS 20.3 virtual timer
implementation that can result in a scheduling slip equal to the
system timer period.

Andy has been suggesting this change for a while. I resisted it as I
thought it would impact on soft-serial parsing, but it turns out it
doesn't.

Fixes issue #18383
2021-08-23 10:45:44 +10:00
Andrew Tridgell 4fce1ae092 HAL_ChibiOS: added G491 support 2021-07-30 10:20:52 +10:00
bugobliterator 48b8fdfd48 AP_HAL_ChibiOS: make linecoding objects static arrays 2021-07-21 17:06:41 +10:00
bugobliterator d1b0438412 AP_HAL_ChibiOS: add support for usb passthrough with baud changes 2021-07-21 17:06:41 +10:00
Michael Oborne d622aad592 AP_HAL_ChibiOS: add get_usb_baud - support for usb baudrate 2021-07-21 17:06:41 +10:00
Siddharth Purohit 245f9d21b3 AP_HAL_ChibiOS: update clock config for FDCAN and External Flash 2021-06-30 19:34:36 +10:00
Siddharth Purohit 263fbbbdb0 AP_HAL_ChibiOS: add echo safe debug flag bouncebuffer 2021-06-30 19:33:17 +10:00
Siddharth Purohit abc26d1993 AP_HAL_ChibiOS: add QSPI Device Driver in HAL 2021-06-30 19:33:17 +10:00
Andrew Tridgell e1a5d73504 HAL_ChibiOS: fixed DTCM comment for F732 2021-05-09 06:44:19 +10:00
Andrew Tridgell 2dc4c50953 HAL_ChibiOS: fixed default OTP address and size 2021-05-09 06:44:19 +10:00
Andrew Tridgell 22f7218acf HAL_ChibiOS: support 512k F7 parts for flash 2021-05-09 06:44:19 +10:00
Andrew Tridgell 03cae60471 HAL_ChibiOS: added STM32F732 support 2021-05-09 06:44:19 +10:00
Andrew Tridgell 8764d69e2c HAL_ChibiOS: default SDMMC clock to 12.5MHz max on H7
this makes microsd considerably more reliable
2021-05-02 13:04:42 +10:00
Andy Piper 558631918c AP_HAL_ChibiOS: add %age of total to thread statistics
don't display meaningless thread info
2021-04-21 17:14:11 +10:00
Andrew Tridgell 61c829d624 HAL_ChibiOS: only use SRAM4 for DMA for now
we can enable others when we have an allocation interface that
specifies the peripheral type
2021-04-07 17:10:45 +10:00
Iampete1 2377d33417 AP_HAL_ChibiOS: H7 set SRAM4 to no cache and allow DMA 2021-04-07 17:10:45 +10:00
Andrew Tridgell ca948171fe HAL_ChibiOS: fixed ADC error on revXY STM32H7 boards
with the new ChibiOS revision we were configuring for newer revisions
of the H7, which meant that we changed the ADC config. This broke ADC
readings on revX and revY H7 MCUs.

This PR fixes it in two ways:

 1) change ChibiOS config to assume XY config chips

 2) use 16 bit ADC for H7, which means the chip rev doesn't matter,
    and also gives us 16x the resolution for ADC readinga, so we can
    read smaller voltage and current values
2021-04-05 11:01:03 +10:00
Andrew Tridgell 2d4dfe8a2a HAL_ChibiOS: fixed (unused) FF_FS_TIMEOUT
this change was harmless as we don't define FF_FS_REENTRANT
2021-03-23 12:01:20 +11:00
Andrew Tridgell ffb2876f58 HAL_ChibiOS: disable unused ChibiOS features 2021-03-23 12:01:20 +11: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 5b59445471 AP_HAL_ChibiOS: fixes for build with 20.3.x ChibiOS 2021-03-23 12:01:20 +11:00
Andrew Tridgell 243cf2199d HAL_ChibiOS: disable shared DMA on IOMCU
this saves about 600 bytes of ram
2021-02-24 18:21:08 +11:00
Andrew Tridgell 7af20e9ea3 HAL_ChibiOS: increase H7 serial buffer sizes
this takes better advantage of the new UART code. Log download over
USB gets to 730 kbyte/s. For comparison, with the 4.0 code on the same
H7 we get about 300 kbyte/s
2021-02-20 20:49:45 +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 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 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
Andy Piper 6f5d5c2bf9 AAP_HAL_ChibiOS: allow asserts to be printed on a GPIO pin 2021-01-27 19:36:58 +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
bugobliterator 8b90eb23e0 AP_HAL_ChibiOS: distcc doesn't like lst generation commands 2021-01-20 19:21:14 +11:00