基于SX单片机实现WebServer和网络协议栈

发布者:Serendipity66最新更新时间:2012-02-25 来源: 单片机与嵌入式系统应用 关键字:网络单片机  协议栈  虚拟外设  信息家电  WebServer 手机看文章 扫描二维码
随时随地手机看文章

前 言

  Internet的日益普及,信息共享程度的不断提高,给工作和生活带来了极大的方便。现在,上网浏览对于人们来说是一件很平常的事情。不仅如此,架构一个WebServer,做自己的主页也是司空见惯的。一般情况下,人们通过一台上网的电脑来建立WebServer。在这里将讨论另外一种方法:通过单片机来建立WebServer。之所以会想到用单片机来实现 WebServer,是因为随着嵌入式系统的迅猛发展和IA(信息电器)的出现,以单片机为中心的应用系统将搭上Internet的快车逐步取代传统的以 PC为中心的应用,成为未来Internet发展中的主力军。

一、 具体应用方案

1. 基于单片机的WebServer方案

  基于单片机的WebServer的硬件平台如图1所示。

2. 主要芯片介绍

  (1) SX52BD100

   SX52BD100 是UBICOM公司生产的一款RISC指令集的单片机,片上带有4K×16 位的Flash存储器和262×8位的RAM。由于采用CPU并行流水线方式及单时钟周期指令,在100MHz晶振驱动下指令执行速度可达 100MIPS。该单片机的最大特点就是虚拟外设功能,即通过软件对I/O口进行灵活的配置,CPU执行虚拟软件模块就可以驱动普通的I/O口来模拟外设的功能,比如UART、SPI、IIC和FSK等。当然,令人惊奇的是,SX52BD100可以通过虚拟外设功能来运行网络协议栈,例如TCP、IP、 HTTP以及SMTP等。

  (2)RTL8019AS

  RTL8019AS是RealTek公司出品的一种全双工以太网控制器。它自带16KB的SRAM,工作在Ethernet II和IEEE802.3、 10Base5、10Base2、10BaseT下,与NE2000兼容。

  (3)24LC256

  24LC256是Microchip公司生产的一种串行32KB的 E2PROM存储器,采用CMOS工艺,通过2根数据线和外界通信,兼容I2C总线接口,可设为硬件写保护,10万次的擦写,200年以上的数据保护。[page]

3.工作流程和软件设计

  RJ45为此系统与局域网的接口。由于大部分局域网都采用以太网,这里的RTL8019AS就是处理以太网协议(IEEE802.3)的。数据的流向为:请求信息从局域网中来,通过RJ45送到RTL8019AS,处理后的数据包送入SX52BD100协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过SX52BD100的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。

  整个系统的软件流程如图2所示。

  图1中的E2PROM 24LC256用来存储WebServer的网页信息。它可以处理Web页面、图像文件、PDF文档记忆其它文件。当然,它不能像PC上WebServer中的硬盘那样可以存储大量的页面。它的容量决定了WebServer的资源文件的大小。


二、网络协议栈的实现

  网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图3所示。每一层负责不同的功能。

  (1)数据链路层,有时也称为网络接口层。通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

  (2)网络层,有时也称作互联网层。处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议)、ICMP 协议(Internet互联网控制报文协议)以及IGMP 协议(Internet组管理协议)。这里主要讨论IP协议。

  (3)传输层主要为两台主机上的应用程序提供端到端的通信。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

  (4)应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些应用:

  ① HTTP超文本传输控制协议;

  ② TELNET远程登录;

  ③ FTP文件传输协议;

  ④ SMTP简单邮件传送协议;

  ⑤ SNMP简单网络管理协议。

  这里主要讨论HTTP协议。

  因为数据链路层主要是网络接口卡及驱动,由RTL8019AS来实现,所以下面讨论网络层、传输层和应用层协议栈的实现。

1. 网络层

  (1) IP协议

  IP是TCP/IP 协议族中最为核心的协议。Internet所有的数据都以IP 数据报格式传输。IP协议最大的特点是提供不可靠的和无连接的数据包传送服务。

  不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。若发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP(Internet控制报文协议)消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。[page]

  无连接(connectionless)的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此, B可能在A到达之前先到达。

  IP数据包的格式如图4所示。


 

  版本是指IP协议的版本号。目前的协议版本号是4, 因此IP也称作IPV4。

  首部长度指的是首部占32bit字的数目。由于它是一个4位字段,因此首部最长为60个字节。在这里,IP数据报字段的值是5。

  服务类型字段包括一个3位的优先权子字段(现在已被忽略)、4位的TOS子字段和1位未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit 。如果所有4bit 均为0,那么就意味着是一般服务。

  总长度字段是指整个I P 数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道I P 数据报中数据内容的起始位置和长度。

  标识字段唯一地标识主机发送的每一份数据报。

  标志字段用来指定目的地址是一个完整的主机地址还是一个网络地址。

  生存时间字段设置了数据报可以经过的最多路由器数。

  首部检验和字段是根据IP首部计算的检验和码。

  源地址和目的地址都是32位的数据。

  可选项定义安全和处理限制、记录路径、时间戳、宽松的源站选路、严格的源站选路等信息。

  (2)SX协议栈对IP层的实现

  SX52BD100的协议栈中,IP层的实现就是把要发送出去的消息进行IP打包,即加上IP包头,使之符合IP数据包的格式发送到物理层;将接收到的来自物理层的数据包进行IP解包,即去掉包头,送到TCP层。应注意,协议栈不接收分片的IP包,因为它并不对接收到的数据进行重新打包。

2. 传输层

  (1)TCP 协议

  TCP提供一种面向连接的、可靠的字节流传送服务。TCP数据包的结构如图5所示。

  每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP包头中的源端IP地址和目的端IP地址,唯一确定一个TCP连接。

  序号用来标识从T C P 发端向T C P 收端发送的数据字节流。它表示在这个报文段中的第一个数据字节。

  确认序号包含发送确认的一端所期望收到的下一个序号。[page]

  首部长度给出首部中32bit字的数目。

  紧急指针是一个正的偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。其余字段的意义和IP包中的差不多。

  为了保证TCP层的数据能有效地传输,在建立TCP连接时,用到了三向握手机制。具体过程如下(假设在A、B间通信,A、B的初始化序号为X、Y):

  ① 由A向B发出SYN信号,告诉B,A的初始化序号为X。

  ② 由B向A发出ACK和SYN信号,告诉A,B知道A的初始化序号为X,B的是Y。

  ③ 由A向B发出ACK信号,告诉B,A知道B的初始化序号是Y。

  经过这样的初始化后,TCP连接的建立就完成了,A与B之间的数据传输也可靠了。

  (2) SX协议栈对TCP层的实现

  在SX52BD100的协议栈中,对TCP层的实现是通过提供的TCP API(应用程序接口)来实现。TCP的API主要包括下面的函数和变量:

TCPApp1Init():建立第一个TCP连接的初始化函数;
TCPApp2Init():建立第二个TCP连接的初始化函数;
TCPAppTxBytes():TCP连接中发送数据的字节数;
TCPAppRxBytes():TCP连接中接收数据的字节数;
TCPAppTxData():发送数据;
TCPAppRxData():接收数据;
TCPAppTxDone():发送完毕;
TCPAppRxDone():接收完毕;
TCPAppPassiveOpen():被动TCP连接;
TCPAppActiveOpen():主动TCP连接;
Sock1RomoteIP、Sock2RomoteIP:TCP连接的远程主机的IP地址;
MyIP:本机的IP地址;
tcb1LocalPortMSB、tcb1LocalPortLSB、tcb2LocalPortMSB、tcb2LocalPortLSB:本机的TCP连接端口;
tcb1RemotePortMSB、tcb1RemotePortLSB、tcb2RemotePortMSB、tcb2RemotePortLSB:远程主机的TCP连接端口;

  TCP协议栈支持同时建立两个TCP连接:一个为主动连接,由TCPApp1Init()来控制;另一个为被动连接,由TCPApp2Init()来控制。TCP是基于连接的协议,因为必须保持对TCP连接状态的监视和状态有关的信息保存在发送控制块中;而TCP连接状态的改变由TCP的软件状态机来实现。软件状态机又由事件或用户来触发。比如,当监视到一个带有SYN标志的TCP包到达时,状态机就将TCP连接转换到接收状态;用户也可以手工控制状态机处于发送状态来建立TCP连接。

  ① 用TCP API来建立TCP被动连接

_TCPApp2Init
_bank TCB2_BANK
mov tcb2LocalPortLSB, #HTTP_PORT_LSB ;  设置TCP的服务端口
mov tcb2LocalPortMSB, #HTTP_PORT_MSB
bank HTTP_BANK
clr httpParseState
clr httpURIHash
setb flags2.TCP_SOCK ;  显示TCP2的连接状态
jmp @TCPAppPassiveOpen ;  跳转到TCP被动连接子程序,进行端口侦听
retp
② 用TCP API建立TCP主动连接
_TCPApp1Init
test switch ;  条件触发
sz
retp ;  没有触发,退出
_bank HTTP_BANK
mov w, #HTTP_CONNECT ;  启动HTTP状态机
mov httpState, w
_bank TCB1_BANK
mov tcb1LocalPortLSB, #80 ;  设置本机TCP连接服务端口
mov tcb1LocalPortMSB, #80
mov tcb1RemotePortLSB, #HTTP_PORT_LSB ;  设置远程主机TCP连接服务端口
mov tcb1RemotePortMSB, #HTTP_PORT_MSB
_bank TCPSOCKET_BANK
mov sock1RemoteIP3,#SMTP_SERVER_IP3 ;  设置远程主机的IP地址
mov sock1RemoteIP2,#SMTP_SERVER_IP2
mov sock1RemoteIP1,#SMTP_SERVER_IP1
mov sock1RemoteIP0,#SMTP_SERVER_IP0
clrb flags2.TCP_SOCK ;  显示TCP主动连接的状态
jmp @TCPAppActiveOpen ;  在指定的端口建立TCP连接
retp

  ③ 用TCP API发送数据和接收数据

  一旦建立了TCP连接,那就只有两种情况:发送数据或接收数据。接收数据时,从IP层来的数据经过状态机去掉TCP包头后再送到应用层;发送数据时,软件状态机会在数据前面加上TCP包头再发送到IP层。

  接收数据时,需要用到的TCP API函数为TCPAppRxBytes()、TCPAppRxData()和TCPAppRxDone();发送数据时,有一点值得关注:为了防止接收缓冲区的溢出,相对于发送数据包,协议栈给予接收数据包以更高的优先级。也就是说,协议栈软件会一直处理接收的数据包,直到接收缓冲区中没有任何数据。

  发送数据时,需要用到的TCP API函数为TCPAppTxBytes()、TCPAppTxData()和TCPAppTxDone()。必须注意,只有在建立了TCP连接后,才可以发送数据。
 

3. 应用层

  HTTP是WWW上的协议。当用户要浏览服务器上的一个网页时,一个HTTP 请求就会从用户的浏览器发到HTTP服务器。服务器响应这个请求,把指定的网页传送回来,用户才看到了网页。

  下面是一个典型的客户端向服务器发送请求的例子:

GET Destination_IP/index.html http/1.0

  GET代表客户端的请求命令,而服务器也受理这个命令;
  Destination_IP代表远程主机的IP地址;index.html是客户端请求的资源;
  http/1.0是HTTP协议的版本。

  (1)SX协议栈对HTTP层的实现

  因为HTTP层的下面是TCP层,也就是说HTTP把TCP作为它的传输协议,所以那两个TCP连接也为WebServer所用。理所当然,TCP API的发送和接收函数也用来实行WebServer的请求和相应命令。

  所有的服务器资源都存放在外部的E2PROM中,HTTP使用统一资源定位器来指定返回给客户端的网络资源。统一资源定位器就像一个带有目录的文件路径一样,指定资源的路径和扩展名。SX协议栈并没有像普通的解决方案那样使用一般的文件系统来管理外部存储器中的资源,而是采用了一种称之为智能信息表来解决这个问题。当一个请求到来时,一个8位的无用信息对统一资源定位器进行运算(8位字符加运算),再将得到的数据乘以2,并把这个结果作为一个索引区中的一个值。如果在E2PROM中已经建立了查找表,凭着这个值在E2PROM中去查表,找到相应的资源并返回。用这种方法的好处是可以避免繁琐的字符串的比较和将统一资源定位器直接存放在服务器中。这种文件系统的结构如图6所示。
 

  (2)E2PROM的编程

  在WebServer启动以前,要先把资源文件下载到E2PROM中。在这个方案中采用RS232端口从电脑上传输资源文件。下载程序自动从电脑中载入磁盘的目录结构并在E2PROM中创建E2PROM文件系统。

参考文献

1 SX52BD100 Data Sheet. UBICOM Corporation,2000
2 SX52BD100 User Manual. UBICOM Corporation,2000
3 Ethernet SX-Stack Internet Connectivity. UBICOM Corporation,2000
4 Web Server & Send Email Client Implementation with Ethernet as the Physical Layer. UBICOM Corporation,2000

关键字:网络单片机  协议栈  虚拟外设  信息家电  WebServer 引用地址:基于SX单片机实现WebServer和网络协议栈

上一篇:单片机的MODEM通讯
下一篇:应用MSP430F149单片机的超低频波形发生器

推荐阅读最新更新时间:2024-03-16 12:54

使用 C2000™ 实时 MCU 实现功能安全和网络安全的电动汽车动力总成
从内燃机 (ICE) 过渡到电动汽车 (EV),需要至少新增五个电气/电子/可编程电子 (E/E/PE) 系统。图 1 描绘了电动汽车中的这些系统。 图 1:典型电动汽车动力总成方框图 为了实现零尾气排放并减少对化石燃料的持续依赖,电动汽车开始在充电站“补充能量”。这些电动汽车充电站可使用太阳能和风能等可再生能源转化成电能,从而增加电动汽车对环境的积极影响。车载充电器与高压电池形成一个功能单元,确保快速、高效充电,同时保护电池免于过度充电。国际标准化组织 (ISO) 6469 第 1、2 和 3 部分描述了上述及其他安全要求 – 该标准负责制定道路电动车辆高压电气系统的安全要求。 电动汽车中的所有电子控制单元 (EC
[汽车电子]
使用 C2000™ 实时 <font color='red'>MCU</font> 实现功能安全和<font color='red'>网络</font>安全的电动汽车动力总成
基于K线/CAN总线的KWP2000协议分析及协议栈的开发测试
1 前言 在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000(Keyword Protocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000最初是基于K线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN网络(Controller Area Network)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1M bps)和灵活可靠的通讯方式,在车载
[嵌入式]
【STM32H7】第4章 ThreadX USBX协议栈基础知识
4.1 初学者重要提示 1、 USB1.1和USB2.0规格书以及Cypress做的中文版USB文档,非常推荐大家学习: http://www. armbbs.cn/forum.php? mod=viewthread&tid=100698 2、 USB初学 -- 入门篇 (USB基础知识速览) http://www. armbbs.cn/forum.php? mod=viewthread&tid=100687 。 3、 文献参考: https:// en.wikipedia.org/wiki/U SB https:// zh.wikipedia.org/wiki/U SB https:// en.wik
[单片机]
【STM32H7】第4章 ThreadX USBX<font color='red'>协议栈</font>基础知识
利用Nport Express实现单片机的接入网络
1 引言 单片机传输数据有两种方式:串行和并行。并行传输只能应用于近距离的通信,而对于大部分单片机测控系统来说,分布范围广,距离中央处理机远,因此只能采用串行传输。串行传输需要经过电平转换,一般有两种方案:RS-232标准,RS-485标准。第一种标准的最大传输速率为20kb/s,最大传输距离为15m,而RS-485最大传输速率为10Mb/s,最大传输距离为1200m,超出这个范围,由于干扰信号的叠加和传输信号的衰减,误码率将大大增加 。那么如何实现远距离的测控和数据传输呢?利用Nport Express把单片机接入因特网,使数据通过网络传输,则可以很好地解决远程通信的问题。本文就如何利用Nport Express实现S2E
[工业控制]
利用Nport Express实现<font color='red'>单片机</font>的接入<font color='red'>网络</font>
单片机模拟信息家电设计方案
  1 引言   目前的信息家电还处在初级阶段,信息家电的标准还未确定,对其的研究也还未有突破性的进展。另外,随着以PC为中心拓展出来的各种家庭数字产品开始浮出水面,在未来的数字家庭中,PC作为家庭应用的控制中心的地位将越来越受到重视。   本文利用SX52单片机和外围扩展模块模拟信息家电,利用PC模拟家庭网关,从而成功搭建了一个模拟家庭网关和信息家电交互的平台。这种利用一个单片机集成系统对信息家电进行模拟为研究信息家电的内部体系结构以及家庭网关和信息家电功能分配提供了实验平台,同时大大节省了资源和费用。 创新点:本文描述了利用SX52为主芯片,通过扩展外围电路和软件模块模拟信息家电的通用方法,并以模拟电风扇做了具体实现
[单片机]
<font color='red'>单片机</font>模拟<font color='red'>信息家电</font>设计方案
嵌入式TCP/IP协议单片机技术在网络通信中的应用
摘要:介绍了嵌入式TCP/IP协议单片机在网络通信中的数据传输技术。将TCP/IP协议嵌入式单片机中,借助网卡芯片CS8900实现了单片机在局域网内和通过局域网在因特网上的数据传输。用户终端以单片机系统板为媒介,通过网络与远程数据终端实现数据通信。 关键词:TCP/IP协议 单片机 因特网 局域网 网卡芯片 在因特网上,TCP/IP协议每时每刻保证了数据的准确传输。在数据采集领域,如何利用TCP/IP协议在网络中进行数据传输成为一个炙手可热的话题。在本系统中,笔者利用TCP/IP协议中的UDP(用户数据报协议)、IP(网络报文协议)、ARP(地址解析协议)及简单的应用层协议成功地实现了单片机的网络互连,既提高了数据传输的速度,
[嵌入式]
达丽星网络公司面向3G手机市场提供支持MONA的视频电话协议栈
融合视频解决方案的领先提供商达丽星网络公司宣布,推出面向手机和芯片厂商、OEM厂商和ODM厂商的3G视频电话协议栈。该协议协支持最新的MONA标准(定向媒体的协议加速,即ITU-T H.324附录K)和WNSRP(窗式数据包重发协议,即ITU-T H.324附录A)技术。 ? MONA是一种视频会话建立时间加速技术,这项技术能把会话建立时间缩短到一秒左右,使视频呼叫时间等同于普通语音电话,因此显著改善了视频用户的使用体验。 达丽星网络公司在ITU-T和3GPP组织的MONA标准化方面发挥了重要作用。 达丽星视频电话协议栈完全支持全部三个MONA终端级别,提供最好的性能和灵活性。该视频协议栈还完全支持WNSRP。WNSRP能加快视
[新品]
基于ZigBee的无线病房呼叫系统便携端设计
1 引言 ZigBee 技术是一种近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术,主要适用于自动控制和远程控制领域,是为了满足小型廉价设备的无线联网和控制而制定的。ZigBee 是一种用于无线连接的全球标准,标准建立的重点是可靠性、低成本、长电池寿命和容易应用。不仅是简单的线缆互连的替代方案,而且能在不同ZigBee 设备之间"即连即用"的建立无线网络,方便的实现数据通信、交换,同时具有低功耗、较高数据传输速率、低成本等特点。利用Zighee 技术的低功耗无线传输和自组网功能,可以实现"隔离监护"、"动态监护".ZigBee 技术与局域网、互联网技术相结合,还可以实现"远程监护"、"家庭保健监护",是实现无线病房
[单片机]
基于ZigBee的无线病房呼叫系统便携端设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved