STM32H7 Dual Core, GPIO is not set after power reset
Hello,
I am experimenting on the STM32H45 Discovery Board (Dual Core) to use some GPIOs from different Core-Context.
I initialized few Pins only for the CM7 and few dedicated pins only for the CM4. When I perform a debug session, all the mentioned pins are set to HIGH . I went trhough the internal registers and measured the values on the pins (3,3V). Everything seems to be ok.
But when I do a power reset (USB cable off and on) and I measure again, I see that all the output pins wich are controlled by the CM4 are LOW. First I thought it is somehow connected to the synchronization process with the hardware semaphores (generated by MxCube), but I removed those parts in order to be sure I am not missing anyhting. The Power-Down call of the Domain2 on the CM4 at the beginning is commented out. But this doesn't solve the problem after a hardware reset
Why does this even happen? I mean the H7 architecture allows you to access most of the periphericals by CM4 and CM7. But this one seems to be strange.
Is there something I need to take into account when performing a debug session and then performing a power reset? I have seen that the HAL GPIO provides a Locking mechanism for the GPIOS, but I am not using such a function call at all.
Do I need to take smth into account when the same GPIO Port Bank is initialized twice by CM4 and CM7 because different pins are used on the same PORT? In the end , you just enable the corresponding clock of the bank. Does it harm when I initialize the Clock of a specific GPIO Port Bank several times although it was already done before ? Do I mess up the H7 here ? I even tried to initialize the PORT-CLK globally only once from CM7 context, and then letting the CM4 just to initlaize the specific Pin as a output. During debugging, this also runs smooth, but after a power cycle, the GPIOs contolled by the CM4 are not set anymore. Is something getting overwritten?
For me it is hard to understand that such a behaviour is not occuring during a ST-Link Debugg-Session, but after a simple power reset, nothing is set properly.
What is wrong with my current approach ?
