Browse Source

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
AP_Periph-1.3
Andrew Tridgell 3 years ago
parent
commit
0a38fa7172
  1. 6
      libraries/AP_HAL_ChibiOS/hwdef/common/mcuconf.h
  2. 6
      libraries/AP_HAL_ChibiOS/hwdef/common/stm32f1_mcuconf.h
  3. 6
      libraries/AP_HAL_ChibiOS/hwdef/common/stm32f3_mcuconf.h
  4. 8
      libraries/AP_HAL_ChibiOS/hwdef/common/stm32f47_mcuconf.h
  5. 6
      libraries/AP_HAL_ChibiOS/hwdef/common/stm32g4_mcuconf.h
  6. 6
      libraries/AP_HAL_ChibiOS/hwdef/common/stm32h7_mcuconf.h
  7. 6
      libraries/AP_HAL_ChibiOS/hwdef/common/stm32l4_mcuconf.h

6
libraries/AP_HAL_ChibiOS/hwdef/common/mcuconf.h

@ -37,6 +37,12 @@ @@ -37,6 +37,12 @@
// include generated config
#include "hwdef.h"
#ifdef HAL_CHIBIOS_ENABLE_ASSERTS
#define STM32_DMA_ERROR_HOOK(devp) osalSysHalt("DMA failure")
#else
#define STM32_DMA_ERROR_HOOK(devp) do {} while(0)
#endif
#if defined(STM32F1)
#include "stm32f1_mcuconf.h"
#elif defined(STM32F3)

6
libraries/AP_HAL_ChibiOS/hwdef/common/stm32f1_mcuconf.h

@ -113,7 +113,7 @@ @@ -113,7 +113,7 @@
#define STM32_I2C_I2C2_IRQ_PRIORITY 5
#define STM32_I2C_I2C1_DMA_PRIORITY 3
#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) STM32_DMA_ERROR_HOOK(i2cp)
/*
* ICU driver system settings.
@ -154,7 +154,7 @@ @@ -154,7 +154,7 @@
#define STM32_SPI_SPI2_DMA_PRIORITY 1
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
#define STM32_SPI_DMA_ERROR_HOOK(spip) STM32_DMA_ERROR_HOOK(spip)
/*
* ST driver system settings.
@ -172,7 +172,7 @@ @@ -172,7 +172,7 @@
#define STM32_UART_USART1_DMA_PRIORITY 0
#define STM32_UART_USART2_DMA_PRIORITY 0
#define STM32_UART_USART3_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
#define STM32_UART_DMA_ERROR_HOOK(uartp) STM32_DMA_ERROR_HOOK(uartp)
/*
* WDG driver system settings.

6
libraries/AP_HAL_ChibiOS/hwdef/common/stm32f3_mcuconf.h

@ -127,7 +127,7 @@ @@ -127,7 +127,7 @@
#define STM32_I2C_I2C2_IRQ_PRIORITY 5
#define STM32_I2C_I2C1_DMA_PRIORITY 3
#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) STM32_DMA_ERROR_HOOK(i2cp)
/*
* ICU driver system settings.
@ -168,7 +168,7 @@ @@ -168,7 +168,7 @@
#define STM32_SPI_SPI2_DMA_PRIORITY 1
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
#define STM32_SPI_DMA_ERROR_HOOK(spip) STM32_DMA_ERROR_HOOK(spip)
/*
* ST driver system settings.
@ -186,7 +186,7 @@ @@ -186,7 +186,7 @@
#define STM32_UART_USART1_DMA_PRIORITY 0
#define STM32_UART_USART2_DMA_PRIORITY 0
#define STM32_UART_USART3_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
#define STM32_UART_DMA_ERROR_HOOK(uartp) STM32_DMA_ERROR_HOOK(uartp)
/*
* WDG driver system settings.

8
libraries/AP_HAL_ChibiOS/hwdef/common/stm32f47_mcuconf.h

@ -389,7 +389,7 @@ @@ -389,7 +389,7 @@
#define STM32_I2C_I2C1_DMA_PRIORITY 3
#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_I2C3_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) STM32_DMA_ERROR_HOOK(i2cp)
/*
* I2S driver system settings.
@ -398,7 +398,7 @@ @@ -398,7 +398,7 @@
#define STM32_I2S_SPI3_IRQ_PRIORITY 10
#define STM32_I2S_SPI2_DMA_PRIORITY 1
#define STM32_I2S_SPI3_DMA_PRIORITY 1
#define STM32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
#define STM32_I2S_DMA_ERROR_HOOK(i2sp) STM32_DMA_ERROR_HOOK(i2sp)
/*
* ICU driver system settings.
@ -485,7 +485,7 @@ @@ -485,7 +485,7 @@
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
#define STM32_SPI_SPI4_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
#define STM32_SPI_DMA_ERROR_HOOK(spip) STM32_DMA_ERROR_HOOK(spip)
/*
* ST driver system settings.
@ -523,7 +523,7 @@ @@ -523,7 +523,7 @@
#define STM32_UART_UART4_DMA_PRIORITY 0
#define STM32_UART_UART5_DMA_PRIORITY 0
#define STM32_UART_USART6_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
#define STM32_UART_DMA_ERROR_HOOK(uartp) STM32_DMA_ERROR_HOOK(uartp)
#define STM32_IRQ_UART1_PRIORITY 12
#define STM32_IRQ_UART2_PRIORITY 12

6
libraries/AP_HAL_ChibiOS/hwdef/common/stm32g4_mcuconf.h

@ -239,7 +239,7 @@ @@ -239,7 +239,7 @@
#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_I2C3_DMA_PRIORITY 3
#define STM32_I2C_I2C4_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) STM32_DMA_ERROR_HOOK(i2cp)
/*
* SPI driver system settings.
@ -252,7 +252,7 @@ @@ -252,7 +252,7 @@
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
#define STM32_SPI_SPI4_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
#define STM32_SPI_DMA_ERROR_HOOK(spip) STM32_DMA_ERROR_HOOK(spip)
/*
* ST driver system settings.
@ -276,7 +276,7 @@ @@ -276,7 +276,7 @@
#define STM32_UART_USART3_DMA_PRIORITY 0
#define STM32_UART_UART4_DMA_PRIORITY 0
#define STM32_UART_UART5_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
#define STM32_UART_DMA_ERROR_HOOK(uartp) STM32_DMA_ERROR_HOOK(uartp)
/*
* USB driver system settings.

6
libraries/AP_HAL_ChibiOS/hwdef/common/stm32h7_mcuconf.h

@ -420,7 +420,7 @@ @@ -420,7 +420,7 @@
#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_I2C3_DMA_PRIORITY 3
#define STM32_I2C_I2C4_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) STM32_DMA_ERROR_HOOK(i2cp)
/*
* ICU driver system settings.
@ -527,7 +527,7 @@ @@ -527,7 +527,7 @@
#define STM32_SPI_SPI4_IRQ_PRIORITY 10
#define STM32_SPI_SPI5_IRQ_PRIORITY 10
#define STM32_SPI_SPI6_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
#define STM32_SPI_DMA_ERROR_HOOK(spip) STM32_DMA_ERROR_HOOK(spip)
/*
* ST driver system settings.
@ -554,7 +554,7 @@ @@ -554,7 +554,7 @@
#define STM32_UART_USART6_DMA_PRIORITY 0
#define STM32_UART_UART7_DMA_PRIORITY 0
#define STM32_UART_UART8_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
#define STM32_UART_DMA_ERROR_HOOK(uartp) STM32_DMA_ERROR_HOOK(uartp)
#define STM32_IRQ_LPUART1_PRIORITY 12

6
libraries/AP_HAL_ChibiOS/hwdef/common/stm32l4_mcuconf.h

@ -220,7 +220,7 @@ @@ -220,7 +220,7 @@
#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_I2C3_DMA_PRIORITY 3
#define STM32_I2C_I2C4_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) STM32_DMA_ERROR_HOOK(i2cp)
/*
* PWM driver system settings.
@ -266,7 +266,7 @@ @@ -266,7 +266,7 @@
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
#define STM32_SPI_DMA_ERROR_HOOK(spip) STM32_DMA_ERROR_HOOK(spip)
/*
* ST driver system settings.
@ -294,7 +294,7 @@ @@ -294,7 +294,7 @@
#define STM32_UART_USART3_DMA_PRIORITY 0
#define STM32_UART_UART4_DMA_PRIORITY 0
#define STM32_UART_UART5_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
#define STM32_UART_DMA_ERROR_HOOK(uartp) STM32_DMA_ERROR_HOOK(uartp)
/*
* USB driver system settings.

Loading…
Cancel
Save