首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
基于PPP的TMS320C6x嵌入式网络接口设计 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 23:54:13 点击数:[] ![]() |
|||||
New()的深入研究,我们可以把握住PPP低层驱动程序设计的关键之处。pppNew()的接口为: HANDLE pppNew(HANDLE hSI , uint pppFlags ,uint mru , IPN IPServer , IPN IPMask , IPN IPClient, char *Username, char *Password, UINT32 cmap, void (*pfnSICtrl)(HANDLE, uint , UINT32, HANDLE )); pppNew包含有许多参数,重要的有:hSI 供回调函数使用的句柄、pppFlags 连接选项标志、mru 最大接收单元数以及网络地址和子网掩码、用户名称和口令等。其中,最重要的参数是回调函数的指针:pfnSICtrl 。当TCP/IP包需要通过PPP发送数据时,将使用该指针提供的函数。
回调函数由PPP低层驱动程序的开发人员负责编写,但它的接口是由pppNew的参数决定的。回调函数的接口界面为: void SIControl( HANDLE hSI , uint Message , UINT32 Data, HANDLE hPkt) 参数的含义为:hSI与特定PPP连接会话(由pppNew创建)相联系的句柄,Message描述 PPP 事件的消息代码,Data关于消息代码的附加信息。hPkt是最重要的,当消息代码为SI_MSG_ SENDPACKET时,表示发送数据包的句柄。 PPP 通常在三类情况下调用该回调函数,即: ① SI_MSG_CALLSTATUS PPP 的连接状态已经改变; ② SI_MSG_SENDPACKET PPP 正在请求一将数据帧编码和传输; ③ SI_MSG_PEERCMAP LCP 已经收到对等的 32 位异步字符映射。 3 编程举例 下面给出两段代码,说明在PPP低层驱动程序中如何接收和发送数据。 接收数据通过pppInput函数实现,核心代码如下: HANDLE hPkt; HANDLE hFrag; uint Offset,ValidSize; UINT8 *pb; // 生成1500字节payload包 if( !(hPkt = IFCreatePacket( 1500, 0, 0 )) ) return( 0 ); hFrag = PktGetFrag( hPkt ); //得到此包的存储器碎片 pb = FragGetBufParams( hFrag, 0, 0, 0 ); // 得到包头指针 Offset = PktGetSizeLLC( hPkt ); if( Offset <= 2 ) Offset = 0; else Offset-=2; pb += Offset; // 置pb指针到写数据开始处 // 利用指针“pb”向数据包中填充数据;hFrag是向PPP传 //递的句柄 FragSetBufParams( hFrag, PACKETSIZE, Offset ); return( hPkt ); 发送数据的情况要复杂一些,需要使用回调函数。回调函数的结构如下: void SIControl ( HANDLE hSI, uint Msg, UINT32 Aux, HANDLE hPkt ) {…switch( Msg ) { case SI_MSG_CALLSTATUS: if( Aux >= SI_CSTATUS_DISCONNECT ) { // Close PPP if( hSI→hPPP ) { hTmp = hSI→hPPP; hSI→hPPP = 0; pppFree( hTmp ); } break; case SI_MSG_PEERCMAP: break; case SI_MSG_SENDPACKET: // 确认数据包有效 // 取数据缓冲区参数 // 计算“净荷”(payload)的起始地址 // 发送数据 // 释放数据包 break; } } 结 语 自1994年PRECISE公司在TMS320C3x上推出TCP/IP开发包以来,如何在以DSP为硬件环境的嵌入式系统中支持TCP/IP就一直引人关注。随着硬件水平的提高和应用的深入,基于DSP的TCP/IP应用日渐增多。由于嵌入式系统的特殊应用环境,它的链路层情况非常复杂,所以开发方法与常规的网络开发方式有稍许不同,NDK自身已体现出了这种差异。目前,将PPP应用在嵌入式系统中仍是一种新的、积极的尝试。在NDK中,提供了多种方式支持PPP通信。我们认为,在操作系统层面开发基于PPP的应用时,应该采用低层 PPP API,这样可以适应更多的应用需求和嵌入式应用环境。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |