July 2013 DocID022105 Rev 2 1/48
AN3966
Application note
LwIP TCP/IP stack demonstration for STM32F4x7 microcontrollers
Introduction
STM32F4x7 microcontrollers feature a high-quality 10/100 Mbit/s Ethernet peripheral that
supports both Media Independent Interface (MII) and Reduced Media Independent Interface
(RMII) to interface with the Physical Layer (PHY).
When working with an Ethernet communication interface, a TCP/IP stack is mostly used to
communicate over a local or a wide area network.
This application note presents a demonstration package built on top of the LwIP
(Lightweight IP) TCP/IP stack which is an open source stack intended for embedded
devices.
This demonstration package contains nine applications running on top of the LwIP stack:
• Applications running in standalone mode (without an RTOS):
–A Web server
– A TFTP server
– A TCP echo client application
– A TCP echo server application
– A UDP echo client application
– A UDP echo server application
• Applications running with the FreeRTOS operating system:
– A Web server based on netconn API
– A Web server based on socket API
– A TCP/UDP echo server application based on netconn API
Note: In this document STM32F4x7 refers to STM32F407xx, STM32F417xx, STM32F427xx and
STM32F437xx devices.
Table 1. Applicable products
Type Product series
Microcontroller
STM32F407xx, STM32F417xx, STM32F427xx,
STM32F437xx
www.st.com
Contents AN3966
2/48 DocID022105 Rev 2
Contents
1 LwIP stack overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1 Stack features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Folder organization of the LwIP stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 LwIP API overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Raw API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Netconn API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3 Socket API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 LwIP buffer management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.1 Packet buffer structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.2 API for managing pbufs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Interfacing LwIP to STM32F4x7 Ethernet network interface . . . . . . . . . . 12
2 STM32F4x7 low level driver overview . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1 Global Ethernet MAC/DMA functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.1 Ethernet MAC/DMA configuration parameters . . . . . . . . . . . . . . . . . . . 14
2.2 DMA descriptor handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 DMA descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2 DMA descriptor handling functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 PHY control functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Hardware checksum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Developing applications with LwIP stack . . . . . . . . . . . . . . . . . . . . . . . 22
3.1 Developing in standalone mode using the Raw API . . . . . . . . . . . . . . . . 22
3.1.1 Model of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2 Example of the TCP echo server demo . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Developing with an RTOS using Netconn or Socket API . . . . . . . . . . . . . 26
3.2.1 Model of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.2 Example of a TCP echoserver demo using the Netconn API . . . . . . . . 27
3.3 LwIP memory configuration options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Description of the demonstration package . . . . . . . . . . . . . . . . . . . . . 31
4.1 Package directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Demonstration settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
DocID022105 Rev 2 3/48
AN3966 Contents
3
4.2.1 PHY interface configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.2 MAC and IP address settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.3 STM324xx-EVAL settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Using the demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1 Standalone demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.1 Httpserver demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.2 TCP echo client demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.3 TCP echo server demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.4 UDP echo client demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.5 UDP echo server demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.1.6 TFTP server demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 FreeRTOS demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.1 HTTP server netconn demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.2 HTTP server socket demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2.3 UDP TCP echo server netconn demo . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6 Footprint information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.1 HTTP server demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.2 HTTP server netconn demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
List of tables AN3966
4/48 DocID022105 Rev 2
List of tables
Table 1. Applicable products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Table 2. TCP Raw API functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Table 3. UDP Raw API functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Table 4. Netconn API functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Table 5. Socket API functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Table 6. Pbuf API functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Table 7. ethernet_if.c functions description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Table 8. Global Ethernet MAC/DMA functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Table 9. MAC configuration parameters of an ETH_InitTypeDef structure. . . . . . . . . . . . . . . . . . . . 14
Table 10. DMA configuration parameters of an ETH_InitTypeDef structure. . . . . . . . . . . . . . . . . . . . 16
Table 11. DMA descriptor functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Table 12. PHY control functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Table 13. LwIP memory configuration options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Table 14. STM324xx-EVAL jumper configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Table 15. HTTP server demo footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Table 16. Httpserver netconn demo footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Table 17. Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
DocID022105 Rev 2 5/48
AN3966 List of figures
5
List of figures
Figure 1. LwIP folder organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Figure 2. Pbuf structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Figure 3. Ethernet DMA descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figure 4. Ethernet DMA descriptor chaining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figure 5. STM32F4x7 Ethernet driver buffers and descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Figure 6. Tracking DMA Rx/Tx descriptors to Get/Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Figure 7. Standalone operation model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figure 8. LwIP operation model with RTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Figure 9. Demonstration package structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Figure 10. Home page of the HTTP server demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Figure 11. SSI use in HTTP server demo application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Figure 12. TCP echo client demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Figure 13. TCP echo server demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Figure 14. UDP echo client demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Figure 15. UDP echo server demon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Figure 16. TFTP tool (tftpd32) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
评论1
最新资源