The core element of the FNET Project is the TCP/IP stack.
The FNET TCP/IP stack enables to connect an embedded system to a TCP/IP network. This stack is implemented as a stand-alone software library for 32-bit MCUs.
It is modular, portable, and written in the C programming language with some platform-specific optimization in assembler. It is distributed in the form of source code, so the compile-time optimizations and configuration are possible (actually, it is the preferred way to configure stack features).
FNET Top View
- The stack provides following protocols and services:
- Supported Platforms:
- ARM Cortex-M4
- Kinetis:
- MK64FN1M (FRDM-K64F board)
- MK66FN2M (FRDM-K66F board)
- MK6DN512 (TWR-K60D100M board)
- i.MX-RT:
- MIMXRT1052 (IMXRT1050-EVKB board).
- MIMXRT1062 (MIMXRT1060-EVK board)
- LPC: LPC54628 (OM13098: LPCXpresso54628 board)
- Qualcomm/Atheros Wi-Fi 202.11:
- QCA4002 (GT202-GC3013-FRDM4-KIT board).
- QCA4004 (SX-ULPAN-2401-SHIELD board).
- Other platforms (not supported):
- ColdFire: MCF51CN128, MCF5282, MCF52235, MCF54418, MCF52259
- PowerPC: MPC5668G, MPC5566, MPC564xBC, MPC5744P, S32R274.
- Kinetis: MK70FN1M, MK60FN1M.
- Supported Compilers:
- IAR: Embedded Workbench for ARM, v8.50
- GCC: Kinetis Design Studio, v3.2
- ARM: uVisin v5.24
- Bare-metal TCP/IP stack. No underlying RTOS is required, although it can be used with it. FreeRTOS example is provided.
- Certified logos for:
- Golden IPv6 Ready.
- Microsoft Azure IoT.
- Apple Bonjour.
- Non-blocking Socket API (DGRAM, STREAM, RAW).
- Core Protocols:
- TCP (Transmission Control Protocol).
- UDP (User Datagram Protocol).
- IPv4.
- ICMPv4 (Internet Control Message Protocol).
- IGMP (Internet Group Management Protocol).
- ARP (Address Resolution Protocol).
- IPv6.
- "IPv6 Ready Logo Certified". Passed IPv6 Core Protocols Conformance and Interoperability tests.
- ICMPv6 (Internet Control Message Protocol).
- MLDv1 (Multicast Listener Discovery).
- Neighbor Discovery for IPv6.
- IPv6 Stateless Address Autoconfiguration.
- Path MTU Discovery for IPv6
- Network Interfaces:
- Ethernet (FEC/ENET module).
- Wi-Fi (QCA4002/4 module).
- Loopback.
- Services:
- HTTP server:
- HTTP/1.0 or HTTP/0.9 protocols.
- GET and POST requests.
- CGI and SSI.
- Basic access authentication.
- HTTP over TLS (HTTPS).
- TELNET server.
- DHCPv4 client and server.
- Auto-IP service. Passed "Link-Local Address Allocation", Bonjour Conformance Test.
- Azure IoT Hub client adapter. Microsoft Azure certified.
- DNS client/resolver.
- Link-Detection service.
- Multicast DNS (mDNS) "Bonjour" Server/Responder. Passed the Bonjour Conformance Test.
- LLMNR Server/Responder.
- PING service.
- SNTP client.
- TFTP server and client. Both Read and Write requests are supported.
- TLS using mbedTLS library.
- ROM File System.
- On-chip Flash Memory driver.
- Command line shell.
- Serial driver.
- Tools:
- Applications:
- Source-code based User documentation, by Doxygen.
- RFC list supported by the FNET stack:
- RFC 768 - UDP.
- RFC 791 - IPv4.
- RFC 792 - ICMPv4.
- RFC 793 - TCP.
- RFC 826 - ARP.
- RFC 854 - Telnet server.
- RFC 951 - BOOTP client.
- RFC 6762 - Multicast DNS server.
- RFC 1035 - DNS resolver.
- RFC 1350 - TFTP client and server.
- RFC 1945 - HTTP v 1.0 server.
- RFC 1981 - Path MTU Discovery for IPv6.
- RFC 2131 - DHCP IPv4 client and server.
- RFC 2236 - IGMPv2.
- RFC 2460 - IPv6.
- RFC 3927 - Dynamic Configuration of IPv4 Link-Local.
- RFC 4330 - Simple Network Time Protocol (SNTP) Version 4.
- RFC 4861 - Neighbor Discovery for IPv6.
- RFC 4862 - IPv6 Stateless Address Autoconfiguration.
- RFC 4443 - ICMPv6.
- RFC 4795 - Link-Local Multicast Name Resolution (LLMNR) server.