2024-06-11 01:46 AM - last edited on 2024-06-11 01:51 AM by SofLit
HI,
my application is a tcp echoserver which works perfectly but, only for 10-20 minutes, after don't ping anymore.
I'm using STM32H723 with LWIP and RTOS and I think it's a memory configuration issue.
This is my setup:
void MPU_Config(void)
{
MPU_Region_InitTypeDef MPU_InitStruct = {0};
// Disables the MPU
HAL_MPU_Disable();
// Initializes and configures the Region and the memory to be protected
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
MPU_InitStruct.BaseAddress = 0x0;
MPU_InitStruct.Size = MPU_REGION_SIZE_4GB;
MPU_InitStruct.SubRegionDisable = 0x87;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
// Initializes and configures the Region and the memory to be protected
MPU_InitStruct.Number = MPU_REGION_NUMBER1;
MPU_InitStruct.BaseAddress = 0x30000000;
MPU_InitStruct.Size = MPU_REGION_SIZE_32KB;
MPU_InitStruct.SubRegionDisable = 0x0;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
// Initializes and configures the Region and the memory to be protected
MPU_InitStruct.Number = MPU_REGION_NUMBER2;
MPU_InitStruct.Size = MPU_REGION_SIZE_512B;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
// Enables the MPU
HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}
Can anyone heelp me?
I can accept the reset.
Is it possible to verify the absence of the connection to restart the system?
b.r.
2024-06-11 01:52 AM
Hello,
Please in next time use <\> button to insert your code for better visibility.
Thank you for your understanding.
2024-06-20 10:19 AM
Hello @Stefano1 ,
your problem seems to be retated to issue Ethernet transmit is hang on osSemaphoreAcquire( TxPktSemaphore ) inside low_level_output() · Issue #224 · STMicroelectronics/STM32CubeH7 (github.com).
please check this out.
Regards