Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 21 Next »

µC/TCP-IP is configurable at compile time via approximately 50 #defines in the application’s net_cfg.h file. µC/TCP-IP uses #defines because they allow code and data sizes to be scaled at compile time based on enabled features and the configured number of network objects. This allows the ROM and RAM footprints of µC/TCP-IP to be adjusted based on application requirements.

Most of the #defines should be configured with the default configuration values. A handful of values may likely never change because there is currently only one configuration choice available. This leaves approximately a dozen values that should be configured with values that may deviate from the default configuration.

It is recommended that the configuration process begins with the default configuration values which in the next sections will be shown in bold.

The sections in this chapter are organized following the order in µC/TCP-IP's template configuration file, net_cfg.h.

Task Queue Configuration

The µC/TCP-IP stack has two queues that need to be configured. The first one is the Rx queue and is used to store the Rx buffer that have been filled and are ready to be process. The second queue is the Tx deallocation and is used to store the Tx buffers that are ready to be deallocate.

Compile Features

Debug Features

Argument Check

Most functions in µC/TCP-IP include code to validate arguments that are passed to it. Specifically, µC/TCP-IP checks to see if passed pointers are NULL, if arguments are within valid ranges, etc. The following constants configure additional argument checking.

Counter Management

µC/TCP-IP contains code that increments counters to keep track of statistics such as the number of packets received, the number of packets transmitted, etc. Also, µC/TCP-IP contains counters that are incremented when error conditions are detected.

Timer Management

µC/TCP-IP manages software timers used to keep track of timeouts and execute callback functions when needed.

Network Interfaces Configuration

Address Resolution Protocol (ARP) Configuration

ARP is only used when the IPv4 stack is enabled.

ARP caches the mapping of IP addresses to physical (i.e., MAC) addresses. NET_ARP_CFG_NBR_CACHE configures the number of ARP cache entries. Each cache entry requires approximately 18 bytes of RAM, plus five pointers, plus a hardware address and protocol address (10 bytes assuming Ethernet interfaces and IPv4 addresses).

The number of ARP caches required by the application depends on how many different hosts are expected to communicate. If the application only communicates with hosts on remote networks via the local network’s default gateway (i.e., router), then only a single ARP cache needs to be configured.

To test µC/TCP-IP with a smaller network, a default number of 3 ARP caches should be sufficient.

Neighbor Discovery Protocol (NDP) Configuration

NDP is only used when the IPv6 stack is enabled.

IPv4 Layer Configuration

IPv6 Layer Configuration

Internet Group Management Protocol (IGMP) Configuration

NET_IGMP_CFG_MAX_NBR_HOST_GRP configures the maximum number of IGMP host groups that may be joined at any one time. Each group entry requires approximately 12 bytes of RAM, plus three pointers, plus a protocol address (4 bytes assuming IPv4 address).

The number of IGMP host groups required by the application depends on how many host groups are expected to be joined at a given time. Since each configured multicast address requires its own IGMP host group, it is recommended to configure at least one host group per multicast address used by the application, plus one additional host group. Thus for a single multicast address, it is recommended to setNET_IGMP_CFG_MAX_NBR_HOST_GRP with an initial value of 2.

Socket Layer Configuration

µC/TCP-IP supports BSD 4.x sockets and basic socket API for the TCP/UDP/IP protocols.

TCP Layer Configuration

UDP Layer Configuration

Security Management

  • No labels