TM1300嵌入式多媒体网络通信系统的设计与实现
Lan_chip_Init();InitBuffer();
number=p->niinit.if_num;
ni_init(); …
case NI_GETPKB:… /*NI_GETPKB调用处理*/
case NI_RETPKB:… /*NI_RETPKB调用处理*/
case NI_SEND:… /*NI_SEND调用处理*/
case NI_BROADCASE:… /*NI_BROADCAST调用处理*/
case NI_POLL: /*NI_POLL调用处理*/
case NI_IOCTL:… /*NI_IOCTL调用处理*/
default:… /*返回错误代码*/
}
return rc;
}
可以看出,pNA+在调用网络接口功能时,只需传递参数指针,其具体动作都是由NIMain函数完成,NIMain起到了隔离网络底怪和pNA+的作用。
(3)pSOS系统中加入网络接口的方法
在pSOS系统添加网络接口增添其它的设备驱动程序类似,采用InstallNi函数完成。其函数定义格式如下面程序片段所示:
struct ni_init *pna_Init; /*用于传入pNA+配置表的nc_nni字段*/
void InstallNi (int (*entry)(),int ipadd,int mtu,int hwalen,
int flags,int subnetaddr,int dstipaddr)
{
pna_Init ->entry=(int (*)())entry;/*NI接口函数入口*/
pna_Init ->ipadd=htonl((ULONG)ipadd); /*IP地址*/
pna_Init ->mtu=ntu; /*大传输量,以太网为1518字节*/
pna_Init ->hwalen=hwalen; /*硬件地址长度,以太网为6*/
pna_Init ->flags=flags; /*接口标志*/
/*子网掩码、目的IP、缺省变量*/
ni_ptr->subnetaddr=htonl((ULONG)subnetaddr);
ni_ptr->dstipaddr=htonl((ULONG)dstipaddr);
ni_ptr->reserved[0]=0;
}
3.3 pNA+部件的配置及初始化
pSOS系统中,各个部件的配置都定义成一个结构体,并存放在结点配置表中(Node Configuration Table),结点配置表可以驻留在系统存储区的任意地址处。
PNA+部件配置表结构为pNAConfigTable。它用于定义pNA+所需的硬件和特定应用信息。如pNA+代码入口、网络接口初始化
《TM1300嵌入式多媒体网络通信系统的设计与实现(第4页)》