TM Freescale, the Freescale logo, AltiVec, C-5, CodeTest, CodeWarrior, ColdFire, C-Ware, mobileGT, PowerQUICC, StarCore, and Symphony are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. BeeKit, BeeStack, CoreNet, the Energy Efficient Solutions Logo, Flexis, MXC, Platform in a Package, Processor Expert, QorIQ, QUICC Engine, SmartMOS, TurboLink and VortiQa are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Rapid Prototyping Solutions Add Ethernet to your Embedded Application Craig Honegger President, Embedded Access Inc.
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Module Objectives ► The objective of this module is: Introduce networking concepts Provide an overview of MQX network capabilities Implement a simple Web server
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Module Agenda ► Introduction to RTCS RTCS Sockets Application protocols HTTP server ► Hands-on Exercise – Build Your Own Embedded Web Server ► Additional Resources
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc RTCS ► Designed for embedded processors ► Uses standard socket interface ► Scalable at compile and/or run-time Only used protocols are included Data requirements tunable Protocol behavior controllable ► TCP/IP aware Debugger Integration ► Integrated with 3rd party packages 4
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc TCP/IP Protocols 5 RPC XDR Telnet HTTP FTP POP3* SMTP* DNS SNMP SNTP SSL* IP-E IPCP PAP CHAP CCP PPP ARP Ethernet Serial PPPoE** TFTP SSH* XML* BootP DHCP RIP Sockets ICMP TCP UDP IGMP NAT** IP HDLC LCP
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc UDP vs. TCP UDP (RFC 768) ► Data sent in packets ► Simple layer on top of IP ► Connectionless (mail) ► Unreliable ► No buffering ► Packets can be lost ► Small code size ► High maximum data rate ► Used to transfer time- dependent data (voice) TCP (RFC 793) ► Data sent in streams ► Complex protocol ► Connection based (phone) ► Reliable (re-transmission) ► Buffered data transfer ► No packets are lost ► Large code size ► Lower maximum data rate ► Used to transfer accuracy critical data (files)
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc RTCS Overview 7 Application Task Application Task Application Task Application Task RTCS MQX Application Task Application Task Serial ADC I2CI2C I2CI2C Enet TCP/IP Task TCP/IP Task RTCS API FTP Server FTP Server ARP ICMP TCP UDP IGMP IP IP-E HTTP Server HTTP Server Telnet Client Telnet Client FTP Client FTP Client Telnet Server Telnet Server SNMP Agent SNMP Agent DHCP Server DHCP Server SNTP Client SNTP Client
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc RTCS Initialization Sequence ► Create RTCS ► Initialize interface(s) ► Bind RTCS to interface ► Initialize RTCS applications 8 RTCS MQX Enet RTCS Apps RTCS Apps TCP/IP Task TCP/IP Task
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc RTCS Initialization ► RTCS is started by calling RTCS_create() ► Prototype is in ► Creates one TCP/IP task ► Creates internal data structures (PCBs, IP routing table, etc.) 9 RTCS TCP/IP Task TCP/IP Task
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Interface Initialization ► Initialize device driver ► Assign MAC address ► Assign IP address, subnet, gateway ► Bind interface to stack RTCS MQX Enet TCP/IP Task TCP/IP Task
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Sample Code
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Sockets ► Data transfer is done with sockets ► A socket is one end-point of a two-way communication link ► Socket defines: Protocol Local IP-address and port # Remote IP-address and port # ► TCP and UDP sockets supported 12
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Bound to stream (TCP) Using sockets recvfrom() sendto() bind() connect() getsockopt() listen() accept() recv() Unbound Bound to datagram (UDP) socket() send() select() setsockopt() shutdown ()
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Establishing a TCP Connection - Server Ground Bound Listening Connected Socket() Send(), Recv() Accept() Bind () Listen() Connect()
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Establishing a TCP Connection - Client Ground Bound Listening Connected Socket() Send(), Recv() Accept() Bind () Listen() Connect()
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Sample Code
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Socket Options ► Socket options can be set to override default socket behavior using setsockopt(): ► Options include: Window sizes Various timeouts Blocking vs. non-blocking mode Send and receive push flags
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Compile Time Configuration ► Close to 100 compile time configuration settings ► Each protocol can be individually enabled/disabled ► Protocol statistics can be individually enabled/disabled ► Level of error checking performed is configurable 18
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Run-Time Configuration ► Allows dynamic control of RTCS, including: RTCS task priority and stack size RTCS memory allocation (where, how much) Enabled protocols and protocol behavior Socket behavior 19
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Application Layer Protocols 20 RTCS MQX TCP/IP Task RTCS API FTP Server FTP Server HTTP Server HTTP Server Telnet Client Telnet Client FTP Client FTP Client Telnet Server Telnet Server SNMP Agent SNMP Agent DHCP Server DHCP Server SNTP Client SNTP Client TFTP Server TFTP Server TFTP Client TFTP Client DHCP Client DHCP Client DNS Resolver DNS Resolver
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Application protocols Clients: ► Use arbitrary port number ► Active connection ► Connect to one server Servers: ► Use standard port number ► Passive connection ► Connect with many clients Telnet Client Telnet Client Telnet Server Telnet Server Telnet Client Telnet Client Telnet Client Telnet Client Telnet Client Telnet Client
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc HTTP Server ► HTTP 1.1 with persistent connections ► PUT and GET methods ► Form decoding ► Support for multiple virtual WEB folders ► Static file-system content: pages, images, multimedia, Java archives ► Dynamic page content, suitable for AJAX applications CGI-like dynamic content pages ASP-like in-page placeholders ► Basic authentication 22
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc HTTP Server ► Web pages may be: From memory (flash or RAM) using TFS From internal or external file system storage (e.g., MFS/USB) Dynamically created via CGI functions 23 HTTP Server HTTP Server MFS TFS CGI Table CGI USB CF SD Etc. MQX I/O Subsystem Others HTTP Client HTTP Client
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc HTTP Server Initialization ► Install file-system ► Initialize HTTP server, specify root directory and home page ► Register CGI table and function callback table, if required ► Start server
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Sample Code
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Module Agenda ► Introduction to RTCS RTCS Sockets Application protocols HTTP Server ► Hands-on exercise – build your own embedded Web server ► Additional resources
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Instructions ► Lab Handout provides: Directions on assembling Tower System and connecting cables Three separate labs: Web server Simple application server FTP & Telnet servers Each Lab is independent; Labs can be done in any order
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Lab 1: Web Server ► Objectives: Add a Web server to your project Customize look of the Web server Add form input for controlling Tower System hardware (LEDs) Add CGI for obtaining Tower System inputs (switches)
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Lab 2: Simple Application Server ► Objectives: Create a simple TCP server framework Test with Telnet Client
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Module Agenda ► Introduction to RTCS RTCS Sockets Application protocols HTTP Server ► Hands-on exercise – build your own embedded Web server ► Additional resources
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc More Information ► Demos Telnet Server Web server SNTP* SMTP with sockets* DNS Resolution* DHCP Client* Digital Sign** Web HVAC 31 *MCF51CN demos only, ** MPC5125 demo only
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Freescale MQX™ Documentation ► MQXUG User Guide MQXUG ► MQXRM Reference Manual MQXRM ► MQXUSBHOSTAPIRM USB Host API Reference Manual MQXUSBHOSTAPIRM ► MQXUSBDEVAPI USB Device API Reference MQXUSBDEVAPI ► MQXUSBHOSTUG USB Host User Guide MQXUSBHOSTUG ► MQXRTCSUG RTCS User Guide MQXRTCSUG ► MQXMFSUG File System User Guide MQXMFSUG ► MQXIOUG I/O Drivers User Guide MQXIOUG ► MQXFS Software Solutions Fact Sheets MQXFS
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Further Reading and Training ► TWR-MCF51CN-KIT Lab Document ► MCF5225x – Lab Document ► MQX Release Notes ► MQX User’s Guide ► Writing First MQX Application (AN3905) ► Using MQX: RTCS, USB, and MFS (AN3907) ► How to Develop I/O Drivers for MQX (AN3902)
TM Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc Further Reading and Training (Cont.) ► Videos: MCF5225x and Freescale MQX introduction Getting started with MCF5225x and Freescale MQX Lab Demos And more…. ► vFTF technical session videos: Introducing a modular system, Serial-to-Ethernet V1 ColdFire® MCU and Complimentary MQX™ RTOS Writing First MQX Application Implementing Ethernet Connectivity with the Complimentary Freescale MQX™ RTOS
TM