2021-08-03 01:24 AM
Hello,
I am trying to manage data transfer between the 2 core of the STM32H747.
My problem is all hardware semaphore are locked just at the initialisation phase ( MASTERID 0X03 , Core M7)
After Hal_Init(); & SystemClock_Config(); all is free.
after __HAL_RCC_HSEM_CLK_ENABLE(); All HSEM_RLRx are set to 0x8000300 ( MasterID 0X03 & lock)
and I soon I do HAL_HSEM_FastTake(HSEM_ID_0);
All register HSEM_Rx are set to 0x8000300.
If I do HAL_HSEM_ReleaseAll(0, HSEM_CPU1_COREID);
it clear all HSEM_Rx register but all HSEM_RLRx stay at 0x8000300.
One step later all HSEM_Rx register are locked.
Many thanks for your help.
Regards
Bertrand
2021-08-26 01:12 PM
This sounds like the same issue I encountered. I assume your looking at HSEM_RLRx with a debugger. You can't do that because all that has to happen for the semaphores to lock is reading the RLRx register, and as a side effect of the debugger reading the RLRx registers, it satisfies the read and results in all the semaphores locked.
The only solution I found was to find the svd file in my compiler install directory and edit the svd file that corresponds to the core of the STM your using and to remove all of the RLRx registers.
2021-08-26 01:16 PM
Yes, I was looking with the debugger.
Many thanks for the way to workaround.
I will try.
Thanks.
Bertrand