RTOS Memory Management and error: no member named 'IP' in 'NVIC_Type' error

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.

First: I have updated all my packages to the latest version and my previous program that worked fine now it is now facing this error:

C:/Users/Volter/AppData/Local/Arm/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/StdPeriph_Driver/src/misc.c(131): error: no member named 'IP' in 'NVIC_Type'
  131 |     NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority;

Second:

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 the 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've updated my packages to

ARM.CMSIS.6.1.0

ARM.CMSIS-Compiler.2.1.0

ARM.CMSIS-Driver.2.8.0

ARM.CMSIS-View.1.2.0

Keil.STM32F1xx_DFP.2.4.1

Keil.MDK-Middleware.7.17.0

ARM.CMSIS-RTX.5.9.0

And set all of them in the Run time environment window but I receive this error:!!!

 error: no member named 'IP' in 'NVIC_Type'

I appreciate your help and explanations.