Skip to main content
Explorer
December 16, 2025
Question

STM32CubeIDE 1.19 generates incorrect startup.s file for STM32H7 dual core MCUs

  • December 16, 2025
  • 2 replies
  • 31 views

Hi,

If I use STM32CubeIDE 1.19 to start a new project for the STM32H755 Nucleo board, the startup assembly files in both the CM7 and CM4 sub-projects are the same file with the same contents, startup_stm32h755zitx.s.  It looks like this file is the one generated for the M7 core that just gets copied over to the M4 directory, because inside it has: .cpu cortex-m7

Now, I know both cores share all the peripherals and interrupts.  But I would assume the ".cpu" definition would need to be cortex-m4 for the M4 core.  So far I haven't seen any issue, but this is probably a hidden bug.

Thanks,

-m

    This topic has been closed for replies.

    2 replies

    Technical Moderator
    December 19, 2025

    Hello @mordent 

    Thank you for bringing this up!

    I will check this internally with the dedicated team and get back to you ASAP.

    KR, Souhaib

    Technical Moderator
    December 25, 2025

    Hello @mordent 

    Thank you for bringing this up!

    After check, there is no issue with this behavior.
    In fact, there is only one common startup file for the STM32H755 that includes cortex-m7 because CM7 is the primary boot core. CM7 is the only core that boots after reset and performs the system initialization, while the CM4 is started later by the CM7 through software.

    KR, Souhaib

    mordentAuthor
    Explorer
    December 25, 2025

    That is completely not true.  Both cores boot up with their own interrupt vectors and startup files, running their own reset handlers.  What you're actually talking about is the synchronization of the two cores after bootup that's done in software.

    I know this for a fact because we have two separate startup files for the H7 in our project.  Our CM4 and CM7 use different memory initializations for certain variables in special RAM sections.  This wouldn't be possible if they used the same startup file.  We actually had to make our own copy of the startup and modify it for each core.