Skip to content

Commit

Permalink
AP_HAL_ChibiOS:hwdef/common: disable second core on dual core MCUs
Browse files Browse the repository at this point in the history
  • Loading branch information
bugobliterator committed Jul 3, 2024
1 parent e7e372a commit 77b603e
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
3 changes: 3 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/common/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,9 @@ void __early_init(void) {
STM32_NOCACHE_MPU_REGION_2_SIZE |
MPU_RASR_ENABLE);
#endif
#if defined(DUAL_CORE)
stm32_disable_cm4_core(); // disable second core
#endif
#endif
}

Expand Down
28 changes: 28 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/common/stm32_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -581,3 +581,31 @@ bool check_limit_flash_1M(void)
return false;
}
#endif


#if defined(DUAL_CORE)
void stm32_disable_cm4_core() {
// Turn off second core for now
if ((FLASH->OPTSR_CUR & FLASH_OPTSR_BCM4)) {
//unlock flash
if (FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) {
/* Unlock sequence */
FLASH->OPTKEYR = 0x08192A3B;
FLASH->OPTKEYR = 0x4C5D6E7F;
}
while (FLASH->OPTSR_CUR & FLASH_OPTSR_OPT_BUSY) {
}
// disable core boot
FLASH->OPTSR_PRG &= ~FLASH_OPTSR_BCM4;
// start programming
FLASH->OPTCR |= FLASH_OPTCR_OPTSTART;
// wait for completion by checking busy bit
while (FLASH->OPTSR_CUR & FLASH_OPTSR_OPT_BUSY) {
}
// lock flash
FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK;
while (FLASH->OPTSR_CUR & FLASH_OPTSR_OPT_BUSY) {
}
}
}
#endif // DUAL_CORE
2 changes: 2 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/common/stm32_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ extern stkalign_t __main_stack_end__;
extern stkalign_t __main_thread_stack_base__;
extern stkalign_t __main_thread_stack_end__;

void stm32_disable_cm4_core(void);

#ifdef __cplusplus
}
#endif
Expand Down

0 comments on commit 77b603e

Please sign in to comment.