Skip to main content
Graduate
November 8, 2024
Solved

H7 SystemInit contains line with no effect

  • November 8, 2024
  • 2 replies
  • 1364 views

I had debugging problems with a H7 target, and by stepping thru the boot process I found the following line in SystemInit():

 

/*
 * Disable the FMC bank1 (enabled after reset).
 * This, prevents CPU speculation access on this bank which blocks the use of FMC during
 * 24us. During this time the others FMC master (such as LTDC) cannot use it!
 */
 FMC_Bank1_R->BTCR[0] = 0x000030D2;

 

At this stage of the boot process, the FMC power is not enabled, and thus reading or writing the register has no effect. Am I overseeing something or is this line for confusion?

    This topic has been closed for replies.
    Best answer by mƎALLEm

    Hello @JojoS ,


    @JojoS wrote:

    At this stage of the boot process, the FMC power is not enabled, 


    You mean FMC clock not the power but your comment makes sense as the FMC clock is enabled in SystemInit_ExtMemCtl(), just after. 

    I will escalate this remark internally and get back to you as soon as I have an answer. Internal ticket number for follow up: 196021

    2 replies

    mƎALLEmAnswer
    Technical Moderator
    November 8, 2024

    Hello @JojoS ,


    @JojoS wrote:

    At this stage of the boot process, the FMC power is not enabled, 


    You mean FMC clock not the power but your comment makes sense as the FMC clock is enabled in SystemInit_ExtMemCtl(), just after. 

    I will escalate this remark internally and get back to you as soon as I have an answer. Internal ticket number for follow up: 196021

    JojoSAuthor
    Graduate
    November 8, 2024

    Thanks, of corse it as a minor issue as it should have no affect. But it would be clearer if it is conditionally inserted. 

    Technical Moderator
    November 13, 2024

    FYI,

    Issue confirmed and will be fixed.

    Graduate II
    November 8, 2024

    >> Am I overseeing something or is this line for confusion?

    Are you easily confused, is it a problem?

    Probably there due to the generic way in which ST builds these thing, and perhaps salient to one particular case.

    Perhaps so when built as a secondary application the loader has already started the clocks, external memories, etc prior to getting here.

    Which file/project was this lifted from? An EVAL / DISCO board?

    The SystemInit() in ARM's model would be used to bring up the whole board and memories so startup.s code can copy statics, etc.