This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Some questions about RTOS and its settings

Hi,

 

I am a newbie to use RTOS and Ethernet networks with CMSIS function and RTOS2 API. I used STM32 MCUs with bare metal structure but the RTOS is something amazing. So I have some questions and I would be grateful if you could explain them to me. I can start the TCO/UDP protocol on my STM32f107 MCU and now I need to deepen my understanding.

I used default values of RTOS configuration in the RTX_Config.H

OS_DYNAMIC_MEM_SIZE         32768

OS_STACK_SIZE               3072

And Network System Settings in NET_CONFIG.c

#define NET_MEM_POOL_SIZE    12000

And Startup settings in startup_stm32f10x_cl.s

Stack_Size      EQU     0x00000400

Heap_Size       EQU     0x00000200

 

  1. Does the memory pool size of network settings use the OS_DYNAMIC_MEM_SIZE in the RTX_Config.H file (32768-12000)=20768? Or it is independent. How can I find the maximum value of accessible RAM for the OS_DYNAMIC_MEM_SIZE variable?
  2. As I changed the default values of the stack or heap of startup( about twice(400Hex to 800hex ) ) these errors came to me:

 

.\Objects\TCP.axf: Error: L6406E: No space in execution regions with .ANY selector matching net_config.o(.bss.udp_scb).

.\Objects\TCP.axf: Error: L6406E: No space in execution regions with .ANY selector matching emac_stm32f10x.o(.bss.tx_desc).

.\Objects\TCP.axf: Error: L6406E: No space in execution regions with .ANY selector matching net_config.o(.bss.os.mutex.cb).

.\Objects\TCP.axf: Error: L6406E: No space in execution regions with .ANY selector matching net_sys.o(.bss).

.\Objects\TCP.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_lib.o(.bss.os.msgqueue.cb).

Why does this happen for these small values?

  1. What is “OS Resource Settings” in Net_Config_ETH_0.h? What is the best value for this OS Resource Settings?
  2. What is the Priority value of RTOS and Network APIs regarding the NVIC table? Because I need to call different interrupts and I need to set them as less or higher priority for them.
  3. I didn’t use the source code of CMSIS core or RTOS library (I used the library form from the Run time environment window), But I still get this error to see the RTOS threads while the watermark is enabled.

 

I appreciate your help and explanations.