Technical Seminar Build An ARM Cortex-M3 Based Embedded Web Server with Luminary Micro and Stellarisware
Agenda
1
Introduction to ARM® Cortex™, TCP/IP, and Ethernet
2
Introduction to Luminary Micro Hardware and Software Softwar e Tools Tools
3
Build an embedded web server using StellarisWare!
4
Embedded Ethernet Control Examples
Agenda
1
Introduction to ARM® Cortex™, TCP/IP, and Ethernet
2
Introduction to Luminary Micro Hardware and Software Softwar e Tools Tools
3
Build an embedded web server using StellarisWare!
4
Embedded Ethernet Control Examples
Introduction to ARM® Cortex™, TCP/IP, TCP/IP, and Ethernet
What is ARM® Cortex™-M3?
The Cortex family of ARM processors provides a range of solutions optimized around specific market applications across the full performance spectrum. Cortex underlines ARM's strategy of aligning technology around specific market applications and performance requirements. The ARM Cortex family is comprised of three series, which all implement the Thumb-2 instruction set to address the increasing performance and cost demands of various markets: ARM Cortex-A Series • Applications processors for complex OS and user applications. Supports the ARM, Thumb and Thumb-2 instruction sets. ARM Cortex-R Series • Embedded processors for real-time systems. Supports the ARM, Thumb, and Thumb-2 instruction sets ARM Cortex-M Series • Deeply embedded processors optimized for cost sensitive applications. Supports the Thumb-2 instruction set only
Note: ARM Code 32-bit Thumb Code 16-bit Thumb-2 Code mostly 16-bit & some 32-bit (25% Faster, 26% Smaller)
What is Ethernet?
Ethernet refers to the family of local-area network (LAN) products covered by the IEEE 802.3 standard that defines what is commonly known as the CSMA/CD protocol Five data rates are currently defined for operation over optical fiber and twisted-pair cables: •
10Base-T Ethernet (1 Mbps/10 Mbps )
•
Fast Ethernet (100 Mbps )
•
Gigabit Ethernet (1000 Mbps )
•
10-Gigabit Ethernet (10000 Mbps )
•
100-Gigabit Ethernet (100000 Mbps )
TCP/IP Model TCP/IP defines a set of rules to enable computers to communicate over a network. specifying how data should be packaged, addressed, shipped, routed and delivered to the right destination.
Application layer
Transport layer
Network/Internet layer
Data link layer
Physical layer
Five-Layer TCP/IP Model
Application Layer: DHCP, DNS, FTP, HTTP, IMAP4, IRC, NNTP, XMPP, POP3, RTP, SIP, SMTP, SNMP, SSH, TELNET, RPC, RTCP, RTSP, TLS (and SSL), SDP, SOAP, GTP, STUN, NTP, etc...
Transport Layer: TCP, UDP, DCCP, SCTP, RSVP, ECN, etc...
Network/Internet Layer: IP (IPv4, IPv6), OSPF, IS-IS, BGP, IPsec, ARP, RARP, RIP, ICMP, ICMPv6, IGMP, etc...
Data Link Layer: Ethernet, 802.11 (WLAN), 802.16, Wi-Fi, WiMAX, ATM, DTM, Token ring, FDDI, Frame Relay, GPRS, EVDO, HSPA, HDLC, PPP, PPTP, L2TP, ISDN, ARCnet, LLTD, etc...
Physical Layer: Ethernet physical layer, Twisted pair, Modems, PLC, SONET/SDH, G.709, Optical fiber, Coaxial cable, etc...
Typical TCP/IP Stack Options
Acronym TCP IP UDP ARP RARP BOOTP DHCP BSD ICMP IGMP PPP SLIP DNS FTP TFTP RIP RTP/RTCP Telnet HTTP SNMP SMTP POP3 SNTP PTP* NAT SSL IPSec IKE
Translation - Transmission Control Protocol - Internet Protocol - User Datagram Protocol - Address Resolution Protocol - Reverse Address Resolution Protocol - Bootstrap Protocol - Dynamic Host Configuration Protocol - Berkeley Socket - Internet Control Message Protocol - Internet Group Management Protocol - Point-To-Point Protocol - Serial Line Internet Protocol - Domain Name System - File Transfer Protocol - Trivial File Transfer Protocol - Routing Information Protocol - Real-time Transport (Control) Protocol - Terminal Emulation - Hypertext transfer Protocol Server - Simple Network Management Protocol - Simple Mail Transport Protocol - Post Office Protocol-3 - Synchronized Network Time Protocol - Precision Time Protocol (also called IEEE1588) - Network Address Translation - Secure Sockets Layer - Internet Protocol Security - Internet Key Exchange
*Several Stellaris MCUs integrate hardware assistance for IEEE1588 PTP.
Wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link wikipedia Link
High-level Purpose (guarantee delivery) (data oriented) (fire-and-forget) (finding a address) (finding a address) (finding a address) (adding devices to a network) (connecting to the internet) (error message generation) (manage IP multicast groups) (direct point-to-point connection) (direct point-to-point connection) (translate host name to address) (transfer files point-to-point) (FTP, but for smaller files) (routing internal networks) (send audio/video over internet) (remote access) (publish/retrieve web pages) (manage/monitor client status) (send email over internet) (retrieve email over internet) (network clock synchronization) (deterministic synchronization) (network privacy) (secure communication) (virtual private network) (security key/certificate sharing)
Introduction to Luminary Micro Hardware and Software Tools
Ethernet in Embedded Systems
Media Access Controller (MAC) – Part of the Data Link Layer. The MAC provides addressing and channel access control mechanisms that make it possible for several terminals or network nodes to communicate within a multipoint network. Physical Layer (PHY) - The most basic network layer, providing only the means of transmitting raw bits rather than packets over a physical data link connecting network nodes. Magnetics (Isolation Transformer) - Part of the Physical layer used to decouple PHY from the physical Ethernet cable. RJ45 - That “Ethernet” Connector.
Stellaris Family: Unique Value Proposition The only ARM MCU with 10/100 Ethernet MAC / PHY Enables
network connectivity and embedded web servers Lower external power budget requirements than solutions using an external PHY Savings in board space and system cost The Stellaris MCU in a BGA package is just slightly larger than a standard Ethernet PHY in a 48 pin TQFP package
10mm
10mm
MCU + PHY + More Stellaris Features in an area the size of an Industry standard PHY!
And now even more value in the same small package:
Hardware support for Precision Time Protocol (IEEE 1588 PTP)
Ethernet Connected MCUs s e i r e S n i s U C M
Memory and Speed ) B K ( h s a l F
) B K (
M A R S
General Purpose Timer Modules
Core
Motion Control PWM
Serial Interfaces
t e r r n d r Y 8 e e g n r s e ) e H 8 o t o s o t m m a i r e i i h r u s I z t P P 5 a n i p C t p E s a l e T T r l r S H e c i t t c C T u n E + 1 i i m b x M e c p I Q 0 C E i i R C t b b t L a ( n r s - - a T 0 A E u l P O 2 6 1 I O u / M E M a 3 1 0 F 1
C A M N A C
d e e p S l l u F B S U
Analog ADC (10-bit)
I s P T l e S S R 2 C / C n 2 A I I I D n S U a A h S C
d e ) e s p S p s K C ( D A
p m r e T o l s a n e n r S e t n I
Digital s s ) e r r g r o l t o V a o g t t 5 l t a a a o t a r ( l r o l i a a g a s V u p O g n p i O e A m D m I R o o P D L C C G
e t a n r e b i H
s n o i t p O e g a k c a P
LM3S6000s
19
2 56
64
-
50
-
4
8
1
6
✓
6
1
2
✓
✓
-
-
3
2
2
- 8
1000
✓
✓
3
-
46
✓
100-LQFP 108-BGA
LM3S8000s
12
2 56
64
-
50
-
4
8
1
6
✓
6
1
2
✓
✓
3
-
3
2
2
- 8
1000
✓
✓
3
-
46
✓
100-LQFP 108-BGA
LM3S9000s
6
2 56
96
✓
100
✓
4
8
2
8
✓
8
4
2
✓
✓
2 O/H/D 3
2
2
10 00
✓
✓
3
7
65
✓ 100-LQFP
✓
16
Stellaris LM3S6965 Evaluation Kit:
LM3S6965 Evaluation Board
OLED graphics display with 128 x 64 pixel reso lution User LED, navigation switches, and select pushbuttons Magnetic speaker LM3S6965 I/O available on labeled break-out pads Standard ARM® 20-pin JTAG debug connector with input and output modes MicroSD card slot Included µIP Web Server (from FreeRTOS.org™)
Ethernet, USB, and JTAG Cables CD containing evaluation software tools, documentation, quickstart guide, Stellaris Peripheral Driver Library, and source code
Four versions, each only $69: • EKK-LM3S6965 • ARM RealView Microcontroller Development Kit tools with 16KB address Limit • EKI-LM3S6965 • IAR Embedded Workbench KickStart with 32KB address limit • EKC-LM3S6965 • CodeSourcery Sourcery G++ GNU with 30-day evaluation license • EKT-LM3S6965 • Code Red Technologies Red Suite with f ull evaluation license locked to board
EK-LM3S6965: Evaluation Kit Overview Stellaris LM3S6965 Evaluation Kit:
LM3S6965 Evaluation Board •
• • •
• • •
•
Stellaris LM3S6965 microcontroller with fullyintegrated 10/100 Ethernet controller Simple setup OLED graphics display with 128 x 64 pixel resolution User LED, navigation switches, and select pushbuttons Magnetic speaker LM3S6965 I/O available on labeled break-out pads Standard ARM® 20-pin JTAG debug connector with input and output modes MicroSD card slot
Included µIP and lwIP IP stacks with Web Servers Retractable Ethernet Cable, USB cable, and JTAG cable CD containing: • • • • •
Evaluation software tools Device documentation quickstart guide, Stellaris Peripheral Driver Library Example source code
EK-LM3S6965: Hardware Features JTAG/SWD Input and Output
Reset Switch Debug Out LED
Navigation Buttons Power LED OLED Graphics Display
34 Pin I/O Breakout Header
Stellaris® LM3S6965 microSD Memory Slot 10/100BaseT Ethernet Jack
Speaker
User Status LED User Push Button 26 pin I/O Breakout Header
In-circuit Debug Interface USB Interface
Ethernet Hardware: Simple Hardware Design
EK-LM3S6965: Debug Interface Mode
The LM3S6965 evaluation board can be used as an In -Circuit Debugger Interface (ICDI). The board can be used to debug other Stellaris hardware such as a custom board. This feature is supported by Keil, IAR, CodeSourcery, and Code Red tools.
ARM Cortex-M3 JTAG and SWD/SWT
JTAG •
•
In-circuit flash programming
Parallel JTAG TAP •
•
Industry standard boundary scan for in-circuit testing
Allows access to chip JTAG for boundary scan, or Cortex-M3 JTAG for debug support
Serial Wire Debug / Serial Wire Trace (SWD/SWT) •
New technology to provide debug access and control in two pins, with an optional pin for trace information
Development Tools for Stellaris MCUs
Eval Kit License
30-day full function. Upgradeable.
32KB addresslimited. Upgradeable.
16KB addresslimited. Upgradeable.
Full functional; locked to board. Upgradeable.
Compiler
GNU C/C++
IAR C/C++
RealView C/C++
GNU C/C++
Debugger / IDE
gdb / Eclipse
C-SPY / Embedded Workbench
µVision
code_probe / Eclipse-based tool suite
Full Upgrade
199 USD personal edition / 3000 USD full support
2700 USD
MDK-Basic (256 KB) = €2000 (2895 USD)
999 USD (upgrade to run on customer platform)
J-Link, ~299 USD
U-Link, ~199 USD
Red Probe, 155 USD
JTAG Debugger
Remember: In addition to its original use as an evaluation kit, each Stellaris evaluation kit has the built-in capability for use as a simple USB-to-20-pin JTAG debugger.
Communications Stacks for Stellaris MCUs Micriμm μC/TCP-IP Express Logic NetX™ TCP/IP protocol stack CMX-MicroNet™ protocol stacks
InterNiche TCP/IP NicheStack™, NicheLITE™, and add -on modules such as HTTP, SNMP, and security protocols EtherNet/IP™ protocol stacks
FreeRTOS.org Open-Source µIP Embedded web server µIP Embedded TCP/IP Stack lwIP TCP/IP Stack
Open source TCP/IP stack for small footprint embedded systems Open source light-weight implementation of the TCP/IP stack for small RAM embedded systems IEEE 1588 PTP (Precision Time Protocol) SEVENSTAX TCP/IP Protocol Stack
Open Source TCP/IP Stacks
uip •
Protocols supported
•
•
Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Internet Protocol (IP) Internet Control Message Protocol (ICMP) Address Resolution Protocol (ARP)
Typical code size on the order of a few kilobytes RAM usage can be as low as a f ew hundred bytes. Memory conserved by limiting to one outstanding transmit packet
Website
http://www.sics.se/~adam/uip
Protocols supported
Memory requirements
•
lwip
•
Memory Requirements
•
uip and lwip licenses
No restriction in shipping in real products Redistribution of stack source or binaries (such as in our kit) must carry copyright
Typical code size is on the order of 25 to 40 kilobytes RAM requirements are approximately 15 to a few tens of kilobytes
Website
Internet Protocol (IP) including packet forwarding over multiple network interfaces Internet Control Message Protocol (ICMP) for network maintenance and debugging User Datagram Protocol (UDP) including experimental UDP-lite extensions Transmission Control Protocol (TCP) with congestion control, RTT estimations, and fast recovery/transmit Dynamic Host Configuration Protocol (DHCP) Point-to-Point Protocol (PPP) Address Resolution Protocol (ARP) for Ethernet Specialized raw API for enhanced performance Optional Berkeley-like socket API
http://www.sics.se/~adam/lwip http://savannah.nongnu.org/projects/lwip
Build an embedded web server using StellarisWare!
EKx-LM3S6965: Key Steps to get up and running
•
Documentation and software
•
Connecting the board
•
USB drivers
•
Tool Chain
•
Application example, drivers and more
•
Import, compile, debug an embedded web server
•
Customize examples
Documentation and Software CD The “Luminary Micro Software and Documentation CD” contains a wealth of information. This includes: • Quickstarts • Datasheets • User’s manuals • Schematics • Application notes • Example software • and more…
More information and updates are available at: www.luminarymicro.com
Tell us how to communicate with you! •
•
Log in to Luminary Micro website Sign up for automatic updates on: •
• •
•
•
•
Software updates for devices, kits, and reference designs Errata notifications Product Change Notices (PCNs) Applications notes updates and publication Datasheet updates
Never miss out on PCNs or errata that affect your design!
Connect the Eval Board •
Use the USB cable supplied in the kit to power the eval board.
•
Connect the mini-b (smaller) end of the USB cable to the connector labeled “USB TO JTAG/SWD” on the EVB.
•
Connect the other end (Type A) to a free USB port on your host PC.
•
Connect the Ethernet cable supplied in the kit between the eval board and the connector on your laptop (unless you have a router supporting DHCP available in which case you should plug both into this instead).
•
The quickstart application will begin, enjoy the game!
USB Drivers for EK-LM3S6965 •
When you plug in the EVB for the first time, Windows starts the Found New Hardware Wizard and asks if Windows can connect to Windows Update to search for software. Select “No, not this time” and then click Next.
•
You will need administrator privileges to install the device drivers
USB Drivers for EK-LM3S6965 •
There are 3 USB driver s to install •
“Stellaris Evaluation Board A.”
•
“Stellaris Evaluation Board B.”
•
“Stellaris Virtual COM Port.”
• A Found New Hardware Wizard appears asking to install drivers for each of these devices in Sequence
Install your preferred Tool Chain
Stellaris evaluation kits come with the evaluation version of either
IAR Embedded Workbench for ARM Kickstart
Keil MDK ARM
CodeRed Red Suite (GCC/Eclipse)
Code Sourcery (GCC/Eclipse)
Codered - Red Suite Evaluation Tools
No time limits!
Fully featured including Red Trace SWV support
The evaluation version is a code size UNLIMITED and full featured on Stellaris Evaluation Kits.
With the evaluation version, debug out functionality to custom target boards is limited until a license is purchased.
Install application examples, drivers and more
Free license and royalty-free source code: Peripheral Driver Library Graphics Library USB Library Boot Loader IEC 60730 Library Example Applications Third Party utilities
Enabling our customers with the ability to rapidly develop and deploy their products at competitive costs yielding a higher overall value for the Stellaris solution! Can be found on evaluation kit CD or downloaded from the Luminary Micro website
Import / Load Application Examples
Once StellarisWare is installed all application examples can be found in
./Stellarisware/boards/ek-lm3sxxxx
Keil
-
*.mpw
IAR
-
*.eww
Codered
-
*.xml
Codesourcery
-
makefile
Codered: Import the EK-LM3S6965 Projects
Open the Quickstart “Projects and Files” list. Select “Import project(s) from XML description.
Browse to the relevant location
Import all required projects
Code Red: IDE C/C++ Perspective •
The Code Red IDE is a customized version of the open source Ecli pse IDE (Europa release)
Workspace/source browser Source editor Outline view: Include files, function prototypes, etc. Quick start shortcuts Console, datasheet browser, error window
Codered: Program and Debug Project •
The Debug Perspective has standard Eclipse debug capabilities plus the Code Red SWV plug-in
Debug thread view window Core register, variable, breakpoint, peripheral viewers Source/PC view Outline view: Include files, function prototypes, etc. Console, Memory windows, and Red Trace SWV viewer Press this button to run the application.
EKx-LM3S6965 - Available examples
bitband
hello
blinky
interrupts
boot_demo1
mpu_fault
boot_demo2
pwmgen
boot_serial
qs_ek-lm3s6965_revc
enet_io
sd_card
enet_lwip
uart_echo
enet_ptpd
watchdog
enet_uip
gpio_jtag
graphics
Ethernet examples
Embedded Control Web Page (enet_io)
enet_io
Servers web pages from internal flash The enet_io application illustrates two methods of controlling board operations from the web browser:
I/O Control Demo 1 shows direct HTTP requests generated via JavaScript code in the web page (io_http.html). I/O Control Demo 2 shows the use of Server Side Includes (SSI) and Common Gateway Interface (CGI) to perform the same operations (io_cgi.shtml)
All web site files are stored as a file system image (io_fsdata.h) linked into the application image in flash.
Web Server Demos – uIP, lwIP o
enet_lwip Serves web pages from internal flash or from user microSD card Extended support for SSI & CGI added to lwIP HTTPD All web site files are stored as a file system image (lmi_fsdata.h) enet_uip Serves basic single page Web pages stored as ascii character array (httpd.c) o
o
o
o
o
o
LM3S6965 Web Server – Game Mode o
QuickStart/lwip Serves web pages from internal flash Serves map for arcade game All web site files are stored as a file system image (fsdataqs.h) linked into the application image in flash . o
o
o
IP Address Assignment •
•
•
•
•
Example applications first attempt to use DHCP to obtain an IP address. With a DCHP server available, an IP address is typically assigned to the board in a few seconds. If DHCP times out (as it will here since we do not have a DHCP server available), a link-local IP address (169.254.xx.yy) is chosen using the AUTOIP (RFC3297) protocol. DHCP timeout defaults to 1 minute so it may take some time for the board and laptop to pick IP addresses. The lwIP TCP/IP stack can be configured for DHCP, AUTOIP or static IP address use.
Example wed site customization
Modifying the web site in enet_io, enet_lwip “makefsfile.exe” tool is included in example root directory.
HTML and images are stored within the application binary as a file system image.
This data can be found in:
enet_io
- io_fsdata.h
enet_lwip
- lmi_fsdata.h
The application web site can be found in the “fs” directory imported alongside the application.
After changing content in the “fs” directory, rebuild the file system image using command:
makefsfile -i fs -o io_fsdata.c -h –r
executed from the example directory
Demonstrations
Embedded Ethernet Control Examples
Embedded Ethernet Control: Motor Control Example applications:
• • • • • • • • • • • • •
Factory automation
Small appliances
Electric wheelchairs and mobility devices
Pumping and ventilation systems
Advanced motor control for three-phase brushless DC motors up to 36 V 500 W Flexible platform accelerates integration process Uses a Stellaris LM3S8971 microcontroller 10/100 Ethernet and CAN interfaces Four quadrant operation for precise control Hall Effect and Quadrature operation modes Sensorless operation modes On-board braking circuit Incremental quadrature encoder input Analog and digital control inputs Status LEDs indicate Power, Run, and Fault conditions Optional power-managed fan for forced-air cooling JTAG/SWD port for software debugging
Embedded Ethernet Control: Motor Control GUI •
Optional PC-side GUI based on LabWindows
•
Configure motor capabilities and safety parameters
•
Test controls and effects
•
Understand tradeoffs in end motor system design
•
View system statistics
Embedded Ethernet Control: Serial-to-Ethernet Example applications:
•
•
•
• •
• • • •
•
Electronic Flow Meters (EFMs)
Medical Point-of-Care and Retail Point-of-Sales Machines
CCTV RS-232 Recorders
RS-232 Stepper Motor Controller Systems
Auto MDI/MDIX cross-over correction Traffic and link indicators UART0 has RS232 levels, transceiver runs at up to 250 Kbits/sec UART1 has CMOS/TTL levels, can run at 1.5 Mbits/sec UART ports include RTS/CTS for flow control
Software •
•
Serial ports •
•
SCADA Remote Terminal Units (RTUs)
LM3S6432 in a 10 x 10 mm BGA package for reduced board size 10/100 Mbit Ethernet port •
•
IP configuration with static IP address or DHCP Telnet server for access to serial port Web server for m odule configuration UDP responder for device discovery Telnet client for Ethernet-based serial port extender
Module supports 5 V and 3.3 V supplies JTAG port pads for factory programming