cancel
Showing results for 
Search instead for 
Did you mean: 

LWIP Server FREERTOS

Stefano1
Associate

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.

2 REPLIES 2
SofLit
ST Employee

Hello,

Please in next time use <\> button to insert your code for better visibility.

Thank you for your understanding.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
STea
ST Employee

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

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.