此设计中采用的是LwIP ( Light weight IP) , 它是瑞士计算机科学院Adam Dunkels 等开发的一套用于嵌入式系统的开放源代码的TCP / IP 协议栈。LwIP 具有以下特性: 支持多网络接口下的IP 转发,支持ICMP 协议, 包括实验性扩展的UDP, 阻塞控制、往返时间( RTT) 估算、快速恢复、快速转发的TCP , 提供专门的内部回调功能用于提高应用程序性能, 可选择的BerkeleyAPI 接口等。LwIP 可以是单线程运行, 即只有1 个tcpip 线程, 负责处理所有的tcp 连接, 各种网络程序都通过
tcpip 线程与网络交互。但LwIP 也可以多线程运行,以提高效率和降低编程的复杂度。可以通过下面的
函数创建新线程:
void sys_thread_new ( void ( *thread ) ( void*arg) ,
void*arg) ;
在μC / OSⅡ中, 没有线程( Thread ) 的概念, 只有任务( Task ) 。它已经提供了创建新任务的系统API调用OSTaskCreate , 因此只要把OSTaskCreate 封装一
下, 就可以实现sys_thread_new。LwIP 中的Thread 没有μC / OSⅡ中优先级的概念, 实现时需要由用户事先为LwIP 创建的线程分配
好优先级。
创建1 个和TCP / IP 相关的新进程的部分代码
如下:
# define LwIP_STK_SIZE 10*1024
# define LwIP_TASK_MAX 5
# define LwIP_START_PRIO 5
OS_STK LwIP_TASK_STK[ LwIP_TASK_MAX]
[ LwIP_STK_SIZE ] ;
u8_t curr_prio_offset ;sys_thread_t ;sys_systhread_new ( void ( *function ) ( void*arg ) ,void*arg, int prio)
3.3 PPP 协议部分
PPP 为基于点对点连接的多协议自寻址数据包的传输提供了一种标准方法。PPP 最初设计是为2个对等结构之间的IP 流量和传输提供一种封装协议。在TCP / IP 协议集中, 它是一种关于同步调制连接的数据链路层协议( 开发式系统互联参考模型OSI模式中的第2 层) 。PPP 主要创建电话线路及综合服务数字网( ISDN) 拨号接入网络服务提供商( ISP)的连接, 具有多种身份验证方法、数据压缩和加密及通知IP 地址等功能。需要传输的数据按照TCP 格式封装成TCP 数据包, 加上IP 报头和报尾封装成IP 数据包, 再按照PPP 的帧格式封装成PPP 帧, 最后才能用于传输。DTU 要想和Internet 建立连接, 首先要附着在GPRS 网上, 然后发起分组数据协议( PDP ) 上下文激活过程, 这样才能与GPRS 支持节点( GGSN) 建立一条逻辑通路, 从而和Internet 建立连接。
3.4 程序流程
系统上电后, 首先硬件初始化, 再对操作系统初始化, 然后进行系统文件配置, 创建任务, 并对网络( TCP / IP , PPP ) 初始化, 启动多任务调度。通过PPP发送LCP packets 进行设定和测试数据链路, 跟G20模块链接; 然后进行密码认证协议( PAP ) 认证; 通过后, PPP 发送NCP packets 选择和设定1 个网络层运行IP 协议, 一旦设定好协议, GPRS DTU 就可以接入到Internet 。DTU 向用户数据中心的IP 地址发起连接并请求注册, 就可开始和用户数据中心交互控制指令和数据。
4、结语
研究和设计GPRS DTU 的目的是将其应用于武汉理工大学的含油污水远程监控系统, 目前实验阶段的测试效果证明了此方案的可行性。基于GPRS 的远程监控系统相对于传统的基于有线连接或GSM 短消息的远程监控系统具有很多优势, 如: 连接时间短、实时性强、永远在线、收费合理、价格便宜等, 相信GPRS DTU 也会有很好的市场前景。
本文来自:百度文库资料。如有版权请联系:010-82899827-805,24小时内即撤。