轻型PPP协议在μC/OS-II操作系统中的实现
块控制着整个PPP守护进程的程序流程。当PPP连接成功后,它使PPP守护进程进入休眠状态,一直到管理员断开或者外部事件引起断开时它负责断开PPP连接。在PPP成功建立连接后,建立一个信号量,由PPP模块处理任务不断检测这个信号量;若检测到有调制解调器中断复服务程序发来的信号量,则进行PPP数据帧的发送或接收。
LCP模块:该阶段是通过交换配置数据包来建立和配置数据链路,发送LCP REQ数据包,将会收到客户端的发送过来的LCP ACK数据包,客户端还要回REQ数据包,服务器端接受到LCP REQ后,则向客户端同样发送一个LCP ACK数据包,至此链路协商正式结束。
认证协商模块(PAP):认证阶段是可选的,如果在链路建立协商阶段,服务器发送的第一个LCP REQ数据包中含有了认证的数据选项,而且其数据选项一直没有被对方拒绝并且得到确认,则进入认证协商阶段;否则,进入网络层协商阶段。
网络层协商模块(NCP):NCP协商的主要目的是服务器首先让客户端确认自身的IP地址,然后给客户端动态分配一个合法的IP地址。网络层协商 NCP每次请求数据包必须含有服务器端的IP选项,并且此选项最终被确认。在客户端回送了对服务器端的确认数据包后,开始进入客户端向服务器端申请动态分配IP地址的阶段,所以客户端继续向服务器端发送含有客户端IP地址且值为0的NCP REQ数据包,服务器端接受到这个数据包后,从IP地址池中取出一个合法的IP地址,发送了一个NCP NAK数据包。在该数据包中,客户端IP地址的数据选项中填入了从IP地址池中取出的IP地址的值,即给客户端动态的分配IP地址的值。随后,客户端将接收到的NCP NAK中的IP地址值作为下一次回送的NCP REQ中的客户端的IP地址值的选项。当服务器端再接收到此NCP REQ数据包后,便发送NCP ACK数据包,至此整个PPP协商过程结束,链路建立成功。
PPP模块:在协商好网络协议,可以进行数据的传输。为了更实时的进行数据传输,在这里为PPP协议模块建立一个信号量,当发生modem接受事件时,当Modem接收到数据时引发处理器的外部中断。在外部中断0处理函数中,将接收到的数据存入串口缓冲区中,如果缓冲区的数据已组成了一个完整的 PPP数据帧,则由中断服务子程序通过μC/OS-II所提供的OSSemPost()向任务PPP模块任务发送一个信号量。
对PPP模块任务来说,通过OSSemPend()函数等待由Modem中断服务程序发出的信号量,当接收到这个信号量后,说明有事件发生;再次判断这个事件是什么事件,若是接送事件,则调用Receive()接收PPP数据帧,放到SRAM接收缓冲区,若接收后,判断接收缓冲区是否正确地接收到数据,若正确地接收到PPP数据帧时,则调用PPPInput()进行对PPP数据帧的解析。若帧类型是IP则调用IP数据包的处理例程;若帧类型是LCP则调用LCP数据帧的处理例程;若帧类型是PAP、NCP则分别调用这两种类型数据包的处理例程。若是发送事件,则调用 Send()发送PPP数据帧。
4 轻型PPP协议模块的测试和性能分析
根据点对点通信的特点,分别在PC和ARM板两端安装一个Modem,通过一个交换机,或直接用电话线连接起来。由PC 端通过拨号软件,进行与ARM开发板端的连接后,分别通过双方的协商,建立数据通信;在ARM开发板端,建立一个Test_task测试任务模块,将一个信息“hello world”封装成UDP包,再经PPP模块的封装,发送到PC机端,PC机端若与ARM板连接成功,在Modem状态对话框中,能够正确的显示出对方所发送来的字符数和自己发送给对方字节数以及连接状态;若PC端显示出这个信息,说明PPP模块得以实现。通过测试后,其Modem状态连接图如图1所示。
图1 Modem状态连接图
Fig.1 The state link block of modem
从PC端的Modem状态连接图可知,该PC机端已经通过了相互协商,建立连接,处于数据帧的接收状态。已经正确地接收到由ARM开发板所发送的PPP数据帧,进行了相互通信,表明ARM板上PPP协议成功的得到了实现。
5 结束语
本文作者创新点在于从uCOS—II内核工作原理入手,以ARM开发板为平台,简述了系统硬件平台ARM7TDMI处理器的体系结构和相应的指令集。对与处理器相关的代码部分进行了修改与编译,实现了μC/OS-II在ARM开发板上移植;在该系统平台上重点的介绍了轻型 PPP协议设计与实现的具体过程,主要对main主模块、LCP模块、PAP模块、NCP模块和PPP模块等五个方面的设计与代码编写。通过测试,验证了 ARM开发板的PPP协议的网络通信功能。
1. Jean J L.uC/OS-||The Real_Time Kernel[M].2nd ed.北京:北京航空航天出版社,2003.
2. uC/OS-II for ARM Processors[Z].2006.http://
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)