基于PPP协议单片机拔号上网的设计与实现
引言
20 世纪90年代,以因特网为代表的计算机网络通信技术的发展和应用取得了前所未有的突破和成功,单片机上网技术在生活和现代建设的各方面的应用和研究随之成为当今一个热门话题。8位、16位单睡机的因为其较好的性价比,在测控领域仍然占据着重要地址。这些单片机的RAM、ROM一般都很小,而网络协议通常嵌入在操作系统中,无法把庞大的操作系统直接安装在这样的单片机中。所以,要实现上述单片机通过拔号直接连上因特网,需要考虑的主要技术就是如何在单片机上嵌入能符号需要的经过简化的网络协议。这就是本文所要讨论的主题。
本文着重分析所用数据包的类型和选项,给出几个典型数据包的格式。
一、PPP协议简介
IETF 成立了一个小组,推出了点到点线路的数据链路层协议,并成为正式的因特网标准。这项工作定义的PPP(Point-to-Point Protocol),即点到点协议,并以RFC文件RFC1661,后来以RFC1662和RFC1663进一步明确下来。PPP处理错误检测,支持多种协议,在连接时钟允许商议IP地址,允许身份验证,以及在SLIP上所做的许多其他改进。虽然许多因特网服务提供者仍支持SLIP和PPP,但未来显然属于PPP,不管是拨号线路,还是租用路由器与路由器的线路都是如此。
PPP成就了3件事:
(1)明确地划分出一帧的尾部和下一帧的头部的成帧方式。这种帧格式也处理错误检测工作。
(2)当线路不再需要时,跳出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议。这个协议被称为链路控制协议LCP(Link Control Protocol)。
(3)用独立于所使用的网络层协议的方法来商议使用网络层的哪些选项;对于每个所支持的网络层来说,所选择的方法有不同的网络控制协议NCP(Network Control Protocol)。NCP在因特网中(TCP/IP协议)为IPCP。
PPP数据帧的格式如图1所示。
二、基于PPP协议单片机拨号上网的设计与实现
1.概述
本方案选用的单片机是ADAM5510。它是台湾ADVANTECH公司推出的一种功能较强、价位适中的单片机,具有80188-40、16-bit单片机,RS-232、RS-485口各一个,还有一个编程口(ADAVANTECH公司为5510系列单片机开发了同普通的Turbo C界面很相似的集成开发环境,这种IDE能灵活地编辑、编译、仿真、开始和调试适用于5510系列的软件)。ADAM5510的功能模块如图2所示。这种单片机在硬件构成上已比较完善,使我们可以集中精力于TCP/IP协议的分析和软件的实现。
在本方案中,物理层接口采用的是:单片机通过RS-232与Modeem通信,电话线与Modem相连。单片机直接从RS-232端口收发数据。
2.原理及程序流程
系统原理如图3所示,测试程序如图4所示。
3.简化PPP协议——配置各种数据包
(1)LCP包的配置
LCP包的配置如图5所示。
a.LCP包概述
LCP包有3类:a链路配置包,用于建立和配置链路,包括Configure Ack、Configure Nak、Configure Request、Configure Reject;b链路结束包,用于结束一个链路,包括Terminate Request、Terminate Ack;c链路维修包,用于管理和调试一个链路,包括Code Reject、Protocol Reject、Echo Request、Echo Reply、Discard Request。LCP包的选项最常见的有:1 Maximum Receive Unit、2 Async Control Character Map、3 Authectication Protocol、7 Protocol Field Compression、8 Address and Control Field Compression。
b.LCP包种类的取舍
本文中,只用了Configure-Request、Reject、Ack三种LCP数据包,这是实现应答所必需的最低限度。单片机发出的Request选项是我们预先设定的,而ISP发出的选项若有我们不接受的内部,则单片机回答一个Reject,任何一方接受请求时发Ack,因此未处理NAK数据包。本文也未处理剩余的七类数据包,因任何原因造成的链路终止问题都由单片机在程序的控制下重新拨号来解决。
c.LCP选项的取舍
由于我们每次发送(接收)的数据较少(由于单片机RAM的限制,设定的缓冲区很小),MRU选项默认值为1500字节,最小值为576字节,所以测试程序不支持选项1;选项2是必须支持的;选项3提供了发送password的方法,它的参数可以是 0xc023或0xc223。为简单起见,本文的测试程序选择了0xc023作为选项3的参数,这样,程序将以明文的形在一个数据包中发出用户名和密码。测试程序不请求选项7和8的服务,也就是根据默认的规定,发送的数据包含有PPP协议域和控制域。
(2)PAP包的配置
由于LCP包中选项3的使用情况,PAP包是必需的。简单起见,程序中只交换了一个PAP包,但已完成了用户的身份鉴定,如图6所示。
(3)IPCP包的配置
IPCP选项是关于IP地址
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)