繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> 嵌入式系统-博客 >> vxworksEND驱动编写(2)
vxworksEND驱动编写(2)
作者:   来源: 发表时间:2006-12-08  字号:  
MUX所用的END函数
下表是MUX所用的和驱动之间通信的函数。在本文中,函数用一个一般的“end”前
缀,但是在实际的驱动中,此前缀通常被能识别驱动的表示所代替,例如“motFcc”代表
MPC8260的快速以太网驱动。
函数 描述
endLoad( ) 把一个设备加载到MUX中,并把驱动和这个设备结合在一起
endUnload( ) 从MUX中释放一个设备或者设备上的一个端口
endSend( ) 从MUX层接收数据并把它发送到物理层。
endMCastAddrDel( ) 从一个设备中注册的广播列表中移出一个广播地址。
endMCastAddrGet( ) 检索注册在一个设备中的广播列表
endMCastAddrAdd( ) 向注册在一个设备中的列表中增加一个广播地址
endPollSend( ) 在查询模式而不是在中断模式下发送帧
endPollReceive( ) 在查询模式而不是在中断模式下接收帧
endStart( ) 连接设备中断并激活接口
endStop( ) 停止或者释放一个网络结构或设备
endAddressForm( ) 向一个包中添加地址信息
endAddrGet( ) 从一个包中提取地址信息
endPacketDataGet( ) 分离包中的地址信息和数据信息
endIoctl( ) 支持多种ioctl命令
endLoad( )
在网络接口被用于发送和接收帧之前,这个适当的设备必须被加载到MUX中并被配
置。当函数endLoad( )在系统启动时被任务tRootTask用于加载设备时,是由muxDevLoad()
调用的。
此函数接收一个初始化字符串,它的内容一般来说是用户定义的,但是总的来说需要
包括能够识别物理接口的设备号,中断向量号,以及存储器映射寄存器的地址。
endLoad( )必须被写成two-pass算法。在加载过程中,MUX调用此函数两次。在第一次
初始化字符串是空的(全0)。endLoad( )期望能检测到空字符并返回拷贝到字符串的设备名。
第二次调用传给endLoad( )函数的是提供给muxDevLoad()的实际的初始化字符串。endLoad( )
函数必须返回它所分配的指向END_OBJ结构的指针或是当加载失败时返回NULL。
一般来说,endLoad( )函数在第二次调用的时候,将主要完成以下功能:
􀂋 初始化设备和接口
􀂋 分配并给END_OBJ赋值
􀂋 初始化一些主要的结构
􀂋 分析并处理初始化字符串
􀂋 创建并填充MIB II接口表
􀂋 用netBufLib分配一个或是多个网络缓冲池
􀂋 根据END_OBJ机构中的pNetFuncs来填充NET_FUNCS表endLoad( )函数基于以下的框架
END_OBJ * endLoad
(
char * initString, /* defined in endTbl */
void * pBsp /* BSP-specific information (optional) */
)
{
END_OBJ * newEndObj;
if( !initString ) /* initString is NULL, error condition */
{
/* set errno perhaps */
return( (END_OBJ *) 0 );
}
else if( initString[0] == 0 ) /* initString[0] is NULL, pass one */
{
strcpy( initString, "foo" );
return( (END_OBJ *) 0 );
}
else /* initString is not NULL, pass two */
{
/* initialize device */
newEndObj = (END_OBJ *) malloc( sizeof(END_OBJ) );
/* fill newEndObj and newEndObj->pFuncTable */
/* create and populate the MIB2 interface table */
/* initialize any needed private structures */
/* parse and process initString, and pBsp if necessary */
/* create a private pool of memory using netBufLib API */
/* create network buffer pools using netBufLib API */
return( newEndObj );
}
}

!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: vxworks驱动编写(3)
  • 下一篇: 为arm,51与优盘进行串口通信的东东

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网