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

Fullscreen
1
2
3
OS_DYNAMIC_MEM_SIZE 32768
OS_STACK_SIZE 3072
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

And Network System Settings in NET_CONFIG.c

Fullscreen
1
#define NET_MEM_POOL_SIZE 12000
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

And Startup settings in startup_stm32f10x_cl.s

Fullscreen
1
2
3
Stack_Size EQU 0x00000400
Heap_Size EQU 0x00000200
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

  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:

Fullscreen
1
2
3
4
5
6
7
8
9
.\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).
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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.

 

0