cd00255062

AN3102
Application note
lwIP TCP/IP stack demonstration
for STM32F107xx connectivity line microcontrollers
Introduction
STM32F107xx connectivity line microcontrollers feature a high-quality 10/100 Ethernet
peripheral that supports both MII and RMII to interface the PHY.
One of the advanced features of the STM32F107xx's Ethernet controller is the capability of
generating, inserting and verifying the checksums of the IP, UDP, TCP and ICMP protocols
by hardware. In this application note, you can find a real application that uses this feature.
The objective of this application note is to present a demonstration package built on top of a
free TCP/IP stack: the lwIP (lightweight IP). This package contains:
●
A DHCP client, for IP address setting
●
A Hello example based on the Telnet protocol
●
A TFTP server, which transfers files from and to the microSD™ card located on the
STM3210C-EVAL board
●
A web server
●
A Server/Clients example, which uses multiple boards and allows clients to control the
server's LEDs.
November 2009
Doc ID 16620 Rev 1
1/18
www.st.com
Contents
AN3102
Contents
1
2
Porting lwIP to the STM32F107xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1
lwIP stack overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2
How to port lwIP to the STM32F107xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1
Ethernet controller interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2
Periodic lwIP tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.3
lwIP configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4
STM32F107xx hardware checksum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Description of the demonstration package . . . . . . . . . . . . . . . . . . . . . . 8
2.1
Package directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2
Demonstration settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3
2.4
2.2.1
PHY interface configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2
MAC address settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.3
IP address settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.4
STM3210C-EVAL settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
How to use the demonstration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1
Demonstration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2
Hello example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.3
Web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.4
TFTP server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.5
UDP/TCP server/client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Demonstration footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2/18
Doc ID 16620 Rev 1
AN3102
List of tables
List of tables
Table 1.
Table 2.
Table 3.
STM3210C-EVAL jumpers configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
STM32F107xx lwIP demonstration footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Doc ID 16620 Rev 1
3/18
List of figures
AN3102
List of figures
Figure 1.
Figure 2.
Figure 3.
Figure 4.
Figure 5.
Figure 6.
Figure 7.
4/18
Demonstration package structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
How applications handle a packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
UDP communication to establish the connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Telnet demonstration example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Web server browsing: here the static IP address is set . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
tftpd32 tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
lwIP structure in the raw API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Doc ID 16620 Rev 1
AN3102
Porting lwIP to the STM32F107xx
1
Porting lwIP to the STM32F107xx
1.1
lwIP stack overview
The lwIP is a free TCP/IP stack developed by Adam Dunkels at the Swedish institute of
computer science (SICS) and licensed under the BSD license.
The source code can be downloaded from the link: http://savannah.nongnu.org/projects/lwip
The lwIP TCP/IP stack supports the following protocols: IPv4, IPv6, UDP, TCP, ICMP, IGMP,
SNMP, ARP and PPP.
It does not include protocols from the application layer, like HTTP or TFTP, and comes
without examples.
The lwIP offers three types of API (application programming interface):
●
a raw API: it is the native API used by the lwIP stack itself to interface with the different
protocols.
●
a Netconn API: it is a sequential API with a higher level of abstraction than the raw API.
●
a socket API: it is a Berkeley-like API
The API used to build the demonstration is the raw API. It achieves the highest performance
and does not require the use of an operating system. Both the Netconn and the Socket APIs
need an operating system.
To get more information about the TCP/IP stack protocols, you can refer to the section 2 of
the application note AN3000 (“Configuring the NicheLite TCP/IP stack for the STM32F107xx
microcontroller”), available from the STMicroelectronics website www.st.com.
1.2
How to port lwIP to the STM32F107xx
1.2.1
Ethernet controller interface
The official release of the lwIP does not provide any port to any microcontroller. You need to
do it by yourself. The lwIP however comes with a file called ethernetif.c, that works as an
interface between the stack and the Ethernet controller. This file is presented as a skeleton
to be completed to support a specified architecture.
For the STM32F107xx, the ethernetif.c (under Utilities\lwip-1.3.1\src\netif) and stm32_eth.c
(under Libraries\STM32_ETH_Driver) files constitute the low-level layer, which is the
interface between the stack and the Ethernet controller.
ethernetif.c contains functions that ensure the transfer of the frames between the low-level
driver (stm32_eth.c) and the lwIP stack.
Its main function is ethernetif_input, which should be called when a packet is ready to be
read from the interface.
The low-level layer was set to detect the reception of frames by interrupts. So, when the
Ethernet controller receives a valid frame, it generates an interrupt in the handling function
of which, the ethernetif_input call is made.
Doc ID 16620 Rev 1
5/18
Porting lwIP to the STM32F107xx
1.2.2
AN3102
Periodic lwIP tasks
Apart from setting the Ethernet controller interface, the lwIP has periodic
tasks that should be handled. The STM32F107xx SysTick is used to build a system clock
that serves as the reference to handle the different periodic tasks.
The main function of the periodic task handle is LwIP_Periodic_Handle, which is
defined in the netconf.c file. This function guarantees the dispatching of the periodic lwIP
tasks.
Note that the netconf.c file, which is not part of the lwIP stack, ensures the network interface
configuration: lwIP initialization, MAC address setting and IP address setting.
1.2.3
lwIP configuration
The lwIP can be tuned to suit the application's requirements. The default parameters of the
stack can be found in the opt.h file, located under the lwIP directory at src\include\lwIP\.
To modify these settings a new file is defined, lwipopts.h, based on the opt.h file, and located
under the lwIP directory at port\. It contains the lwIP configuration for the STM32F107xx
demonstration.
Basically these parameters concern:
●
protocol selection, like DHCP, which can be enabled or disabled, defined by
LWIP_DHCP
●
the maximum number of simultaneously active connections, for TCP this is defined by
MEMP_NUM_TCP_PCB and for UDP by MEMP_NUM_UDP_PCB
●
the heap size, defined by MEM_SIZE
●
the number of buffers, defined by PBUF_POOL_SIZE, and the buffer size, defined by
PBUF_POOL_BUFSIZE
For more details, you can refer to the lwipopts.h file.
There is no special rule to follow when setting the number of buffers, the heap size and the
other parameters, because they mainly depend on the application itself.
The number of buffers and the heap size allocated to the application depend on the
application’s performance, simultaneous connection requirements and available RAM.
Increasing these parameters (number of buffers and heap size) boosts the application
performance and connectivity but reduces the amount of available RAM. Conversely,
decreasing these parameters increases the available RAM space but limits the application
performance and connectivity.
The memory allocation defined in lwipopts.h is provided as an example and should be
tailored to meet your application’s requirements. To ensure the robustness of the final
application and to guarantee proper functioning in the worst case, you have to make sure
that the application is tested in a network environment similar to the one to which the device
is to be linked.
6/18
Doc ID 16620 Rev 1
AN3102
1.2.4
Porting lwIP to the STM32F107xx
STM32F107xx hardware checksum
The STM32F107xx has the capability of:
●
generating and inserting the checksum of the IP, UDP, TCP and ICMP protocols by
hardware for transmitting packets
●
verifying the checksum of the IP, UDP, TCP and ICMP protocols by hardware for
receiving packets
This feature frees some CPU load and improves the performance of the application.
Porting to the STM32F107xx takes advantage of this feature and provides both solutions:
●
generating and verifying the checksum by hardware. In this case, uncomment
#define CHECKSUM_BY_HARDWARE in the lwipopts.h file
●
generating and verifying the checksum by software. In this case, comment #define
CHECKSUM_BY_HARDWARE in the lwipopts.h file
With lwIP, you can disable software generation and checksum verification for the IP, UDP
and TCP protocols. In the current port, this is done in the lwipopts.h file. For the ICMP,
however, it is necessary to modify the icmp.c file to disable checksum calculation.
The STM32F107xx’s checksum by hardware feature can be enabled by setting:
●
the CIC bits, in the first word of the Tx descriptor, for transmitted frames
●
the IPCO bit, in the ETH_MACCR register, for received frames
For the demonstration firmware, you can enable or disable the checksum by hardware via
the CHECKSUM_BY_HARDWARE define in the lwipopts.h file:
Uncomment it to select the checksum by hardware, and comment it to select the
checksum by software.
Doc ID 16620 Rev 1
7/18
Description of the demonstration package
AN3102
2
Description of the demonstration package
2.1
Package directories
When unzipped, the package has the structure shown in the figure below.
Figure 1.
Demonstration package structure
0ROJECTWORKSPACESAND
SYSTEMANDNETWORK
CONFIGURATIONFILES
34-SSTANDARDLIBRARIES
FILESYSTEM
LW)0APPLICATIONLAYER
AND%THERNETINTERFACEFILES
LW)0SOURCECODE
34-#%6!,BOARDS
DEDICATEDFILES
AI
The demonstration package contains four applications running on top of the lwIP stack.
They are listed below:
●
Hello example: is a TCP listener on port 23, the standard Telnet port, which replies to
received messages by a Hello word.
●
TFTP server: is a file transfer application that needs a remote TFTP client. The files are
transferred to and from the microSD™ card located on the STM3210C-EVAL board.
●
Web server: is a basic web server that controls the LEDs and reads the status of the
potentiometer located on the STM3210C-EVAL board.
●
UDP/TCP server/client: is a remote LED control application. A client connects to the
server over a local network and gets the control of the LEDs (the four LEDs on the
STM3210C-EVAL). This application requires at least two STM3210C-EVAL boards (a
server and a client) and a local area network.
2.2
Demonstration settings
2.2.1
PHY interface configuration
The demonstration firmware is used to interface the PHY with the two modes: MII and RMII.
To select the PHY interface mode you wish to use, go to the stm32f107.c file (under
\Project\src) and choose one of the two defines. For example, to select the RMII mode:
//#define MII_MODE
#define RMII_MODE
For the MII mode, the PHY clock is taken from the external crystal, while for the RMII mode,
the clock is provided by the STM32F107xx over the MCO pin.
8/18
Doc ID 16620 Rev 1
AN3102
Description of the demonstration package
To each mode corresponds a special hardware configuration. Section 2.2.4: STM3210CEVAL settings presents the settings required for MII and RMII.
2.2.2
MAC address settings
The MAC address is set in the netconf.c file (under \Project\src). By default the MAC
address is set to 0:0:0:0:0:1.
When the Server/Client example is used, and in the case of a client, the firmware sets a
different MAC address by replacing the sixth byte by the CLIENTMAC6 defined in the
netconf.c file.
When you need to use more than one client, you need to modify the CLIENTMAC6 byte to
get a different MAC address since every node in a network should have a unique MAC
address.
2.2.3
IP address settings
The IP address can be set either as a static address, equal to 192.168.0.8, or as a dynamic
address, assigned by a DHCP server.
The selection of the IP address’s configuration mode is done in the lwipopts.h file:
●
Set #define LWIP_DHCP to 1 to configure the IP address by DHCP
●
Set #define LWIP_DHCP to 0 to use the static address (192.168.0.8)
Note that if you choose to configure the IP address by DHCP and the application does not
find a DHCP server on the network to which it is already connected, the IP address is then
automatically set to the static address (192.168.0.8).
Note:
To use the Server/Client demonstration, the DHCP option should be enabled to get a
dynamic IP address, otherwise the demonstration is not initialized and so, cannot be used.
2.2.4
STM3210C-EVAL settings
Once you have set the PHY interface mode of your choice, you have to set the
corresponding hardware configuration. Table 1 shows the STM3210C-EVAL evaluation
board configuration for the MII and RMII modes.
Table 1.
Note:
STM3210C-EVAL jumpers configuration
Jumper
MII mode configuration
RMII mode configuration
JP2
Not connected
Connected
JP3
2-3
1-2
JP4
1-2
2-3
JP11
2-3
JP12
2-3
JP13
2-3
JP14
1-2
The TFTP demonstration transfers files from and to the microSD card available on the
STM3210C-EVAL board. So, the jumpers JP15 and JP26 should be connected to be able to
use the microSD card.
Doc ID 16620 Rev 1
9/18
Description of the demonstration package
AN3102
2.3
How to use the demonstration
2.3.1
Demonstration overview
When a frame is received, the Ethernet interface layer extracts the data and sends them to
the stack. This is ensured by the ethernetif.c file. The lwIP stack handles the packet and
looks for an available connection to forward the data. Packets like Ping, do not need any
application process and are handled only by the stack.
The following figure shows how a packet is forwarded by the stack to the application level.
Figure 2.
How applications handle a packet
,ISTENING
,ISTENINGx
x
7EHAVERECEIVEDA
PACKET
4HEPACKETDOESNOT
NEEDTOBEPROCESSED
ATAPPLICATIONLEVEL
LW)0PACKETHANDLING
LW)0PACKETHANDLING
.O
)STHEPACKETSENTTO
PACKET
ALOCALPORT
SENTTOA
9ES
4#0
0ORT
3ERVER#LIENT
3ERVER#LIENT
0ORT
WEBSERVER
WEBSERVER
5$0
0ORT
4ELNET
4ELNET
0ORT
4&40SERVER
AI
All four applications can be run simultaneously from multiple network nodes, provided that
the IP address setting is correct and the maximum number of connections has not been
reached yet.
The number of connections is set in the lwipopts.h file:
●
MEMP_NUM_UDP_PCB defines the number of simultaneously active UDP
connections.
●
MEMP_NUM_TCP_PCB defines the number of simultaneously active TCP
connections.
Let us say that there are two PCs connected via a hub or a switch to the STM3210C-EVAL
evaluation board. And that the first one has opened a web server page, two Telnet
connections and was started as a Server: in total this makes 4 TCP connections opened.
The number of free TCP connections is equal to MEMP_NUM_TCP_PCB minus 4.
For the UDP, the available connections are all used by the TFTP server application and the
Server/Client example.
10/18
Doc ID 16620 Rev 1
AN3102
Description of the demonstration package
The TFTP server application can serve more than one client (it can serve different network
nodes), but only one client can have an active connection (only one client can use a UDP
connection at a time).
The Server/Client demonstration includes an additional process that takes place at the
initialization stage. The Client and the Server need to exchange their IP addresses to be
able to communicate. This task is done by a UDP communication. Figure 3 illustrates the
process.
Figure 3.
UDP communication to establish the connection
3ERVER
.ETWORK
#LIENT
5$0DATAGRAM
$ESTINATION)0&&&&&&&&0ORT
3OURCE)0#LIENTADDRESS0ORT
4HE3ERVERGETSTHE
#LIENTS)0ADDRESS
5$0DATAGRAM
$ESTINATION)0#LIENTADDRESS0ORT
3OURCE)03ERVERADDRESS0ORT
4#039.PACKET
$ESTINATION)03ERVERADDRESS0ORT
3OURCE)0#LIENTADDRESS0ORT
4HE3ERVERESTABLISHES
THECONNECTION
4HE#LIENTGETSTHE
3ERVERS)0ADDRESS
4HE#LIENTCONNECTS
TOTHE3ERVER
AI
2.3.2
Hello example
To run the Hello example, connect to the board via a remote PC and establish a Telnet
connection with it.
On a Windows system, type the following command:
>telnet the_board’s_ip_address
Once the connection has been established a new window appears that displays the
message: “Hello. What is your name?”. Type your name, or any message, and press the
Enter key. Your name or message is displayed followed by “hello”.
How does it work?
This application is based on the Telnet protocol, which is a client/server TCP communication
through the port 23.
The Hello application is the server and the remote PC is the client. The maximum number of
clients is limited by the number of allowed TCP connections, which is defined by
MEMP_NUM_TCP_PCB in the lwipopts.h file.
Every character typed on the client's terminal is immediately sent to the STM3210C-EVAL
and received by the Hello application. When the Enter character is detected, the Hello
application sends back the previous message followed by the word “Hello”.
The typed message should have a maximum length of 30 characters. The figure below
shows an example, with the IP address set to the static value.
Doc ID 16620 Rev 1
11/18
Description of the demonstration package
Figure 4.
2.3.3
AN3102
Telnet demonstration example
Web server
To run the web server demo, open a web browser like Internet Explorer or Firefox and type
the board’s IP address in the browser.
Figure 5.
Web server browsing: here the static IP address is set
The web server is used to control the 4 LEDs and to get the status of the potentiometer
located on the STM3210C-EVAL board.
2.3.4
TFTP server
The TFTP server waits for a request from a remote TFTP client. You have to connect to the
STM3210C-EVAL board through a remote PC to download or upload a file. For that you
need to have a TFTP client on that remote PC. You can for example use the tftpd32 tool,
which can be found at the http://tftpd32.jounin.net address.
The figure below gives an overview on the tftpd32 tool.
Note:
12/18
Make sure that the microSD™ card is plugged into the dedicated connector (CN16) prior to
downloading/uploading a file from/to the STM3210C-EVAL board.
Doc ID 16620 Rev 1
AN3102
Figure 6.
Description of the demonstration package
tftpd32 tool
9OUR0#S)0ADDRESS
ISDISPLAYEDHERE
&ILEBROWSERSELECT
THEFILETOBESENT
4YPETHEBOARDS)0ADDRESSHERE
4YPETHEDIRECTORYFROMWHERE
TOGETORWHERETOPUTTHE
FILETOBERECEIVEDSENT
ONTHE0#SIDE
4YPETHEDIRECTORYFROMWHERE
TOGETORWHERETOPUTTHEFILE
TOBERECEIVEDSENTONTHE
BOARDSIDE
0RESSTHISBUTTONTOPUTAFILE
INTOTHE34-#%6!,S
MICRO3$CARD
0RESSTHISBUTTONTOGETAFILEFROM
THE34-#%6!,S
MICRO3$CARD
0RESSTHISBUTTONTOCONFIGURE
THETFTPDTOOLYOUSHOULD
ENABLETHE4&40CLIENT
2.3.5
AI
UDP/TCP server/client
This application requires at least two STM3210C-EVAL boards and a local network with a
DHCP server. This means that you cannot run this application when you choose the static
IP address setting or when you do not have a DHCP server on your network.
The application consists in setting one board as a server that waits for a client’s request to
make the connection. When the connection is established, the client takes the control of the
four LEDs on the server board.
To use this application properly you have to follow the steps below:
1.
Connect a board to a local network, which should contain a DHCP server.
2.
Start the board as a server by pressing the reset button, then keeping the key button
pressed until the “Server selected” message appears on the LCD.
3.
Connect another board to the same local network.
4.
Start the second board as a client by resetting it.
The server will detect the new client and display its IP address.
The client will detect the server, establish a TCP connection with it and display the
Server IP address.
5.
On the client’s LCD, four squares appear, each dedicated to the control of an LED.
Touch these squares to toggle the server’s LEDs.
To connect a new client, follow the above procedure from step 3.
Note:
For the server/client application to function properly, the server board should be started
before the client board(s).
Doc ID 16620 Rev 1
13/18
Description of the demonstration package
2.4
AN3102
Demonstration footprint
Figure 7 describes the structure of the lwIP in the case where the raw API is used. It also
shows how the lwIP interfaces with the application layer.
Figure 7.
lwIP structure in the raw API
!PPLICATIONLAYER HELLOWORLDCTFTPSERVERCHTTPDCCLIENTC
SERVERC
)#-0 ICMPC
$(#0
DHCPC
5$0
UPDC
4#0
TCPCTCP?INC
TCP?OUTC
)0LAYER
IPCIP?FRAGCIP?ADDRC
!20
ETHARPC
0ACKET
MANAGER
-EMORY
MANAGER
INCLUDES
THELW)0S
POOLOF
BUFFERS
INCLUDES
THELW)0
HEAP
PBUFC
MEMPC
MEMC
.ETWORK)NTERFACE
NETIFCINETCINET?CHCKSUMC
,OWLEVEL%THERNETINTERFACEINCLUDESTHE%THERNETBUFFERS
ETHERNETIFC
,OWLEVEL%THERNETLAYER
STM?ETHC
AI
Note:
The management of the STM32F107xx’s and STM3210C-EVAL’s additional resources is
not presented in the above figure.
The memory manager and the packet manager are used by all the modules including the
application layer. They provide access to the lwIP's heap and pool of buffers.
The modules surrounded by the blue line represent the mandatory part of the lwIP, in the
case of the raw API. The mandatory modules are independent of the type of application.
The ICMP, TCP, UDP and DHCP modules are optional modules, they may be disabled. Each
of them has a dedicated define located in the lwipopts.h file, that is used to either enable or
disable it.
For example, if your application does not need the ICMP protocol, you can disable it by:
●
removing the icmp.c from the source files
●
changing the LWIP_ICMP define to 0 in the lwipopts.h file
Follow the same procedure to disable other optional modules.
The table below provides the demonstration footprint, calculated with the following
configuration:
14/18
●
10 buffers of 1500 bytes that constitute the lwIP pool of buffers. These parameters are
defined in the lwipopts.h file by PBUF_POOL_SIZE (10) and PBUF_POOL_BUFSIZE
(1500)
●
20 Kbytes dedicated for the lwIP's heap and defined in the lwipopts.h file by
MEM_SIZE
●
6 buffers of 1520 bytes dedicated to the Ethernet driver and defined in the ethernetif.c
file.
Doc ID 16620 Rev 1
AN3102
Description of the demonstration package
These values are provided for demonstration purposes only. So, if you want to port the
current package and use it for your application, the above parameters should be adjusted to
your needs.
Table 2.
STM32F107xx lwIP demonstration footprint(1)
Modules
Description
Flash memory
(bytes)
SRAM
(bytes)
Mandatory modules
Ethernet driver and interface, lwIP
7848
memory management and IP modules
49590
TCP modules
TCP packet handling using the raw
API
80
UDP modules
UDP datagram handling using the raw
856
API
4
ICMP
394
0
DHCP
3164
4
Hello word
376
0
TFTP server
1467
7562
Optional modules
Application modules
STM32 firmware
1684
(2)
4617(3)
Web server
32607
Server
328
0
Client
412
4
STM32F107xx’s firmware library
2296
24
(4)
64
STM3210C-EVAL board
STM3210C-EVAL dedicated files
8852
Main and system initialization
main file and system initialization
2480
1624(5)
efsl
File system
8338
0
Others
Standard libraries
1884
105
78764
57800
Total
1. The footprint results are computed with the ARMCC compiler. Optimizations: -O2, One ELF section per
function.
2. Includes 30 Kbytes of web pages.
3. Includes 4509 bytes that represent the ADC web page.
4. Contains the LCD character definitions.
5. Contains the system heap and stack, defined in the startup_stm32f10x_cl.s file.
Doc ID 16620 Rev 1
15/18
Conclusion
3
AN3102
Conclusion
This application note describes an STM32F107xx demonstration that implements the lwIP
TCP/IP stack. The demonstration explores the capability of the STM32F107xx to generate
and verify the IP, UDP, TCP and ICMP checksums by hardware. This feature reduces the
CPU load and considerably improves the performance of your application.
16/18
Doc ID 16620 Rev 1
AN3102
4
Revision history
Revision history
Table 3.
Document revision history
Date
Revision
23-Nov-2009
1
Changes
Initial release.
Doc ID 16620 Rev 1
17/18
AN3102
Please Read Carefully:
Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries (“ST”) reserve the
right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any
time, without notice.
All ST products are sold pursuant to ST’s terms and conditions of sale.
Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no
liability whatsoever relating to the choice, selection or use of the ST products and services described herein.
No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this
document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products
or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such
third party products or services or any intellectual property contained therein.
UNLESS OTHERWISE SET FORTH IN ST’S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS
OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS EXPRESSLY APPROVED IN WRITING BY AN AUTHORIZED ST REPRESENTATIVE, ST PRODUCTS ARE NOT
RECOMMENDED, AUTHORIZED OR WARRANTED FOR USE IN MILITARY, AIR CRAFT, SPACE, LIFE SAVING, OR LIFE SUSTAINING
APPLICATIONS, NOR IN PRODUCTS OR SYSTEMS WHERE FAILURE OR MALFUNCTION MAY RESULT IN PERSONAL INJURY,
DEATH, OR SEVERE PROPERTY OR ENVIRONMENTAL DAMAGE. ST PRODUCTS WHICH ARE NOT SPECIFIED AS "AUTOMOTIVE
GRADE" MAY ONLY BE USED IN AUTOMOTIVE APPLICATIONS AT USER’S OWN RISK.
Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void
any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any
liability of ST.
ST and the ST logo are trademarks or registered trademarks of ST in various countries.
Information in this document supersedes and replaces all information previously supplied.
The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners.
© 2009 STMicroelectronics - All rights reserved
STMicroelectronics group of companies
Australia - Belgium - Brazil - Canada - China - Czech Republic - Finland - France - Germany - Hong Kong - India - Israel - Italy - Japan Malaysia - Malta - Morocco - Philippines - Singapore - Spain - Sweden - Switzerland - United Kingdom - United States of America
www.st.com
18/18
Doc ID 16620 Rev 1