Embedded Webserver-1

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Embedded Webserver-1 as PDF for free.

More details

  • Words: 16,873
  • Pages: 179
ABSTRACT As we know the home pages or web pages are created by means of HTML code. But first time by using our RABBIT 3000 processor & coding on it, we are get the home pages. So by using our RABBIT 3000 processor we are designing a project called “Embedded Web Server”. Rabbit 3000 processor has a protocol converter that transmits the data sent by serial equipment as TCP/IP data to the network. It also supports UDP Protocol for Broadcast kind of application. As we are accessing the Internet in our daily life, so in that the main problem occurring is speed of accessing i.e., many peoples are accessing the same web site at same time so the heavy burden will occur for main server. So instead of this problem we are developing a kit, which shares the risk of main server by means of duping the home page code in to our Rabbit 3000 microprocessor & connecting it to our main server. Then, the accessing time for people will access well when compared to previous one. Web Server is a device, which hosts static or dynamic web pages. In this project static web pages will be hosted on an embedded controller. We are going to use an Ethernet controller that is interfaced to our main controller for communicating over Internet. Our Server opens the http port and waits in the listening mode. Whenever a request comes from any node in the network it serves the static html page stored in its memory. First we will initialize the TCP/IP stack and then the http server at the application layer.

EMBEDDED WEB SERVER 1

DESCRIPTION ABOUT PROJECT

With the wide spread availability of web browsers on virtually every conceivable hardware platform, offering web based access to an application or device is becoming a common requirement. Although there are several available web server implementations, most standard web servers are just too large or inconvenient to use. Embedding a web server into a device or a stand-alone application requires a light-weight and low overhead Implementation. Embedded Web Server provides a solution to this problem. In this project static web pages will be hosted on an Rabbit Processor based embedded module, this module will be having a Ethernet interface through which it can be connected to internet. The software inside the module will have TCP / IP stack which is used for establishing communication with other systems in the internet. This Embedded module is designed with Rabbit 3000 processor to which memory chips and Ethernet controllers are interfaced. The Transmission Control Protocol / Internet Protocol (TCP / IP) protocol suite is the engine for internet and networks world wide. Its simplicity and power has lead to its becoming the single network protocol of choice in the world to day. This project provides you with the tools to incorporate a low overhead web server into your application or device. Using this framework offered you can provide secure and efficient access to both static and dynamically generated content.

EMBEDDED WEB SERVER 2

The basic series of operations that our application must perform is: I. Receive and interpret an HTTP request received from a browser client. II. Process the request and return the required response via HTTP. This Project explores the capabilities of the Rabbit Processor and its features and specifications. It also gives the brief over view of the the TCP / IP protocol and the networking concepts.

EMBEDDED WEB SERVER 3

NETWORK THEORY TCP / IP PROTOCOL STACK: The TCP/IP protocol suite was developed prior to OSI reference model. The TCP/IP protocol suite consists of 4 layers: host to network, network, transport and application layers. The first three layers provide physical standards, network interface, internetworking and transport functions. Application layer

Application layer

Transport layer

Transport layer

Network layer

Network layer

Host to network layer

Host to network layer

EMBEDDED WEB SERVER 4

HOST –A

HOST-B

BLOCK DIAGRAM OF THE TCP /IP REFERENCE MODEL.

LAYERS IN THE TCP / IP REFERENCE PROTOCAL

Application Layer: The application layer is the layer that most common network-aware programs work in order to communicate across a network. Communication that occurs in this layer are application specific and data is passed from the program, in the format used internally by this application, and is encapsulated into a transport layer protocol. Since the IP stack has no layers between the application and transport layers, the application layer in the IP suite include any protocols that act like the OSI’s presentation and session layer protocols. The actual data sent over the network is passed into the application layer where it is encapsulated into the application layer protocol. From there, the data is passed down into the lower layer protocol in the transport layer EMBEDDED WEB SERVER 5

The two most common lower layer protocols are TCP and UDP.Both of which require a port in order to use their service and most well-used applications have specific ports assigned to them (HTTP has port 80; FTP has port 21; etc.)for servers while clients use ephemeral ports. Routers do not utilize this layer.

Transport layer:

The transport layer is the layer between the application and the network protocol (i.e., IP) and primarily provides the service of connecting applications together through the use of ports. Since IP provides only a best effort delivery; the transport layer is the first layer to address reliability.

For example, TCP is a connection-oriented protocol that addresses numerous reliability issues to provide a reliable byte stream: •

Data arrives in-order



Data is has minimal error-correctness



Duplicate data is discarded



Lost / discarded packets are resent



Includes traffic congestion control The second protocol used in the transport layer is the User Datagram Protocol.

UDP is a connectionless datagram protocol. Like IP, it is a best effort or “unreliable” protocol.UDP is typically used for applications such as streaming media (audio and video, etc) where on-time arrival is more important than reliability or the overhead of EMBEDDED WEB SERVER 6

setting up a reliable connection is disproportionately large. Both TCP and UDP are used to carry a number of higher-level applications. The applications at any given network address are distinguished by their TCP or UDP c port.

Network layer: The network layer solves the problem of getting packets across a single network. With the advent of the concept of internetworking, additional functionally was added to this layer, namely getting data from the source network to the destination network. This generally involves routing the packet across a network of networks, knowns an internet. In the internet protocol suite, IP performs the basic task of getting packets of data from source to destination.IP can carry data for a number of different upper layers protocols; these protocols are each identified by a unique protocol number: ICMP and IGMP are protocols 1 and 2, respectively. Some of the protocols carried

by IP, such as ICMP (used to transmit diagnostic information about IP transmission) and IGMP (used to manage multicast data) are layered on top of IP but perform internet work layer functions.

Host to network layer: The Host-to-Network layer interfaces the TCP / IP protocol stack to the physical network. The TCP /IP reference model does not specify in any great detail the operation of this layer, expect that the host has to connect to the network using some protocol so it can send IP packets over it. It do the same work as the Data link layer and the physical layer in the open systems inter-connection model.

ETHERNET:

EMBEDDED WEB SERVER 7

Ethernet is the most widely used LAN protocol. This protocol was designed in 1973 by Xerox with a data rate of 10 Mbps and

a

bus topology. Today it has a data rate of 100 Mbps and 1 Gbps. Ethernet is formally defined by the IEEE 802.3 standard.

TRADITIONAL ETHERNET: The original Ethernet, usually referred to as traditional Ethernet, had a 10-Mbps data rate. But there are other Ethernets with different data rates.

ACCESS METHOD (CSMA / CD): The IEEE 802.3 standard defines carrier sense multiple access with collision detection (CSMA / CD) as the access method for traditional Ethernet. Stations on a traditional ethernet can be connected together using a physical bus or star topology,

but the logical topology is always a bus. By this, we mean that the medium is shared between stations and only one station at a time can use it. It also implies that all stations receive a frame sent by a station (broadcasting).The real destination keeps the frame while the rest drop it. In this situation, how can we be sure that the stations are not using the medium at the same times? If they do, their frames will collide with each other. CSMA / CD is designed to solve the problem according to the following principles: 1. Every station has an equal right to the medium (multiple access). 2. Every station with a frame to send first listens to the medium. If there is no data on the medium, the station can start sending (carrier sense). 3. It may happen that two stations sense the medium, find it idle and start sending. In this case, a collision occurs. The protocol forces the station to continue to listen to the line after sending has begun. If there is a collision, all station sense the EMBEDDED WEB SERVER 8

collision; each sending station sends a jam signal to destroy the data on the line and after each waits a deferent random time, try gain. The random times prevent the simultaneous re-sending of data In traditional ethernet, the minimum frame length is 520 bits, the transmission rate is 10Mbps, propagation speed is almost the speed of light and the collision domain is almost 2500 meters. The traditional 10 Mbps Ethernet has 2 layers. The data link layer has two sublayers: the logical ink control (LLC) sub layer and the medium access control (MAC) sub layer. The LLC layer is responsible for flow and error control and the data-link layer. The MAC sub layer is responsible for the operation of the CSMA / CD access method. The MAC sub layer also frames data received from the LLC layer and passes the frames to

the physical layer for encoding. The physical layer transfers data into electrical signals and sends them to the next station via the transmission medium. This bottom layer also detects and reports collisions to the data link layer.

ETHERNET FRAME: IEEE 802.3 specifies one frame type containing seven fields: Preamble, SFD, DA, SA, length /type of PDU, 802.2 frames, and the CRC. Ethernet does not provide any mechanism for acknowledging received frames, making it what is known as an unreliable medium. Acknowledgements must be implemented at the higher layers. This format of the CSMA/CD MAC frame is shown below

EMBEDDED WEB SERVER 9

PREAMBLE

DE 7 bytes bytes

SFD

1 bytes

DEST ADD

6 bytes

SOURCE ADD 6 bytes

LENGTH 2 bytes

DATA and PADDING

CRC 4

Preamble: The preamble of 802.3 contains 7 bytes (56 bits) of alternating 0s and 1s and that alerts the receiving system to the coming frame and enables it to synchronize its input timing. The preamble is actually added at the physical layer and is not (formally) part of the frame.

Start frame delimiter (SFD): The SFD field (1 byte 10101011) of the 802.3 frame signals the beginning of the frame. The SFD gives the station a last chance for synchronization.

The last two bits are 11 and are signal that the next field is the destination address.

Destination address (DA): The DA field is 6 bytes and contains the physical address of the intermediate or destination station.

Source address (SA): The SA field is also 6 bytes and contains the physical address of the sending or intermediate station.

Length type: The length type field has one of two meanings. If the value of the field is less than 1518, it is a length field defines the length of the data field that follows. If the EMBEDDED WEB SERVER 10

value of the field is greater than 1536, if defines the upper layer protocol that uses the service of the Internet.

Data: The data field carries data encapsulated from the upper layer protocols. It is a minimum of 46 and a maximum of 1500 bytes.

Crc: The last field in the 802.3 frame contains the error detection information. It tells whether the transmitted data is error free or not.

IMPLEMENTATIONS: The IEEE standard defines several implementations for IEEE standards. The following are the common 10BASE5 (thick ethernet) uses a bus topology with a thick coaxial cable as a transmission medium. 10BASE2 (thin ethernet or cheaper net) uses a bus topology with a thin coaxial cable as transmission medium. 10BASE-T (twisted pair Ethernet) uses a physical star topology with stations connected by two pairs of twisted-pair cable to the hub. 10BASE-FL (fiber link Ethernet) uses a star topology with stations connected by a pair of fiber-optic cables to the hub.

EMBEDDED WEB SERVER 11

NETWORK ELEMENTS: While dealing with the networks we most often come across the terms called the routers, repeaters, bridges and hubs. These are used as connecting devices when we are connecting the LANs or WANs together.

Repeaters: A repeater is a device that operates only in the physical layer. Signals that carry information within a network can travel a fixed distance before attenuation endangers the integrity of data. A repeater receives a signal, before it becomes too weak or corrupted, regenerates the original bit pattern. It then sends the refreshed signal. A repeater can extend the physical length of a network.

Bridges: A bridge operates in both the physical and the data link layers. As a physical layer device, it regenerates the signal it receives. As a data link layer device, the bridge can check the physical address (source and destination) contained in the packet. A bridge has no physical address.

Hub: Hub refers to any connecting device; it does have a specific meaning. A hub is actually a multiport repeater. It is normally used to create Connections between stations in the physical star topology. The hubs are also used to create multiple levels of hierarchy.

Routers:

EMBEDDED WEB SERVER 12

An internet is a combination of networks connected by routers. When a datagram goes from a source and destination, it will probably passes through many routers until it reaches the router attached to the destination network. A router receives the packet from a network and passes it to another network. A router usually attached to several networks.

DIFFERENCES: There are three major differences between a router a repeater and a bridge. 1. A router has a physical and logical (IP) address for each of its interfaces. 2. A router acts only on those packets in which the destination address matches the address of the interface at which the packet arrives. This is true for unicast, multicast or broadcast addresses. 3. A router changes the physical address of the packet (both source and destination) when its forwards the packet.

IP ADDRESSING: At the network Layer we need to uniquely identify each device on the Internet to allow global communication between all devices. The identifier used in the IP layer of the TCP/IP protocol suite to identify each device connected to the Internet is called the Internet address or IP address. An IP address is a 32-bit binary address that uniquely and universally defines the connection of a host to a router to the Internet. IP addresses are unique in the sense that each address defines one and only one connection to the internet. Two devices in the internet can never have the same address. However, if a device has two connections to the internet, via two networks, it has two IP addresses. The IP addresses are universal in the sense that the addressing system must be accepted by any host that wants to be connected to the Internet.

ADDRESS SPACE: EMBEDDED WEB SERVER 13

A protocol like IP that defines address has an address space. An address space is the total number of addresses used by the protocol. If a protocol uses N bits to define an address, the address, space is 2 N because each bit can have tow different values (o and 1(and N bits can have 2 N values. IPV4 (IP version 4) uses 32-bit addresses, which means that the address space is 232 or 4,294,967,296.

DOTTED DECIMAL NOTATION OF IP ADDRESS: To make an IP address more compatible and easier to read, internet address are usually written in decimal form with a decimal point separating the bytes. The below figure shows the IP address in dotted decimal notation. Note that because each byte is only 8 bits, each number in the dotted decimal notation is between o and 255.

10000000

00001011

00000011

11101010

128.11.3.31 CLASSES IN IP ADDRESSING: IP address used the concept of classes. This type of architecture if called classful addressing .In classful addressing the IP address space is divided into five classes A, B, C, D and E. Each class occupies some part of whole address space. EMBEDDED WEB SERVER 14

Class A covers half of the address space, class B

covers

1/4th of the whole address space, class C covers 1/8th of the address space, and class D covers 1/16th of the address space.

HOST ID AND NET ID: An IP address in class A, B and C is divided in to Net id and Host id. The net id defines the network in the internet while the hosted tells about the host in that network. In class A 1 byte defines the net id and 3 bytes defines the host id. In

class B

2 bytes defines the net id and 2 bytes defines the host id. In class C 3 bytes defines the net id and 1 byte defines the host id. Classes D and E are not divided into net id and host id. Class D addresses are used for multicasting. Classes E addresses are reserved for future use.

Class A: 0

Net id

Host id

Class A is divided into 128 blocks with each block having a different net id. The first block covers addresses from 0.0.0.0 to 0.255.255.255(net id 0) The second block covers the addresses from 1.0.0.0 to 1.255.255.255(net id 1). The last block covers the addresses from 127.0.0.0 to 127.255.255.255(net id 127).For each block of addresses the first byte (net id) is the same, but the other three bytes (host id) can take any value in the given range. The first and the last blocks of this class are reserved for special purpose and one block (net id 10) is used for private addresses. The remaining 125 blocks can be EMBEDDED WEB SERVER 15

assigned to organizations. However each block in the class contains 16,777,216 addresses for hosts, which means that the organizations should be a large one to use all the addresses. The first address in the block is used to identify the organizations to the rest of the internet. This address is called the network address. It defines the network of the organization, not individual hosts.

Class B: 10 Net id

host id

Class B is divided into 16,384 blocks with each block having a different net id. The first block covers the addresses from 128.0.0.0 to 128.0.255.255(net id 128.0). The last block covers the addresses from 191.255.0.0 to 125.255.255.255 (net id 191.255).For each block of addresses the first 2 bytes (net id) are the same, but the other 2 bytes (hostid) can take any value in the given range.

There are 16,384 networks that are there in class B. Sixteen blocks are reserved for private addresses .Therefore there are a total of 16,368 class B networks that can be assigned to the organizations. Each block in the class contains 65,536 addresses to be assigned to the hosts. Class B addresses are designed for mid size organizations.

Class C: 110 Net id

Host id

Class C is divided into 2,097,052 blocks with each block having a different net id. 256 blocks are used for private addresses leaving 2,096,896 blocks for assignment EMBEDDED WEB SERVER 16

to organizations. The first block covers addresses from 192.0.0.0 to 192.0.0.255 (net id 192.0.0). The last block covers addresses from 223.255.255.0 to 223.255.255.255 (net id 223.255.255). For each block of address the first three bytes (net id) are the same but the remaining byte (host id) can take any value in the given range. There are 2,096,902 blocks that can be assigned this means that the total number of organizations that can have class C address is 2,096,902.Howeever each block in this class contain 256 address which means the organization should be small enough to need less than 256 addresses. The first address is the network address and the last address is reserved for special purpose. Class C addresses were designed for small organizations with a small number of hosts attached to their networks.

Class D: 1110 Multicast address

There is just one block of class D address. It is designed for multicasting. Each address in this class is used to define one group of hosts on the internet. When a group is assigned an address in this class, every host that is member of this group will have a multicast address in addition to its normal address.

Class E: 1111 Reserved for future use

EMBEDDED WEB SERVER 17

There is just one block of class E address. It was designed for use as reserved addresses. The last addresses in this class 255.255.255.255 are used for special address.

INTERNET PROTOCOL: The internet protocol is a transmission mechanism used by the TCP/IP protocols. IP is an unreliable and connection less datagram protocol a best effort delivery service. The term best effort means that IP provides no error checking or tracking. IP assumes the unreliability of the underlying layers and does its best to get a transmission through its destination but with no guarantees. If reliability is important, IP must be paired with reliable protocol such as TCP. IP is also a connection less protocol packaged for a packet switching network that uses the datagram approach. This means that each datagram is handled independently and each datagram can follow a different route to the destination. This implies that datagram send by the same source to the same destination could arrive out of order. Also some could be lost or corrupted during transmission. Again IP also relies on higher level protocol to take care of all these protocols.

Datagram: Packets in the IP layers are called datagrams. A datagram is a variable length packet consisting of two parts: header and data. The header is 20 to 60 bytes in length and contains information essential to routing and delivery. It is customary in TCP/IP to show the header in 4 byte sections.

EMBEDDED WEB SERVER 18

IP DATAGRAM

32 bits VER 4 bits

HLEN DS Total length 4 bits 8 bits 16 bits Identification Flags Fragment offset 16bits 3 bits 13 bits Time to live Protocol Header checksum 8 bits 8 bits 16 bitsSERVER EMBEDDED WEB Source IP address 3219 bits

Destination IP address 32 bits DATA

Version (VER): This four bit field defines the version of IP protocols. Currently the version is 4. However version 6 may replace version 4 in few years. This field tells the IP software running in the processing machine that the datagram has the format of the version 4. All fields must be interpreted as specified in the fourth version of the protocol. If the machine is using some other version of IP the data gram is discarded rather than interpreted incorrectly.

Header Length (HLEN): This four bit field defines the total length of the datagram header in four byte words. This field is needed because the length of the header is variable (between 20 and 60 bytes). When there are no options the header length is 20 bytes and the value of this

field is 5(5*4 = 20). When the option field is at its maximum size the value of this field is 15(15*4 = 60).

Differentiated services: In this interpretation the first six bits make up the code point subfield and the last two bits are not used. The code point subfield can be used in two different ways

EMBEDDED WEB SERVER 20

1. When the three right most bits are zeros the three left most bits are interpreted the same as the precedence bits in the service type interpretation. In other words it is compatible with the old interpretation. 2. When the three right most bits are not all zeros, the six bits define 64 services based on the priority assignment by the internet or the local authorities according to the table given below.

Category

Code point

Assigning authority

1

XXXXX0

Internet

2

XXXX11

Local

3

XXXX01

Temporary or experimental

The first category contains the 32 service types. The second any third contains 16 bytes. The first category (numbers 2, 4, 6… 62) is assigned by the internet authorities. The second category (3, 7, 11, 15 … 63) can be used by local authorities. The third category (1, 5, 9 …61) is temporary and can be used for experimental purposes. The numbers are not contiguous. If they were the first category would range from 0 to 31. The second 32 to 47 and the third 48 to 63. This would be incompatible with the TOS

interpretation because xxx000 (which includes 0, 8, 16, 24,32,40,48 and 56) will fall into all three categories.

Total length: This is a 16 bit field that defines the total of the IP datagram in bytes. To find the length of the data coming from the upper layer, subtract the header length from the total length. The header length can be found by multiplying the value in the HLEN field by four. Length of data = total length - header length. EMBEDDED WEB SERVER 21

Since the field length is 16 bits the total length of the IP datagram is limited to 65535 (2^16 – 1) of which 20 to 60 bytes of the header and the rest is data from the upper layer. Though a size of 65535 bytes might seem large the size of IP datagram may increase in the near future as the underlying technologies allow even more throughput. Some physical networks are not able to encapsulate the datagram of 65535 bytes in their frames. The datagram must be fragmented to be able to pass through these networks. When a machine receives a frame it drops the header and trailer leaving the datagram.

Identification flags and fragmentation offset: These fields are used in fragmentation.

Time to live: A datagram has limited lifetime in its travel through its internet. This field was originally designed to hold a timestamp which was decremented by each visited router. The datagram was discarded when the value become zero. However for this scheme all machines must have synchronized clocks and must know how long it takes for datagram to go from one machine to another. Today this field is used mostly to control

the maximum number of hops visited by the datagram. When the source host sends the datagram it stores a number in this field. This value is approximately 2 times the maximum number of routes between any two hosts. Each router that processes the datagram decrements this number by one. If

this value after being decremented is zero

the router discards the datagram. This field is needed because routing tables in the internet cab become corrupted. A datagram may travel between two or more routers for a long time without getting delivered to the destination host. Resources may become tied up. This field limits the life time for a datagram and prevents old data grams from popping out of the networks and perhaps confusing higher level protocols (especially EMBEDDED WEB SERVER 22

TCP). Another use of this field is to intentionally limit the journey of the packet. For example if the source wants to confine the packet to the local network it can store 1 in this field. When the packet arrives at the first router this value is decremented to zero and the datagram is discarded.

Protocol: This eight bit field defines the higher level protocol that uses the services of the IP layer. An IP datagram can encapsulate data from several higher level protocols such as TCP, UDP, ICMP and the IGMP. This field specifies the final destination protocol to which the IP datagram must be delivered. In other words since the IP protocol multiplexes and demultiplexes data from different higher level protocols the value of this field helps in demultiplexing process when the datagram arrives at its final destination

Check sum: The check sum field tells the check sum of the datagram. It is used for the error detection purpose. It is the redundant information added to the packet. The checksum is calculated at the sender and the value obtained is sent with the packet. The receiver repeats the same calculation on the whole packet including the checksum. If the result is satisfactory the packet is accepted otherwise it is rejected.

Source address: This 32 bit field defines the IP address of the source. This field must remain unchanged during the time the IP datagram travels from the source host to the destination host.

Destination address:

EMBEDDED WEB SERVER 23

This 32 bit defines the IP address of the destination this field must remain unchanged during the time the IP datagram travels from the source host to the destination host.

Fragmentation: A datagram has to travel through different networks. Each router deencapsulates the IP datagram from the frame it receives, processes it, and then encapsulates it in another frame. The format and size of the received frame depend on the protocol used by physical network through which the frame just traveled. The format and size of the sent frame depend on the protocol used by the physical network through which the frame is going to travel. For example, if a router connects an Ethernet network t a token ring network, it receives a frame in the Ethernet format and sends in the token ring format. Each datagram packet has its own format. One of the fields define in the format is the maximum size of the data field. In other, words, when a datagram is encapsulated in a frame, the total size of the datagram must be less than this maximum size, which is defined by the restriction imposed by the hardware and the software used in the network. In order to make IP protocol independent of physical network, the packagers decided to make maximum length of IP datagram equal to the largest maximum transfer unit defined so far (65535 bytes). This makes transmission more efficient if we use a

protocol with an MTU of this size. However, for other physical networks we must divide the datagram to make it possible to pass through these networks. This is called as fragmentation. There are three fields used for the purpose of the fragmentation. The fields that are related to fragmentation and reassembly of IP datagram are Identification, flags, and fragmentation offset fields. EMBEDDED WEB SERVER 24

Identification: This 16 bit field identifies a datagram originating from the source host. The combination of Identification and source IP address must uniquely define a datagram as it leaves the source host. To guarantee the uniqueness the IP protocol uses a counter to label the datagrams. The counter is initialized to a positive number. When IP protocol sends a datagram it copies the current value of the counter to the identification field and increments the count by one.As long as the counter is kept in the main memory uniqueness is guaranteed. When a datagram is fragmented the value in this identification field is copied into all fragments. In other words all fragments had same identification number which is also the same as the original datagram. The identification number helps the destination in reassembling the datagram. It knows that all fragments having the same identification value should be assembled into one datagram.

Flags: This is a three bit field. The first field is reserved. The second bit is called do not fragment bit. If its value is ‘1’ the machine must not fragment the datagram. If it cannot pass the datagram through any physical network it discards the datagram and sends an ICMP error message to the source host. If its value is zero the datagram can be fragmented if necessary. The third bit is called more fragment bit. If its value is ‘1’ it means the datagram is not the last fragment, there are more fragments after this one. If its value is ‘0’ this is last or only fragment.

Fragmentation offset: This 13 bit field shows the relative position of this fragment with respect to the whole datagram. It is the offset of the data in the original datagram measured in units of 8 bytes. For example a datagram with a data size of 4000 bytes is fragmented into 3 fragments the bytes in the original data are numbered from 0 to 3999. The first EMBEDDED WEB SERVER 25

fragment carries the bytes from 0 to 1399. The offset for this datagram is 0/8 = 0. The second byte carries bytes from 1400 to 2799, the offset value for this fragment is 1400/8 = 175. Finally the third fragment carries bytes 2800 to 3999. The offset value for this fragment is 2800/8 = 350.

TRANSMISSION CONTROL PROTOCOL: TCP lies between the application layer and the network layer and serves as the intermediary between the application programs and the network operations. A transport layer protocol usually has several responsibilities one is to process to process communication. TCP uses port numbers to accomplish this. Another responsibility of the transport layer protocol is to create a flow and error control mechanism at the transport layer. TCP uses a sliding window protocol to achieve flow control. It uses the acknowledge packet, timeout and retransmission to achieve error control. The transport layer is also responsible for providing connection mechanism for the application program. The application program sends streams of data to the transport layer. It is the responsibility of the transport layer at the sending station to make a connection with the receiver, chop the stream into transportable units, number them and send them one by one it is the responsibility of the transport layer at the receiving end to wait until all the different units belonging to the same application program have arrived, check and pass those that are error free, and deliver them to the receiving application program as a stream. After the entire stream has been sent the transport layer closes the connection. TCP performs all these tasks. TCP is called a connection oriented reliable transport protocol. It adds connection oriented and reliability features to the services of IP.

TCP SERVICES: The services offered by TCP to the processes at the application layer are given below

Stream delivery service: TCP is a stream oriented protocol. TCP allows the sending process to deliver data as a stream of bytes and the receiving process to obtain data as a stream of EMBEDDED WEB SERVER 26

bytes. TCP creates an environment in which two processes seem to be connected by an imaginary tube that carries the data across the internet. The sending process produces a stream of bytes and the receiving process consumes it.

Sending and receiving buffers: Because a sending and receiving processes may not produce and consume data at the same speed TCP needs to buffer for storage. There are two buffers, the sending and receiving buffers for each direction used for storing the data in case of flow control.

Segments: Although buffering handles the disparity between speed of producing and consuming processes we need one more step before we can send the data. The IP layer as a service provider for TCP needs to send data in packets not as a stream of bytes. At the transport layer TCP groups a number of bytes together into a packet called a segment. TCP adds the header to each segment and delivers the segment to the IP layer for transmission. The segments are encapsulated in the IP datagram and transmitted. This entire operation is transparent to the receiving process.

Full duplex service: TCP offers full duplex service where data can flow in both directions at the same time. Each TCP has sending and receiving buffers and segments are send in both directions

Connection oriented service: TCP is connection oriented protocol. When a process at site A wants to send and receive data from another process at site B following occurs. 1. A’s TCP informs B’s TCP and gets approval from B’s TCP 2. A’s TCP and B’s TCP exchange data in both directions. 3. After both processes have no data left to send and the buffers are empty the two TCP’s destroy their buffers.

EMBEDDED WEB SERVER 27

This is a virtual connection but not a physical connection .The TCP segment is encapsulated in an IP datagram and can be sent out of order or lost or corrupted and then resent. Each may use a different path to reach the destination. Theirs is no physical connection. However, because TCP creates a stream oriented in which it accepts the responsibility of delivering the bytes in order to the other site. The situation is similar to that of having a connection between the two sites.

PROJECT DESCRIPTION BLOCK DIAGRAM:

Processor RABBIT 3000

Ethernet controller RTL 8019AS EMBEDDED WEB SERVER 28

RJ45 CONNECTOR

HUB 10/100 mbps

Computer Main Server

PC

PC

PC

PC

PC

PC

DESCRIPTION: The term Web server can mean one of two things: 1. A computer that is responsible for accepting HTTP requests from clients, which are known as Web browsers, and serving them Webpages, which are usually HTML documents. 2. A computer program that provides the functionality described in the first sense of the term. EMBEDDED WEB SERVER 29

This web server consists of Rabbit processor, Ethernet controller, flash memory, RJ45 jack. The web pages are stored in the flash memory. When ever a request comes from a client the Ethernet controller first receives the request and attaches the source and destination address and forwards the frame to rabbit processor. Then the processor serves the web pages to the pc that request the page. There are two ways to connect our web server one way by using a direct connection between pc and RCM board using Ethernet cross over cable or simple arrangement using a hub. In order to set up this direct connection the user will have to use a pc without networking or disconnecting a pc from the corporate network. The figure below shows the two ways of connecting the RCM 3700 module to the Pc

OPERATION The project we have designed is user friendly any individual with basic knowledge of computer networks can apply to its full fledged application. We got the following information for activating the equipment: EMBEDDED WEB SERVER 30

1. We need TCP / IP properties of network neighbourhood that is IP address of client or server we use 169. 254. 52. 47 2. Subnet mask =255. 255. 255. 0 3. Default Gateway = 169. 254. 52. 10 4. DNS Server = 169. 254. 52. 10 5. Alternate DNS Server = 218. 248. 240. 23 The IP address 169. 254. 52. 47 have been code dumped in the Rabbit module. For this we used a special type of bus compatible with LAN and Rabbit. The way to communicate with our device is: Let us start using WINDOWS XP .All options are here by activated by clicking it. START  INTERNET EXPLORER. A Web page is opened. Now we can activate the device by typing the IP address 169. 254. 52. 47.

To change IP Address: At WINDOWS XP ‘START’. START  SETTINGS  CONTROL PANEL  NETWORK CONNECTION  LAN CONNECT. Double click to connect. Right click for TCP / IP Properties. EMBEDDED WEB SERVER 31

If you want to change IP Address change to 169 . 254. 52. 56 (for example.).

WEB SERVER

INTRODUCTION: •

The term Web Server can mean one of two things. EMBEDDED WEB SERVER 32



A computer that is responsible for accepting HTTP requests from clients, which are known as Web browsers, and serving them Web pages, which are usually HTML documents.



A computer program that provides the functionality described in the first sense of the term.



Although Web server programs differ in detail, they all share some basic common features.



Every Web server program operates by accepting HTTP requests from the network, and providing an HTTP response to the requester.



The HTTP response typically consists of an HTML document, but can also be a raw text file, an image, or some other type of document.



The origin of the content sent by server is called static if it comes from an existing file or dynamic if it is dynamically generated by some other program or script called by Web server. Serving static content is usually much faster than serving dynamic content.

RABBIT CORE MODULE 3700 INTRODUCTION:

EMBEDDED WEB SERVER 33

Now-a-days the servers that are commonly used are APACHE, TOMCAT etc. These servers are very huge in size and are to be operated from a fixed location .In contrast EMBEDDED WEB SERVER is portable web-server that can be moved to any remote location and can be accessed by connecting it to the network where ever it is required. The web server is designed using RCM 3700 module. The RCM3700 has a Rabbit 3000 microprocessor operating at 22.1 MHz, static RAM, flash memory, two clocks (main oscillator and real-time clock), and the circuitry necessary for reset and management of battery backup of the Rabbit 3000’s internal real-time clock and the static RAM. One 40-pin header brings out the Rabbit 3000 I/O bus lines, parallel ports, and serial ports. The RCM3700 receives its +5 V power from the customer-supplied motherboard on which it is mounted. The RCM3700 can interface with all kinds of CMOS-compatible digital devices through the motherboard.

RCM 3700 FEATURES, ADVANTAGES AND HARDWARE DIAGRAM: Features of RCM 3700: 1. Small size: 1.20" x 2.95" x 0.89" (30 mm x 75 mm x 23 mm) 2. Microprocessor: latest revision of Rabbit 3000 running at 22.1 MHz supports Dynamic C.

.

3. 33 parallel 5 V tolerant I/O lines: 31 configurable for I/O, 2 fixed outputs. 4. External reset I/O. 5. Alternate I/O bus can be configured for 8 data lines and 5 address lines (shared with parallel I/O lines), I/O read/write. EMBEDDED WEB SERVER 34

6. Ten 8-bit timers (six cascadable) and one 10-bit timer with two match registers. 7. 512K flash memory and 512K SRAM (Options for 256K flash memory and 128K SRAM). 8. 1Mbytes serial flash memory, which is required to run the optional Dynamic C FAT file system. 9. Real-time clock. 10. Provision for customer-supplied backup battery via connections on header J1. 11.10-bit free-running PWM counter and four pulse-width registers. 12. Two-channel Input Capture can be used to time input signals from various port pins 13. Two-channel Quadrature Decoder accepts inputs from external incremental encoder modules. 14. Four available 3.3 V CMOS-compatible serial ports: maximum asynchronous baud rate of 2.76 Mbps. Three ports are configurable as a clocked serial port (SPI), and one port is configurable as an HDLC serial port. Shared connections to the Rabbit microprocessor make a second HDLC serial port available at the expense of two of the SPI configurable ports, giving you two HDLC ports and one asynchronous/SPI serial port. 15. Watchdog supervisor.

Advantages of the RCM 3700: EMBEDDED WEB SERVER 35

1. Easy C-language program development and debugging. 2. Integrated Ethernet port for network connectivity, with royalty-free TCP/IP software 3. Ideal for network-enabling security and access systems, home automation, HVAC systems and industrial controls. 4. Generous memory size allows large programs with tens of thousands of lines of code, and Substantial data storage. 5. Program download utility (Rabbit Field Utility) and cloning board options for rapid production loading of programs. 6. Fast to market using a fully engineered ”ready- to- run/ready- to- program” microprocessor core. 7. Competitive pricing when compared with the alternatives of purchasing and assembling individual components. 8. Integrated Ethernet port for network connectivity, with royalty-free TCP/IP software.

Hardware diagram of RCM 3700: 36

EMBEDDED WEB SERVER

RCM3700 Digital Inputs and Outputs: The RCM3700 has 52 parallel I/O lines grouped in seven 8-bit ports available on headers J1 and J2. The 44 bidirectional I/O lines are located on pins PA0–PA7, PB0, PB2–B7, PD2–PD7, PE0–PE1, PE3–PE7, PF0–PF7, and PG0–PG7. Figure shows the RCM3000 Rabbit Core series pin outs for headers J1 and J2.

EMBEDDED WEB SERVER 37

Figure: RCM3700 Pinouts

Headers J1 and J2 are standard 2 × 34 headers with a nominal 2 mm pitch. An RJ-45 Ethernet jack is also included with the RCM3000 series. The signals labeled PD2, PD3, PD6, and PD7 on header J1 (pins 29– 32) and the pins that are not connected (pins 33–34 on header J1 and pin 33 on header J2) are reserved for future use on other models in the RCM3000 series.

EMBEDDED WEB SERVER 38

Figure: The Use of the Rabbit 3000 Ports in the RCM3700 Series Rabbit Core modules:

The ports on the Rabbit 3000 microprocessor used in the RCM3000 Series are configurable, and so the factory defaults can be reconfigured.

MEMORY I/O INTERFACE: The Rabbit 3000 address lines (A0–A18) and all the data lines (D0–D7) are routed internally to the onboard flash memory and SRAM chips. I/0 write (/IOWR) and I/0 read (/IORD) are available for interfacing to external devices. Parallel Port A can also be used as an external I/O data bus to isolate external I/O from the main data bus. Parallel Port B pins PB2–PB5 and PB7 can also be used as an auxiliary address bus.

EMBEDDED WEB SERVER 39

When using the auxiliary I/O bus for either Ethernet or the LCD/keypad module on the Prototyping Board, you must define the usage of port A as the auxiliary I/O bus.

SERIAL COMMUNICATION: The RCM3700 board does not have any serial transceivers directly on the board. However, a serial interface may be incorporated on the board the RCM3700 is mounted on. For Example, the Prototyping Board has RS-232, RS-485 and IrDA transceiver chips.

Serial ports: There are five serial ports designated as Serial Ports A, C, D, E, and F. All five

serial ports can operate in an asynchronous

mode up to the baud rate of the system clock divided by 8.An asynchronous port can handle 7 or 8 data bits. A 9th bit address scheme, where an additional bit is sent to mark the first byte of a message, is also supported. Serial Port A is normally used as a programming port, but may be used either as an asynchronous or as a clocked serial port once the RCM3700 has been programmed and is operating in the Run Mode. Serial Ports C and D can also be operated in the clocked serial mode. In this mode, a clock line synchronously clocks the data in or out. Either of the two communicating devices can supply the clock. Serial Ports E and F can also be configured as HDLC serial ports. The IrDA protocol is also supported in SDLC format by these two ports.

EMBEDDED WEB SERVER 40

Either Serial Ports C and D or Serial Port F can be used at one time because these ports share some common pins on header J1, as shown in below Figure. The selection of port(s) depends on your need for two clocked serial ports (Serial Ports C and D) vs. a second HDLC serial port (Serial Port F).

Figure: RCM 3700 Serial Ports C, D and F.

The serial ports used are selected with the serXOpen function call, where X is the serial port (C, D, or F). Remember that Serial Ports C and D cannot be used if Serial Port F is being used.

Ethernet port: The figure below shows the pinout for the RJ-45 Ethernet port (J3).

EMBEDDED WEB SERVER 41

Two LEDs are placed next to the RJ-45 Ethernet jack, one to indicate an Ethernet link (LINK) and one to indicate Ethernet activity (ACT).The RJ-45 connector is shielded to minimize EMI effects to/from the Ethernet signals.

Programming Port: Serial Port A has special features that allow it to cold-boot the system after reset. Serial Port A is also the port that is used for software development under Dynamic C. The RCM3700 is accessed using a 10-pin program header labeled J2. The programming port uses the Rabbit 3000’s Serial Port A for communication, and is used for the following operations. • Programming/debugging • Cloning • Remote program download/debug over an Ethernet connection via the Rabbit Link EG2100.

EMBEDDED WEB SERVER 42

The Rabbit 3000 startup-mode pins (SMODE0, SMODE1) are presented to the programming port so that an externally connected device can force the RCM3700 to start up in an external bootstrap mode. The Rabbit 3000 status pin is also presented to the programming port. The status pin is an output that can be used to send a general digital signal. The clock line for Serial Port A is presented to the programming port, which makes synchronous serial communication possible. The programming port is used to start the RCM3700 in a mode where the RCM3700 will download a program from the port and then execute the program. The

programming port transmits information to and from a PC while a program is being debugged.

MEMORY: SRAM: RCM3700 series boards have 256K–512K of SRAM packaged in 32-pins Package.

Flash ROM: A Flash Memory Bank Select jumper configuration option based on 0

surface-mounted resistors exists at header JP1 on the RCM3700 modules.

This option, used in conjunction with some configuration macros, allows Dynamic C to compile two different co-resident programs for the upper and lower halves of the 512K flash in such a way that both programs start at logical address 0000. This is useful for applications that require a resident download manager and a separate downloaded program. EMBEDDED WEB SERVER 43

Serial Flash: A 1Mbyte serial flash is available to store data and Web pages.

SCHEMATIC DIAGRAM: The diagram below shows the schematic diagram of RCM3700 module showing interfacing of FLASH memory SRAM memory chips with the Rabbit 3000 Processor.

EMBEDDED WEB SERVER 44

RABBIT 3000 MICRO PROCESSOR INTORDUCTION:

EMBEDDED WEB SERVER 45

Rabbit Semiconductor was formed expressly to design

a

better microprocessor for use in small and medium-scale controllers. The first microprocessor was the Rabbit 2000. The second microprocessor, now available, is the Rabbit 3000. Rabbit microprocessor designers have had years of experience using Z80, Z180, and HD64180 microprocessors in small controllers. The Rabbit shares a similar architecture and a high degree of compatibility with these microprocessors, but it is a vast improvement. The Rabbit 3000 has been designed in close cooperation with ZWorld, Inc., a long-time manufacturer of low-cost single-board computers. Z-World’s products are supported by an innovative C-language development system (Dynamic C). Z-World is providing the soft-ware development tools for the Rabbit 3000. The Rabbit 3000 is easy to use. Hardware and software interfaces are as uncluttered and are as foolproof as possible. The Rabbit has outstanding computation speed for a micro-processor with an 8-bit bus. This is because the Z80-derived instruction set is very compact, and the timing of the memory interface allows higher clock speeds for a given memory speed. Microprocessor hardware and software development is easy for Rabbit users. In-circuit emulators are not needed. Software development is accomplished by connecting a simple interface cable from a PC serial port to the Rabbit-based target system or by performing software development and debugging over a network or the Internet using interfaces and tools provided by Rabbit Semiconductor.

Features and Specifications of Rabbit 3000 Processor: •

128-pin LQFP package. Operating voltage 1.8 V to 3.6 V. Clock speed to 54+ MHz. All specifications are given for both industrial and commercial temperature and voltage ranges. Rabbit microprocessors are low-cost. EMBEDDED WEB SERVER 46



Industrial specifications are for 3.3 V ±10% and a temperature range from -40°C to +85°C. Modified commercial specifications are for a voltage variation of 5% and a temperature range from -40°C to 70°C.



1-megabyte code-data space allows C programs with 50,000+ lines of code. The extended Z80-style instruction set is C-friendly, with short and fast opcodes for the most important C operations.



Four levels of interrupt priority make a fast interrupt response practical for critical applications. The maximum time to the first instruction of an interrupt routine is about 0.5 µs at a clock speed of 50 MHz.



Access to I/O devices is accomplished by using memory access instructions with an I/O prefix. Access to I/O devices is thus faster and easier compared to processors with a distinct and narrow I/O instruction set. As an option the auxiliary I/O bus can be enabled to use separate pins for address and data, allowing the I/O bus to have a greater physical extent with less EMI and less conflict with the requirements of the fast memory bus.



Hardware design is simple. Up to six static memory chips (such as RAM and flash memory) connect directly to the microprocessor with no glue logic. Also most I/O devices may be connected without glue logic.



The memory read cycle is two clocks long. The write cycle is 3 clocks long. A clean memory and I/O cycle completely avoid the possibility of bus fights.

Peripheral I/O devices can usually be interfaced in glue less fashion using the common IORD and IOWR strobes. •

EMI reduction features reduce EMI levels by as much as 25 dB compared to other similar microprocessors. Separate power pins for the on-chip I/O buffers prevent high-frequency noise generated in the processor core from propagating to the signal output pins. A built-in clock spectrum spreader reduces electromagnetic interference and facilitates passing EMI tests to prove compliance with government regulatory requirements. As a consequence, the designer of a RabbitEMBEDDED WEB SERVER 47

3000 based system can be assured of passing FCC or CE EMI tests as long as minimal design precautions are followed. •

The Rabbit may be cold-booted via a serial port or the parallel access slave port. This means that flash program memory may be soldered in unprogrammed, and can be reprogrammed at any time without any assumption of an existing program or BIOS.



There are 56 parallel I/O lines. Some I/O lines are timer synchronized, which permits precisely timed edges and pulses to be generated under combined hardware and software control.



Four pulse width modulated (PWM) outputs are implemented by special hardware. The repetition frequency and the duty cycle can be varied over a wide range. The resolution of the duty cycle is 1 part in 1024.



There are six serial ports. All six serial ports can operate asynchronously in a variety of commonly used operating modes. Four of the six ports (designated A, B, C, D) support clocked serial communications suitable for interfacing with “SPI” devices and various similar devices such as A/D converters and memories that use a clocked serial protocol. Two of the ports E and F, support HDLC / SDLC synchronous communication. High data rates are supported by all six serial ports.



A slave port allows the Rabbit to be used as an intelligent peripheral device slaved to a master processor.



The built-in battery back able time/date clock uses an external 32.768 kHz crystal oscillator. The suggested model circuit for the external oscillator. The time/date clock can be used to provide periodic interrupts every 488 µs.



Numerous timers and counters can be used to generate interrupts, baud rate clocks, and timing for pulse generation.



Two input-capture channels can be used to measure the width of pulses or to record the times at which a series of events take place. Each capture channel has a 16-bit counter and can take input from one or two pins selected from any of 16 pins. EMBEDDED WEB SERVER 48



Two quadrature decoder units accept input from incremental optical shaft encoders. These units can be used to track the motion of a rotating shaft or similar device.



A built-in clock doubler allows ½-frequency crystals to be used.



The built-in main clock oscillator uses an external crystal or a ceramic resonator. Typical crystal or resonator frequencies are in the range of 1.8Mhz to 30Mhz.The current is proportional to voltage and clock speed at 1.8 V and 3.84 MHz the current could be about 5 mA, and at 1 MHz the current is reduced to about 1 mA.. This greatly reduces the power used by flash memory when operating at low clock speeds.



There is a built-in watch dog timer.

.

The built- in battery- backable time / date clock uses an external 32.768 kHz crystal oscillator. The time / date clock can be used to provide interrupts every 488 µs.Typical battery current consumption is about 3µA.

BLOCKDIAGRAM OF RABBIT 3000 MICRO-PROCESSOR

EMBEDDED WEB SERVER 49

RABBIT 3000 ADVANTANAGES: •

The glue less architecture makes it is easy to design the hardware system.



There are a lot of serial ports and they can communicate very fast. EMBEDDED WEB SERVER 50



Precision pulse and edge generation is a standard feature.



EMI is at extremely low levels.



Interrupts can have multiple priorities.



Processor speed and power consumption are under program control.



The ultra low power mode can perform computations and execute logical tests since the processor continues to execute, albeit at 32 kHz or even as slow as 2 kHz.



The Rabbit may be used to create an intelligent peripheral or a slave processor.



The Rabbit can be cold-booted so unprogrammed flash memory can be soldered in place.



One can write serious software, be it 1,000 or 50,000 lines of C code. The tools are there and they are low in cost.



The battery-backable time/date clock is included.



The standard Rabbit chip is made to industrial temperature and voltage specifications.



The Rabbit 3000 is backed by extensive software development tools and libraries, especially in the area of networking and embedded Internet.



The standard rabbit chip is made to industrial temperature and voltage specifications.

FEATURES and SPECIFICATIONS: On-Chip Peripherals and Features: EMBEDDED WEB SERVER 51

The major on-chip peripherals are the serial ports, system clock, time/date oscillator, parallel I/O, slave port, motion encoders, pulse width modulators, pulse measurement, and timers. These and other features are described below.

5 V Tolerant Inputs: The Rabbit 3000 operates on a voltage in the range of 1.8 V to 3.6 V, but most Rabbit 3000 input pins are 5 V tolerant. The exceptions are the power supply pins, and oscillator buffer pins. The 5 V tolerant features allow 5 V devices that have a suitable switching threshold to be directly connected to the Rabbit.

Serial Ports: There are six serial ports designated ports A, B, C, D, E, and F. All six serial ports can operate in an asynchronous mode up to a baud rate equal to the system clock divided by 8. The asynchronous ports use 7-bit or 8-bit data formats, with or without parity. A 9th bit address scheme, where an additional bit is set or cleared to mark the first byte of a message, is also supported. Serial ports A, B, C and D can be operated in the clocked serial mode. In this mode, a clock line synchronously clocks the data in or out. Either the Rabbit serial port or the remote device can supply the clock. Serial Port A has special features. It can be used to cold-boot the system after reset. Serial Port A is the normal port that is used for software development under Dynamic C.

All the serial ports have a special timing mode that supports infrared data communications standards.

EMBEDDED WEB SERVER 52

System Clock: The main oscillator uses an external crystal with a frequency typically in the range from 1.8 MHz to 26 MHz. The processor clock is derived from the oscillator output by either doubling the frequency, using the frequency directly, or dividing the frequency by 2, 4, 6 or by 8. The processor clock can also be driven by the 32.768 kHz real-time clock oscillator for very low power operation, in which case the main oscillator can be shut down under software control.

32.768 kHz Oscillator Input: The 32.768 kHz oscillator input is designed to accept a 32.768 kHz clock. The 32.768 kHz clock is used to drive a battery-backable (there is a separate power pin) internal 48-bit counter that serves as a real-time clock (RTC). The counter can be set and read by software and is intended for keeping the date and time. There are enough bits to keep the date for more than 100 years.

Parallel I/O: There are 56 parallel input/output lines divided among seven 8-bit ports designated A through G. Most of the port lines have alternate functions, such as serial data or chip select strobes. Parallel Ports D, E, F, and G have the capability of timersynchronized outputs.

Slave Port: The slave port is designed to allow the Rabbit to be a slave to another processor, which could be another Rabbit. The port is shared with Parallel Port A and is a

EMBEDDED WEB SERVER 53

bidirectional data port. The slave port can be used to signal the master to perform tasks using a variety of communication protocols over the slave port.

Auxiliary I/O Bus: The Rabbit 3000 instruction set supports memory access and I/O access. Memory access takes place in a 1 megabyte memory space. I/O access takes place in a 64K I/O space. In a traditional microprocessor design the same address and data lines are used for both memory and I/O spaces. Sharing address and data lines in this manner often forces compromises or makes With the Rabbit 3000, the designer has the option of enabling completely separate buses for I/O and memory. Parallel Port A is used to provide 8 bidirectional data lines.

Input Capture Channels: The input capture channels are used to determine the time at which an event takes place. An event is signaled by a rising or falling edge (or optionally by either edge) on one of 16 input pins. A 16 bit counter is used to record the time at which the event takes place. The input capture channels can be used to measure the width of fast pulses. This is done by starting the counter on the first edge of the pulse and capturing the counter value on the second edge of the pulse.

Quadrature Encoder Inputs: A quadrature encoder is a common electromechanical device used to track the rotation of a shaft, or in some cases to track the motion of a linear follower. The output signals are square waves 90 degrees out of phase also called being in quadrature

with each other. By having quadrature signals, the direction of rotation can be detected by noting which signal leads the other signal. The Rabbit 3000 has 2 quadrature encoder EMBEDDED WEB SERVER 54

units. Each unit has 2 inputs, one being the normal input and the other the 90 degree or quadrature input.

Spread Spectrum Clock: The main system clock, which is generated by the crystal oscillator or input from an external oscillator, can be modified by a clock spectrum spreader internal to the Rabbit 3000 chip. When the spectrum spreader is engaged, the clock is alternately speeded up and slowed down, thus spreading the spectrum of the clock harmonics in the frequency domain. This reduces EMI and improves the results of official radiatedemissions tests typically by 15–20 dB at critical frequencies.

Timers: The Rabbit has several timer systems The periodic interrupt is driven by the 32.768 KHz oscillator divided 16, giving an interrupt every 488 micro-seconds if enabled. This is intended to be used as a general-purpose clock interrupt. Timer A consists of ten 8-bit countdown and reload registers. Each countdown register can be set to divide by any number between 1 and 256.The output of six of the timers is used to provide baud clocks for the serial ports. Timer B consists of a 10 bit counter that can be read but not written.

PIN DIAGRAM OF RABBIT 3000 PROCESSOR: EMBEDDED WEB SERVER 55

EMBEDDED WEB SERVER 56

PIN CONFIGURATIONS:

EMBEDDED WEB SERVER 57

EMBEDDED WEB SERVER 58

DETAILS ON RABBIT MICROPROCESSOR FEATURES: The Slave Port: The slave port allows a Rabbit to act as a slave to another processor, which can also be a Rabbit. The slave has to have only a processor chip, a RAM chip, and clock and reset signals that can be supplied by the master. The master can cold boot and download a program to the slave. The master does not have to be a Rabbit processor, but can be any type of processor. The slave processor’s slave port is connected to the master processor’s data bus.

Code Compilation to Memory: The compiler actually generates code for root code and constants and extended code and extended constants. It allocates space for data variables, but does not generate data bits to be stored in memory. In any but the smallest programs, most of the code is compiled to extended memory. This code executes in the 8K window from E000 to FFFF. This 8K window uses paged access.

Parallel Ports:

The Rabbit has seven 8-bit parallel ports designated A, B, C, D, E, F and G. The pins used for the parallel ports are also shared with numerous other functions.

EMBEDDED WEB SERVER 59

The important properties of the ports are summarized below:



Port A — Shared with the slave port data interface and auxiliary I/O data bus.



Port B — Shared with control lines for slave port, auxiliary I/O address bus, and clock I/O for clocked serial mode option for Serial Ports A and B.



Port C — Shared with serial port data I/O.



Port D — 4 bits shared with alternate I/O pins for Serial Ports A and B. 4 bits are not shared.



Port E — All bits of Port E can be configured as I/O strobes. 4 bits of port E can be used as external interrupt inputs. One bit of port E is shared with the slave port chip select.



Port F — Parallel Port F outputs can carry the four Pulse-Width Modulator outputs. As inputs, Parallel Port F inputs can carry the inputs to the two channels of the quadrature decoders. Port F pins can also be configured to be used as clock pins for clocked Serial Ports C and D.



Port G — Port G inputs and outputs are also used for access to other serial peripherals on the chip such as those used for asynchronous or synchronous communication.



Parallel Ports D–G behave in the same manner when used as digital I/O.

TIMERS: There are two timers

Timer A and Timer B. Timer A is intended mainly for

generating the clock for various peripherals, baud clock for the serial ports, a periodic clock for clocking Parallel Ports D and E, or for generating periodic interrupts. Timers

EMBEDDED WEB SERVER 60

A1–A7 are general-purpose timers, and Timers A8–A10 are dedicated to specific peripherals. Timer B can be used for the same functions, but it cannot generate the baud clock. Timer B is more flexible when it can be used because the program can read the time from a continuously running counter and events can be programmed to occur at a specified future time.

EMI CONTROL: Electromagnetic Interference (EMI) from unintentional radiation is of concern to the microprocessor system designer. One concern is passing the tests sometimes it requires that computing devices intended for use in the home or in office environments not have unintentional electromagnetic radiation above certain limits of field strength that depend on frequency and whether the device is intended for home or office use. This is verified by measuring radiation from the device at a test site.

The Rabbit 3000 has important features that aid in the control of EMI. •

The power supply for the processor core is on separate pins from the power supply for the I/O buffers associated with the processor and various peripheral devices.



A spectrum spreader in the clock circuit can be enabled to spread the spectrum of the clock by varying the clock frequency in a regular pattern.

EMBEDDED WEB SERVER 61

Watchdog Timer Support: A microprocessor system can crash for a variety of reasons. A software bug or an electrical upset are common reasons. When the system crashes the program will typically settle into an endless loop because parameters that govern looping behavior have been corrupted. Typically, the stack becomes corrupted and returns are made to random addresses. The usual corrective action taken in response to a crash is to reset the microprocessor and reboot the system. The crash can be detected either because an anomaly is detected by program consistency checking or because a part of the program that should be executing periodically is not executing and the watchdog times out.

Watchdog Timer: The watchdog timer is a 17-bit counter. In normal operation it is driven by the 32.768 kHz clock. When the watchdog timer reaches any of several values corresponding to a delay of from 0.25 to 2 seconds, it “times out.” When it times out, it emits a 1-clock pulse from the watchdog output pin and it resets the processor via an internal circuit. To prevent this timeout, the program must “hit” the watchdog timer before it times out. The watchdog timer may be disabled. The purpose of the watchdog is to unhang the processor from an endless loop caused by a software crash or a hardware upset.

EMBEDDED WEB SERVER 62

The Schematic Diagram below shows the Interfacing of Rabbbit3000 Processor with Ethernet Controller Chip.

EMBEDDED WEB SERVER 63

The Rabbit 8-bit Processor vs. Other Processors: The Rabbit 3000 processor has been designed with the objective of creating practical systems to solve real world problems in an economical fashion.



The Rabbit is a processor that can be used to build a system in which EMI is nearly absent, even at clock frequencies in excess of 40 MHz. This is due to the split power supply, the clock doubler, the clock spectrum spreader.



Execution speed with the Rabbit is usually a pleasant surprise compared to other processors. This is due to the well-chosen and compact instruction set partnered with and excellent compiler and library.



The Rabbit memory bus is an exceptionally efficient and very clean design. No external logic is required to support static memory chips. Battery-backed external memory is supported by built-in functionality.



The Rabbit 3000 operates at 3.6 V or less, but it has 5 V tolerant inputs and has a second complete bus for I/O operations that is separate from the memory bus. This second auxiliary bus can be enabled by the application as a designer option. These features make it easy to design systems that mix 3 V and 5 V components, and avoid the loading problems and the EMI problems that result if the memory bus is extended to connect with many I/O devices.



The Rabbit may be remotely programmed, including complete cold-boot, via a serial link, Ethernet, or even via a network or the Internet using built in capabilities. These capabilities are inexpensive to implement.

EMBEDDED WEB SERVER 64



The Rabbit is an 8-bit processor with an 8-bit external data bus and an 8-bit internal data bus. Because the Rabbit makes the most of its external 8-bit bus and because it has a compact instruction set, its performance is as good as many 16bit processors. Many Rabbit instructions are 1 byte long. In contrast, the minimum instruction length on most 32-bit RISC processors is 32 bits.

EMBEDDED WEB SERVER 65

ETHERNET CONTROLLER

GENERAL DESCRIPTION:

The RTL8019AS is a highly integrated Ethernet Controller which offers a simple solution to implement a Plug and Play NE2000 compatible adapter with full-duplex and power down features. With the three level power down control features, the RTL8019AS is made to be an ideal choice of the network device for a GREEN PC system. The full-duplex function enables simultaneously transmission and reception on the twisted-pair link to a full-duplex Ethernet switching hub. This feature not only increases the channel bandwidth from 10 to 20 Mbps but also avoids the performance degrading problem due to the channel contention characteristics of the Ethernet CSMA/CD protocol. The Microsoft's Plug and Play function can relieve the users from pains of taking care the adapter's resource configurations such as IRQ, I/O, and memory address, etc. However, for special applications not to be used as a Plug and Play compatible device, the RTL8019AS also supports the jumper and proprietary jumper less options. To offer a fully plug and play solution, the RTL8019AS provides the auto-detect capability between the integrated 10BaseT transceiver, BNC and AUI interface. Besides, the 10BaseT transceiver can automatically correct the polarity error on its receiving pair. Furthermore, 8 IRQ lines and 16 I/O base address options are provided for grand resource configuration flexibility. The RTL8019AS supports 16k, 32k & 64k byte BROM and flash memory interface. It also offers the page mode function which can support up to 4M-byte BROM within only 16k-byte system memory space. Besides, the BROM disable command is provided to release the BROM memory space for other system usage (e.g. EMM386, etc.) after the BROM program is loaded. The RTL8019AS EMBEDDED WEB SERVER 66

is built in with 16K-byte SRAM in a single chip. It is designed not

to provide more

friendly functions but also to save the effort of SRAM sourcing and inventory.

FEATURES: •

100-pin PQFP



RTL8019 software compatible



Supports PnP auto detect mode (RTL8019AS only)



Compliant to Ethernet II and IEEE802.3 10Base5, 10Base2, 10BaseT



Software compatible with NE2000 on both 8 and 16-bit slots



Supports both jumper and jumper less modes



Supports Microsoft‘s Plug and Play configuration for jumper less mode



Supports Full-Duplex Ethernet function to double channel bandwidth



Supports three level power down modes:



Sleep



Power down with internal clock running



Power down with internal clock halted



Built-in data prefetch function to improve performance



Supports UTP, AUI & BNC auto-detect (RTL8019AS only)



Supports auto polarity correction for 10BaseT



Support 8 IRQ lines



Supports 16 I/O base address options



_ and extra I/O address fully decode mode (RTL8019AS only)



Supports 16K, 32K, 64K and 16K-page mode access to BROM (up to 256 pages with 16K bytes/page)



Supports BROM disable command to release memory after remote boot EMBEDDED WEB SERVER 67



Supports flash memory read/write (RTL8019AS only)



16k byte SRAM built in (RTL8019AS only)



Use 9346 (64*16-bit EEPROM) to store resource configurations and ID parameters



Capable of programming blank 9346 on board for manufacturing convenience



Support 4 diagnostic LED pins with programmable outputs

PIN DIAGRAM OF RTL8019AS: The below figure shows the pinout for the RJ-45 Ethernet port (J3).

EMBEDDED WEB SERVER 68

PIN CONFIGURATIONS OF RTL 8019AS:

EMBEDDED WEB SERVER 69

DYNAMIC C SUPPORT FOR THE RABBIT:

Dynamic C is z-World’s interactive C language development system. Dynamic C runs on a PC under Windows 32-bit operating systems. Dynamic C provides a combined compiler, editor and debugger. The usual method for debugging a target system based on the Rabbit is to implement the 10-pin programming connector that connects to the PC serial port via a standard converter cable. Dynamic C libraries contain highly perfected software to control the Rabbit. These include drivers, utility and math routines and the debugging BIOS for Dynamic C.

EMBEDDED WEB SERVER 70

POWER SUPPLY DESCRIPTION: AC Supply (230V, 50Hz) is given to a rectifier circuit through the stepdown transformer (230V/18V, 50Hz).The rectifier used is bridge rectifier. The bridge rectifier converts AC signal to pulsating DC.The output of rectifier is given to filter circuit, which removes ripples. Here the capacitance filter is used which open for DC and conducts for the AC voltage.AC supply is given to the rectifier circuit through the step down transformer. The output is free from ripples and is given to the regulator unit. This unit maintains the output voltage irrespective of the fluctuations in the input AC voltage. Here LM 7805 is used which gives regulated voltage. The output of bridge rectifier is 12V AC and it is stepped down to +5V DC by the LM 7805.The whole circuit powers up with this voltage.

AC VOLTAGE

ORDINARY POWER SUPPLY

VOLTAGE REGULATOR

BLOCK DIAGRAM OF R P S The supply given is the +5V DC. The incoming power is 230V AC.So there is need to convert it into +5V DC The input AC supply is stepped down from 230V to 12-0-12V.The rectifier consists of diodes D1, D2, D3 and D4 that makes the supply DC i.e. unidirectional waveform. The output from rectifier is a URDC, whose value is +12V peak to peak. The voltage regulator makes this URDC to RDC of +5V.The capacitor C1 and C2 is used to maintain constant voltage between two consecutive positive cycles EMBEDDED WEB SERVER 71

where as C3 and C4 is used to remove the fluctuations caused by regulator. Here we are selecting +12V as a peak value. Because of fluctuations, the peak voltage may decrease, and then regulator cannot step up to +5V.If we select peak value, a higher one, then the problem can be overcome. A regulated power supply, which maintains the output voltage constant irrespective of AC mains fluctuations or load variations, is known as regulated power supply. A regulated power supply consists of an ordinary power supply and voltageregulating device. The output of ordinary power supply is fed to the voltage regulator, which produces the final output. The output voltage remains constant whether the load current changes or there are fluctuations in the input AC voltage. The rectifier converts the transformer secondary AC voltage into pulsating voltage.The pulsating DC voltage is applied to the capacitor filter. This filter reduces the pulsations in the rectifier DC output voltage.Finally; it reduces the variations in the filtered output voltage.

Need of RPS: In an ordinary power supply, the voltage regulation is poor i.e. DC output voltage changes with load current. Output voltage also changes due to variations in the input AC voltage. This is due to the following reasons: 1.

There are considerable variations in AC line voltage caused by outside factors beyond our control. This change the DC output voltage. Most of the electronic circuits will refuse to work satisfactorily on such output voltage fluctuations. These necessities to use regulated DC power supply.

2.

The

internal

resistance

of

ordinary

power

supply

in

relatively

large.Therefore,output voltage is markedly affected by the amount of load current drawn from the supply .

These variations in DC voltage may cause erratic

operation of electronic circuits. Therefore, regulated DC power supply is the only solution in such situations

EMBEDDED WEB SERVER 72

CIRCUIT DIAGRAM: INPUT

OUTPUT +VCC

_

LM 7805

_

D1D1 D3 +

+ C1

_ D2 +

C2

C3

C4

_ D4

+

2 GROUND

1

3

o utp ut +5

230vAC

EMBEDDED WEB SERVER 73

C1=1000 µf . C2=100

µf

C3=10

µf

C4=1

µf

WAVE FORMS:

EMBEDDED WEB SERVER 74

DYNAMIC-C Description: Dynamic C is an integrated development system for writing embedded software. It is designed for use with Z-World controllers and other controllers based on the Rabbit microprocessor. The Rabbit family of processors are high-performance 8-bit microprocessors that can handle C language applications of approximately 50,000 C+ statements or 1 MB.

The Nature of Dynamic C: Dynamic C integrates the following development functions into one program. EMBEDDED WEB SERVER 75

• Editing • Compiling • Linking • Loading • Debugging In fact, compiling, linking and loading are one function. Dynamic C has an easy-to-use, built-in, full-featured, text editor. Dynamic C programs can be executed and debugged interactively at the source-code or machine-code level. Pull-down menus and keyboard shortcuts for most commands make Dynamic C easy to use. Dynamic C also supports assembly language programming. It is not necessary to leave C or the development system to write assembly language code. C and assembly language may be mixed together. Debugging under Dynamic C includes the ability to use printf commands, watch

expressions and breakpoints. Watch expressions can be used to compute C expressions involving the target’s program variables or functions. Watch expressions can be evaluated while stopped at a breakpoint. Dynamic C 9 introduces advanced debugging features such as execution and stack tracing. Execution tracing can be used to follow the execution of debuggable statements, including such information as function/file name, source code line and column numbers, action performed, time stamp of action performed and register contents. Stack tracing shows function call sequences and parameter values. Dynamic C provides extensions to the C language (such as shared and protected variables, co EMBEDDED WEB SERVER 76

statements and co functions) that support real-world embedded system development. Dynamic C supports cooperative and preemptive multitasking. Dynamic C comes with many function libraries, all in source code. These libraries support realtime programming, machine level I/O, and provide standard string and math functions. The Dynamic C file system, known as the Flash filesystem or mk II or simply as FS2, was designed to be used with a second flash memory or in SRAM. It allows: • The ability to overwrite parts of a file. • The simultaneous use of multiple device types. • The ability to partition devices. • Efficient support for byte-writable devices. • Better performance tuning. • A high degree of backwards compatibility with its predecessor.

Speed: Dynamic C compiles directly to memory. Functions and libraries are compiled and linked and downloaded on-the-fly. On a fast PC, Dynamic C might load 30,000 bytes of code in 5 seconds at a baud rate of 115,200 bps.

Dynamic C Enhancements and Differences:

EMBEDDED WEB SERVER 77

Dynamic C differs from a traditional C programming system running on a PC or under UNIX. The reason? To be better help customers write the most reliable embedded control software possible. It is not possible to use standard C in an embedded environment without making adaptations. Standard C makes many assumptions that do not apply to embedded systems. Many enhancements have been added to Dynamic C. Some of these are listed below: • Function chaining, a concept unique to Dynamic C, allows special segments of code to be embedded within one or more functions. When a named function chain executes, all the segments belonging to that chain execute. Function chains allow software to perform initialization, data recovery, or other kinds of tasks on request. • Co statements allow concurrent parallel processes to be simulated in a single program. • Co functions allow cooperative processes to be simulated in a single program. • Slice statements allow preemptive processes in a single program. • Dynamic C supports embedded assembly code and stand-alone assembly code. • Dynamic C has shared and protected keywords that help protect data shared between different Contexts or stored in battery-backed memory.

• Dynamic C has a set of features that allow the programmer to make fullest use of extended memory. Dynamic C supports the 1 MB address space of the microprocessor. The address space is segmented by a memory management unit (MMU). Normally, Dynamic C takes care of memory management, but there are instances where the programmer will want to take control of it. Dynamic C has keywords and directives to help put code and data in the proper place.

EMBEDDED WEB SERVER 78

The keyword root selects root memory. The keyword xmem selects extended memory, which means anywhere in the 1024 KB or 1 MB code space. root  and xmem  are semantically meaningful in function prototypes and more efficient code is generated when they are used. Their use must match between the prototype and the function definition.

Graphical User Interface: Dynamic C can be used to edit source files, compile and run programs, and choose options for these activities using pull-down menus or keyboard shortcuts. There are two modes: edit mode and run mode. To debug a program, a controller must be connected to the PC, either directly via a programming cable or indirectly via an Ethernet connection and a Rabbit Link board. Multiple instances of Dynamic C can run simultaneously.

FLOW CHART: START

INITIALIZE THE PORT PARAMETERS

EMBEDDED WEB SERVER INITIALIZE TCP/IP 79 PARAMETERS

CONFIGURE RABBIT IP ADDRESS LOAD HTML PAGES FROM FLASH RESOLVE IP ADDRESS AND LOAD TO ETHERNET DEVICE A

IF ANY REQUEST?

NO

YES

CHECK VALIDITY?

NO

YES GET HTML PAGES AND FORM INTO PACKETS

SERVE FIRST LINK PAGE EMBEDDED WEB SERVER 80

ANY LINK REQUESTE D

NO

YES YES SERVE REMAINING LINK PAGES

IS DISCONNE C--TED

NO

YES DISCONNECT THE LINK SERVING

YES A

ALGORITHM

Step-1 Initializing the port parameters like baurd rate=96 MHz, enable serial Communication. Step-2 Initializing the TCP/IP parameters like IP address, subnet mask, default gateway EMBEDDED WEB SERVER 81

and DNS server. Step-3 Particular PC IP address is loaded into Rabbit processor. Step-4 Load HTML pages from the flash memory. Step-5 Convert the IP address into 64-bit string and load it into the Ethernet device. Step-6 If any request from the client arrives go to step-7, otherwise repeat step-6. Step-7 Check for validity of IP address? If yes, go to step-8, otherwise repeat step-6. Step-8 Get the HTML Pages from the computer main server and form data into packets. Step-9 Then serves the first link page to the requested PC. Step-10 Check for further link request? If yes to go step-11, otherwise repeat step10. Step-11 Serve the remaining link pages requested from the corresponding PC. Step-12 Check whether the link is disconnected or not; If yes, goto step-13.otherwise repeat step-12. Step-13 Disconnect the serving link and goto step-6.

APPLICATION CODE USING DYNAMIC C SOFTWARE browseled.c Z-World, 2003 This program is used with RCM3700 series controllers EMBEDDED WEB SERVER 82

with prototyping boards. Description =========== This program demonstrates a basic controller running a WEB page. Two "device LED's" are created with two buttons to toggle

them. Users can browse to the device

and change thestatus of the lights. The LED's on the prototyping

board will match the ones on the web page.

This program is adapted from \Samples\TCPIP\ssi.c. Instructions ============ 1. Make changes below in the configuration section to match your application. 2. Compile and run this program. 3. With your WEB browser access the WEB page running on the controller. 4. View LEDS on Web page and the prototyping board to see that they match-up when changing them via the WEB pagecontrol button.

**********************************************************/ #class auto #define DS1 0x40

//led, port F bit 6 bitmask

#define DS2 0x80

//led, port F bit 7 bitmask

/*********************************** 83

EMBEDDED WEB SERVER

* Configuration Section * ---------------------

* *

* All fields in this section must * * be altered to match your local * * network settings.

*

***********************************/ /* * Pick the predefined TCP/IP configuration for this sample. See * LIB\TCPIP\TCP_CONFIG.LIB for instructions on how to set the * configuration. */ #define TCPCONFIG 1 /* * TCP/IP modification - reduce TCP socket buffer * size, to allow more connections. This can be increased, * with increased performance, if the number of sockets * are reduced. Note that this buffer size is split in * two for TCP sockets--1024 bytes for send and 1024 bytes * for receive. */

#define TCP_BUF_SIZE 2048 /* * Web server configuration */ /*

EMBEDDED WEB SERVER 84

* Define the number of HTTP servers and socket buffers. * With tcp_reserveport(), fewer HTTP servers are needed. */ #define HTTP_MAXSERVERS 2 #define MAX_TCP_SOCKET_BUFFERS 2 /* * Our web server as seen from the clients. * This should be the address that the clients (netscape/IE) * use to access your server. Usually, this is your IP address. * If you are behind a firewall, though, it might be a port on * the proxy, that will be forwarded to the Rabbit board. The * commented out line is an example of such a situation. */ #define REDIRECTHOST

_PRIMARY_STATIC_IP

// #define REDIRECTHOST "my.host.com:8080" /******************************** * End of configuration section * ********************************/ /*

* REDIRECTTO is used by each ledxtoggle cgi's to tell the * browser which page to hit next. The default REDIRECTTO * assumes that you are serving a page that does not have * any address translation applied to it. */ #define REDIRECTTO

"http://" REDIRECTHOST "/index.shtml" EMBEDDED WEB SERVER 85

#memmap xmem #use "dcrtcp.lib" #use "http.lib" /* * Notice that we have ximported in the source code for * this program. This allows us to * in the pages/showsrc.shtml. * */ #ximport "samples/rcm3700/tcpip/pages/browseled.shtml" index_html #ximport "samples/rcm3700/tcpip/pages/rabbit1.gif"

rabbit1_gif

#ximport "samples/rcm3700/tcpip/pages/ledon.gif"

ledon_gif

#ximport "samples/rcm3700/tcpip/pages/ledoff.gif"

ledoff_gif

#ximport "samples/rcm3700/tcpip/pages/button.gif"

button_gif

#ximport "samples/rcm3700/tcpip/pages/showsrc.shtml"

showsrc_shtml

#ximport "samples/rcm3700/tcpip/browseled.c"

browseled_c

/* * In this case the .html is not the first type in the * type table. This causes the default (no extension) * to assume the shtml_handler. * */ /* the default for / must be first */

EMBEDDED WEB SERVER 86

SSPEC_MIMETABLE_START SSPEC_MIME_FUNC(".shtml", "text/html", shtml_handler), SSPEC_MIME(".html", "text/html"), SSPEC_MIME(".gif", "image/gif"), SSPEC_MIME(".cgi", "") SSPEC_MIMETABLE_END /* * Each ledx contains a text string that is either * "ledon.gif" or "ledoff.gif" This string is toggled * each time the ledxtoggle.cgi is requested from the * browser. * */ char led1[15]; char led2[15]; /* * Instead of sending other text back from the cgi's * we have decided to redirect them to the original page.

* the cgi_redirectto forms a header which will redirect * the browser back to the main page. * */ int led1toggle(HttpState* state) {

EMBEDDED WEB SERVER 87

if (strcmp(led1,"ledon.gif")==0) strcpy(led1,"ledoff.gif"); else strcpy(led1,"ledon.gif"); cgi_redirectto(state,REDIRECTTO); return 0; } int led2toggle(HttpState* state) { if (strcmp(led2,"ledon.gif")==0) strcpy(led2,"ledoff.gif"); else strcpy(led2,"ledon.gif"); cgi_redirectto(state,REDIRECTTO); return 0; } SSPEC_RESOURCETABLE_START SSPEC_RESOURCE_XMEMFILE("/", index_html), SSPEC_RESOURCE_XMEMFILE("/index.shtml", index_html),

SSPEC_RESOURCE_XMEMFILE("/showsrc.shtml", showsrc_shtml), SSPEC_RESOURCE_XMEMFILE("/rabbit1.gif", rabbit1_gif), SSPEC_RESOURCE_XMEMFILE("/ledon.gif", ledon_gif), SSPEC_RESOURCE_XMEMFILE("/ledoff.gif", ledoff_gif), SSPEC_RESOURCE_XMEMFILE("/button.gif", button_gif), SSPEC_RESOURCE_XMEMFILE("browseled.c", browseled_c), SSPEC_RESOURCE_ROOTVAR("led1", led1, PTR16, "%s"), EMBEDDED WEB SERVER 88

SSPEC_RESOURCE_ROOTVAR("led2", led2, PTR16, "%s"), SSPEC_RESOURCE_FUNCTION("/led1tog.cgi", led1toggle), SSPEC_RESOURCE_FUNCTION("/led2tog.cgi", led2toggle), SSPEC_RESOURCETABLE_END void update_outputs() { auto int value; value=PFDRShadow&0x3F; //on state for leds /* update O0 */ if (strcmp(led1,"ledon.gif")) value|=DS1; /* update O1 */ if (strcmp(led2,"ledon.gif")) value|=DS2; WrPortI(PFDR, &PFDRShadow, value); }

main() { brdInit();

//initialize board for this demo

strcpy(led1,"ledon.gif"); strcpy(led2,"ledoff.gif");

EMBEDDED WEB SERVER 89

sock_init(); http_init(); tcp_reserveport(80); while (1) { update_outputs(); http_handler(); } } #nodebug

HTML Description INTRODUCTION: HyperText Markup Language (HTML) is a markup language designed for the creation of web pages with hypertext and other information to be EMBEDDED WEB SERVER 90

displayed in a web browser. HTML is used to structure information denoting certain text as headings, paragraphs, lists and so on and can be used to describe, to some degree, the appearance and semantics of a document. The most common extension for files containing HTML is .html, however, older operating systems, such as DOS, limit file extensions to three letters, so a .htm

extension is also used. Although perhaps less common now, the shorter form is still

widely supported by current software.

Markup element types: Below are the kinds of markup element types in HTML. •

Structural markup. Describes the purpose of text. For example,

Golf



directs the browser to render "Golf" as a second-level heading, similar to "Markup element types" at the start of this section. Structural markup does not denote any specific rendering, but most web browsers have standardised on how elements should be formatted. For example, by default, headings like these will appear in large, bold text. Further styling should be done with Cascading Style Sheets (CSS).

EMBEDDED WEB SERVER 91



Presentational markup. Describes the appearance of the text, regardless of its function. For example, boldface

will render "boldface" in bold text. In the majority of cases, using presentational markup is inappropriate, and presentation should be controlled by using CSS. In the case of both bold

and italic there are elements which usually have an equivalent

visual rendering but are more semantic in nature, namely <strong>strong emphasis

and <em>emphasis respectively .Hypertext markup Links

parts of the document to other documents.

The Document Type Definition: In order to specify which version of the HTML standard they conform to, all HTML documents should start with a Document Type Declaration (informally, a "DOCTYPE"), which makes reference to a Document Type Definition (DTD). For example:

Publishing HTML with HTTP: The World Wide Web is primarily composed of HTML documents transmitted from a web server to a web browser using the HyperText Transfer Protocol (HTTP). However, HTTP can be used to serve images, sound and other content in addition to HTML. To allow the web browser to know how to handle the document it received, an indication of the file format of the document must be transmitted along with the document. EMBEDDED WEB SERVER 92

HYPERTEXT TRANSFER PROTOCOL

HyperText Transfer Protocol (HTTP) is the method used to transfer or convey information on the World Wide Web. The original purpose was to provide a way to publish and receive HTML pages. Development of HTTP was coordinated by the World Wide Web Consortium and working groups of the Internet Engineering Task Force. HTTP is a request/response protocol between clients and servers. The originating client, such as a web browser, spider, or other end-user tool, is referred to as the user agent. The destination server, which stores or creates resources such as HTML files and images, is called the origin server. In between the user agent and origin server may be several intermediaries, such as proxies, gateways, and tunnels. A HTTP client initiates a request by establishing a Transmission Control Protocol (TCP) connection to a particular port on a remote host (port 80 by default; see List of well-known ports (computing)). A HTTP server listening on that port waits for the client to send a Request Message. Upon receiving the request, the server sends back a status line, such as "HTTP/1.1 200 OK", and a message of its own, the body of which is perhaps the requested file, an error message, or some other information. Resources to be accessed by HTTP are identified using Uniform Resource Identifiers (URIs) (or, more specifically, URLs) using the http: or https: URI schemes.

Request Message: The request message consists of the following: •

Request line, such as GET /images/logo.gif HTTP/1.1, which requests the file logo.gif



from the /images directory .

Headers, such as Accept-Language: en. EMBEDDED WEB SERVER 93



An empty line .



An optional message body. The request line and headers must all end with CRLF (i.e. a carriage return

followed by a line feed). The empty line must consist of only CRLF and no other whitespace.Some headers are optional, while others (such as Host) are required by the HTTP/1.1 protocol.

Request methods: HTTP defines eight methods indicating the desired action to be performed on the identified resource. •

GET – Requests a representation of the specified resource. By far the most common method used on the Web today.



HEAD – Asks for the response identical to the one that would correspond to a GET request, but without the response body.



POST – Submits user data (e.g. from a HTML form) to the identified resource. The data is included in the body of the request.



PUT – Uploads a representation of the specified resource.



DELETE – Deletes the specified resource (rarely implemented).



TRACE – Echoes back the received request, so that a client can see what intermediate servers are adding or changing in the request.



OPTIONS – Returns the HTTP methods that the server supports. This can be used to check the functionality of a web server.



CONNECT – For use with a proxy that can change to being an SSL tunnel.

EMBEDDED WEB SERVER 94

HTTP versions: HTTP differs from other TCP-based protocols such as FTP, because HTTP has different protocol versions: •

0.9 Deprecated. Was never widely used. Only supports one command, GET. Does not support headers. Since this version does not support POST the client can't pass much information to the server.



HTTP/1.0 Still in wide use, especially by proxy servers. Allows persistent connections (alias keep-alive connections, more than one request-response per TCP/IP connection) when explicitly negotiated; however, this only works well when not using proxy servers.



HTTP/1.1 Current version, persistent connections enabled by default and works well with proxies. Also supports request pipelining, allowing multiple requests to be sent at the same time, allowing the server to prepare for the workload and potentially transfer the requested resources more quickly to the client.

In HTTP/0.9 and HTTP/1.0, a client sends a request to the server, the server sends a response back to the client. After this, the connection is closed. HTTP/1.1, however, supports persistent connections. This enables the client to send a request and get a response, and then send additional requests and get additional responses. The TCP connection is not released for the multiple additional requests, so the relative overhead due to TCP is much less per request. The use of persistent connection is often called keep alive. It is also possible to send more than one (usually between two and five) request before getting responses from previous requests. This is called pipelining.

EMBEDDED WEB SERVER 95

APPLICATIONS

Perfectly suited for applications like: •

Bar Code Readers



Printers Point of Purchase Terminals



Attendance Recording



Access Control Systems Card Verification and Kiosks Medical.



Equipments Factory Floor Automation Scanning Devices



Security Systems etc.

ADVANTAGES



Easy C language program development and debugging.



Integrated Ethernet port for network connectivity.



Ideal for network enabling security ,and access system ,home automation and industrial control

EMBEDDED WEB SERVER 96

CONCLUTION:

Embedded Web Server is developed to serve the static pages, to eliminate the heavy traffic on main servrers.Usually the homepage of a site is maintained in the ews. Ews can also serve the dynamic pages. Here rabbit 3000 module is used to develop this project. It consists of rabbit 3000 and TCP/IP controller. Embedded Web Server is designed by using light weight components. It is a simple design and efficient, protable, high performance. In our project we are able to design a server with the help of embedded concepts. Next, by providing the IP address to that module, we are able to access the web pages from any computer in the LAN. In this project static web pages will be hosted by an Rabbit processor based embedded module, this module will be having a ethernet interface through which it can be connected to internet.

EMBEDDED WEB SERVER 97

] FUTURE ENHANCEMENTS •

Embedded devices



Mobile browsers

Today/Tomorrow

EMBEDDED WEB SERVER 98

BIBILOGRAPHY

BOOKS 1. TCP / IP PROTOCOL SUITE By BEHROUZ A FOROUZAN 2. COMPUTER NETWORKS By A.S. TANENBAUM 3. EMBEDDED SYSTEMS DESIGN USING THE RABBIT 3000 PROCESSOR By KAMAL HYDER, BOB PERRIN

WEB SITES 1. WWW.RABBITSEMICONDUCTOR.COM 2. WWW.WIKEPEDIA.COM 3. WWW.ZWORLD.COM

EMBEDDED WEB SERVER 99

RCM 3700 MODULE

EMBEDDED WEB SERVER 100

Today/Tomorrow

EMBEDDED WEB SERVER 101

EMBEDDED WEB SERVER 102

EMBEDDED WEB SERVER 103

EMBEDDED WEB SERVER 104

EMBEDDED WEB SERVER 105

EMBEDDED WEB SERVER 106

EMBEDDED WEB SERVER 107

EMBEDDED WEB SERVER 108

EMBEDDED WEB SERVER 109

EMBEDDED WEB SERVER 110

EMBEDDED WEB SERVER 111

EMBEDDED WEB SERVER 112

EMBEDDED WEB SERVER 113

EMBEDDED WEB SERVER 114

EMBEDDED WEB SERVER 115

EMBEDDED WEB SERVER 116

EMBEDDED WEB SERVER 117

EMBEDDED WEB SERVER 118

EMBEDDED WEB SERVER 119

EMBEDDED WEB SERVER 120

EMBEDDED WEB SERVER 121

EMBEDDED WEB SERVER 122

EMBEDDED WEB SERVER 123

EMBEDDED WEB SERVER 124

EMBEDDED WEB SERVER 125

EMBEDDED WEB SERVER 126

EMBEDDED WEB SERVER 127

EMBEDDED WEB SERVER 128

EMBEDDED WEB SERVER 129

EMBEDDED WEB SERVER 130

EMBEDDED WEB SERVER 131

EMBEDDED WEB SERVER 132

EMBEDDED WEB SERVER 133

EMBEDDED WEB SERVER 134

EMBEDDED WEB SERVER 135

EMBEDDED WEB SERVER 136

EMBEDDED WEB SERVER 137

EMBEDDED WEB SERVER 138

EMBEDDED WEB SERVER 139

EMBEDDED WEB SERVER 140

EMBEDDED WEB SERVER 141

EMBEDDED WEB SERVER 142

EMBEDDED WEB SERVER 143

EMBEDDED WEB SERVER 144

EMBEDDED WEB SERVER 145

EMBEDDED WEB SERVER 146

EMBEDDED WEB SERVER 147

EMBEDDED WEB SERVER 148

EMBEDDED WEB SERVER 149

EMBEDDED WEB SERVER 150

EMBEDDED WEB SERVER 151

EMBEDDED WEB SERVER 152

EMBEDDED WEB SERVER 153

EMBEDDED WEB SERVER 154

EMBEDDED WEB SERVER 155

EMBEDDED WEB SERVER 156

EMBEDDED WEB SERVER 157

EMBEDDED WEB SERVER 158

EMBEDDED WEB SERVER 159

EMBEDDED WEB SERVER 160

EMBEDDED WEB SERVER 161

EMBEDDED WEB SERVER 162

EMBEDDED WEB SERVER 163

EMBEDDED WEB SERVER 164

EMBEDDED WEB SERVER 165

EMBEDDED WEB SERVER 166

EMBEDDED WEB SERVER 167

EMBEDDED WEB SERVER 168

EMBEDDED WEB SERVER 169

EMBEDDED WEB SERVER 170

EMBEDDED WEB SERVER 171

EMBEDDED WEB SERVER 172

EMBEDDED WEB SERVER 173

EMBEDDED WEB SERVER 174

EMBEDDED WEB SERVER 175

EMBEDDED WEB SERVER 176

EMBEDDED WEB SERVER 177

EMBEDDED WEB SERVER 178

EMBEDDED WEB SERVER 179

Related Documents

Webserver1
October 2019 4
Embedded
August 2019 127
Embedded
November 2019 104
Embedded
June 2020 118
Embedded 23
December 2019 38
Embedded 24
December 2019 40