Directories and Files

Below is a summary of all directories and files that comprise the µC/TCP-IP stack. The ‘<-Cfg’ on the far right indicates that these files are typically copied into the application (i.e., project) directory and edited based on project requirements.

\Micrium
    \Examples
            \<manufacturer>
                \<board_name>
                    \<project_name>
                        \<compiler>
                        \*.*
    \Software
        \uC-TCPIP
            \BSP
                \Template
                    \net_bsp_ether.c
                    \net_bsp_ether.h
                    \net_bsp_wifi.c
                    \net_bsp_wifi.h
            \Cfg
                \Template
                    \net_cfg.c                       <-Cfg
                    \net_cfg.h                       <-Cfg
                    \net_dev_cfg.c                   <-Cfg
                    \net_dev_cfg.h                   <-Cfg    
            \Cmd
                \net_cmd.c
                \net_cmd.h
                \net_cmd_args_parser.c
                \net_cmd_args_parser.h
                \net_cmd_output.c
                \net_cmd_output.h
            \Dev
                \Ether
                    \<controller>
                        \net_dev_<controller>.c
                        \net_dev_<controller>.h
                    \PHY
                        \controller>
                            \net_phy_<controller>.c
                            \net_phy_<controller>.h
                        \Generic
                            \net_phy.c
                            \net_phy.h
                \WiFi
                    \<controller>
                        \net_dev_<controller>.c
                        \net_dev_<controller>.h
                    \Manager
                        \Generic
                            \net_wifi_mgr.c
                            \net_wifi_mgr.h
            \Examples
				\Init
					init_ether.c
					init_multiple_if.c
					init_wifi.c
                \Socket
                    tcp_client.c
                    tcp_server.c
                    udp_client.c
                    udp_server.c
				\TLS-SSL
					client_secure.c
					server_secure.c
			\IF
                \net_if.c
                \net_if.h
                \net_if_802x.c
                \net_if_802x.h
                \net_if_ether.c
                \net_if_ether.h
                \net_if_wifi.c
                \net_if_wifi.h
                \net_if_loopback.c
                \net_if_loopback.h
            \IP
                \IPv4
                    \net_arp.c
                    \net_arp.h
                    \net_icmpv4.c
                    \net_imcpv4.h
                    \net_igmp.c
                    \net_igmp.h
                    \net_ipv4.c
                    \net_ipv4.h 
                \IPv6
                    \net_icmpv6.c
                    \net_icmpv6.h
                    \net_ipv6.c
                    \net_ipv6.h
                    \net_mldp.c
                    \net_mldp.h
                    \net_ndp.c
                    \net_ndp.h
            \Modules
                \Common
                    \net_base64.c
                    \net_base64.h
                    \net_sha1.c
                    \net_sha1.h
            \Ports
                \<architecture>
                    \<compiler>
                        \net_util_a.asm
            \Secure
                net_secure.h
                \<security_suite_name>
                    \net_secure_<suite_name>.c
                    \net_secure_<suite_name>.h
            \Source
                \net.c
                \net.h
                \net_app.c
                \net_app.h
                \net_ascii.c
                \net_ascii.h
                \net.bsd.c
                \net.bsd.h
                \net.buf.c
                \net.buf.h
                \net_cache.c
                \net_cache.h
                \net_cfg_net.h
                \net_conn.c
                \net_conn.h
                \net_ctr.c
                \net_ctr.h
                \net_def.h
                \net_err.h
                \net_icmp.c
                \net_icmp.h
                \net_ip.c
                \net_ip.h
                \net_mgr.c
                \net_mgr.h
                \net_sock.c
                \net_sock.h
                \net_stat.c
                \net_stat.h
                \net_tcp.c
                \net_tcp.h
                \net_tmr.c
                \net_tmr.h
                \net_type.h
                \net_udp.c
                \net_udp.h
                \net_util.c
                \net_util.h

\Micrium

Contains all software components and projects provided by Micrium.

\Software

This sub-directory contains all software components and projects.

\uC-TCPIP

This is the main directory for the µC/TCP-IP code. 

BSP

\BSP\Template

This directory contains templates files, where functions might need to be implemented. See the section Network Board Support Package for further information.

Configuration

\Cfg

This directory contains configuration template file that must be copied to your project and modified following our requirements. See the section Configuration for further information.

Shell Commands

\Cmd

This directory contains the function that can be called from the command shell. This directory should be added to the project only if µC/Shell is present and network command must be added to this module. 

See the following document for further information :

µC/Shell Documentation

Devices

Only the driver for your network controller(s) should be added to your project. 

\Dev

This directory contains device drivers for different interfaces. Currently, µC/TCP-IP only supports one type of interface, Ethernet. µC/TCP-IP is tested with many types of Ethernet devices.

Ethernet

\Ether

Ethernet controller drivers are placed under the Ether sub-directory. Note that device drivers must also be called net_dev_<controller>.*.

\<controller>

The name of the Ethernet controller or chip manufacturer used in the project. The ‘<’ and ‘>’ are not part of the actual name. This directory contains the network device driver for the Network Controller specified.

net_dev_<controller>.h is the header file for the network device driver.

net_dev_<controller>.c contains C code for the network device driver API.

\PHY

This is the main directory for Ethernet Physical layer drivers.

\Generic

This is the directory for the Micrium provided generic PHY driver. Micrium’s generic Ethernet PHY driver provides sufficient support for most (R)MII compliant Ethernet physical layer devices. A specific PHY driver may be developed in order to provide extended functionality such as link state interrupt support.

net_phy.h is the network physical layer header file.

net_phy.c provides the (R)MII interface port that is assumed to be part of the host Ethernet MAC. Therefore, (R)MII reads/writes must be performed through the network device API interface via calls to function pointers Phy_RegRd() and Phy_RegWr().

Wireless

\WiFi

Wireless controller drivers are placed under the WiFi sub-directory. Note that device drivers must also be called net_dev_<controller>.*.

\<controller>

The name of the Wifi controller or chip manufacturer used in the project. The ‘<’ and ‘>’ are not part of the actual name. This directory contains the network device driver for the Network Controller specified.

net_dev_<controller>.h is the header file for the network device driver.

net_dev_<controller>.c contains C code for the network device driver API.

\Manager

This is the main directory for Wireless Manager layer.

\Generic

This is the directory for the Micriµm provided generic Wireless Manager layer. Micriµm's generic Wireless Manager layer provides sufficient support for most wireless devices that embed a wireless supplicant. A specific Wireless Manager may be developed in order to provide extended functionality.

net_wifi_mgr.h is the network Wireless Manager layer header file.

net_wifi_mgr.c provides functionality to access the device for management command that could required asynchronous response such as scan for available network.

Interface

This directory contains interface-specific files. Currently, µC/TCP-IP only supports three type of interfaces, Ethernet, wireless and loopback. The Ethernet and wireless interface-specific files are found in the following directories:

\IF

This is the main directory for network interfaces.

net_if.* presents a programming interface between higher µC/TCP-IP layers and the link layer protocols. These files also provide interface management routines to the application. This file should always be part of the project

net_if_802x.* contains common code to receive and transmit 802.3 and Ethernet packets. This file must not be modified. This file should always be part of the project

net_if_ether.* contains the Ethernet interface specifics. This file must not be modified and should be added to the project only if a Ethernet interface is used.

net_if_wifi.* contains the wireless interface specifics. This file must not be modified and should be added to the project only if a Wireless interface is used.

net_if_loopback.* contains loopback interface specifics. This file must not be modified and should be added to the project only if a Loopback interface is used.

File System Abstraction Layer

This directory contains the file system abstraction layer which allows the TCP-IP application such as µC/HTTPs, µC/FTPc, µC/FTPs, etc. with nearly any commercial or in-house file system. The abstraction layer for the selected file system is placed in a sub-directory under FS as follows:

\FS

This is the main FS directory that contain generic file system port header file. This file must be included if one or more application that required a file system such as µC/HTTPs, µC/FTPc, µC/FTPs, etc. are present in the project.

\<file_system_name>

This is the directory that contains the files to perform file system abstraction.

µC/TCP-IP has been tested with µC/FS-V4 and the file system layer files for this file system are found in the following directories:

\Micrium\Software\uC-TCPIP\FS\uC-FS-V4\net_fs_v4.*

Modules Code

This directory contains some code that can be shared between many Network application, such as HTTP, DNS, DHCP, etc. Each applications would tell you which file of this directory is required. 

CPU Specific Code (Optimization)

Some functions can be optimized in assembly to improve the performance of the network protocol stack. An easy candidate is the checksum function. It is used at multiple levels in the stack, and a checksum is generally coded as a long loop.

\Ports

This is the main directory for processor specific code.

\<architecture>

The name of the CPU architecture that was ported to. The ‘<’ and ‘>’ are not part of the actual name.

\<compiler>

The name of the compiler or compiler manufacturer used to build code for the optimized function(s). The ‘<’ and ‘>’ are not part of the actual name.

net_util_a.asm contains assembly code for the specific CPU architecture. All functions that can be optimized for the CPU architecture are located here.

Core - CPU independent Source Code

This directory contains all the CPU and RTOS independent files for µC/TCP-IP. Nothing must be changed in this directory in order to use µC/TCP-IP.

\Source

This is the directory that contains all the CPU and RTOS independent source code files.

Examples Code

This directory contains code examples to help customers develop their network application. Those examples are given as guide lines and are not part of the µC/TCP-IP stack, therefore they are not part of the support Micriµm offers.

\Examples

This is the directory that contains the sample codes to help customers with their network application. It includes µC/TCP-IP stack initialization examples, socket programming examples, etc.

\Init

This is the directory that contains the sample codes to help customers with their network application. It includes µC/TCP-IP stack initialization examples.

\Multicast

This is the directory that contains the example codes to help customers with their network application. It includes multicast examples.

\Socket

This is the directory that contains the sample codes to help customers with their network application. It includes socket programming examples.

\TLS-SSL

This is the directory that contains the sample codes to help customers with their network application. It includes examples about how to use TLS/SSL with an application.

Notes

This section discusses the modules available for μC/TCP-IP, and how they all fit together. A Windows®-based development platform is assumed. The directories and files make references to typical Windows-type directory structures. However, since μC/TCP-IP is available in source form, it can also be used with any ANSI-C compatible compiler/linker and any Operating System.

The names of the files are shown in upper case to make them stand out. However, file names are actually lower case.