📄 eth_ctl.c
字号:
if (u8PortNo == 1) { AddrForPort = 0x0100; } pu32StaticCnt->drop_event = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0000)); pu32StaticCnt->crcerr = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0004)); pu32StaticCnt->undersizepkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0008)); pu32StaticCnt->oversizepkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x000c)); pu32StaticCnt->fragments = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0010)); pu32StaticCnt->jabber = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0014)); pu32StaticCnt->broadcastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0018)); pu32StaticCnt->multicastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x001c)); pu32StaticCnt->pkts64 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0020)); pu32StaticCnt->pkts65_127 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0024)); pu32StaticCnt->pkts128_255 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0028)); pu32StaticCnt->pkts256_511 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x002c)); pu32StaticCnt->pkts512_1023 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0030)); pu32StaticCnt->pkts1024_1518 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0034)); pu32StaticCnt->pkts_1518 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0038)); pu32StaticCnt->ifinucastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x003c)); pu32StaticCnt->ifinnucastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0040)); pu32StaticCnt->ifindiscards = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0044)); pu32StaticCnt->ifinerrors = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0048)); pu32StaticCnt->ifinmulticast = *(UINT32 *) (SF_Statis + (AddrForPort | 0x004c)); pu32StaticCnt->ifinbroadcast = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0050)); pu32StaticCnt->dot3alignmenterr = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0054)); pu32StaticCnt->dot3fcserr = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0058)); pu32StaticCnt->dot3internalrecerr = *(UINT32 *) (SF_Statis + (AddrForPort | 0x005c)); pu32StaticCnt->dot3inpause = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0060)); pu32StaticCnt->dot3unkpause = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0064)); pu32StaticCnt->dot3dribble = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0068)); pu32StaticCnt->octets = *(UINT32 *) (SF_Statis + (AddrForPort | 0x006c)); pu32StaticCnt->pkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0070)); pu32StaticCnt->ifinoctets = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0074)); pu32StaticCnt->broadcastpkts_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0080)); pu32StaticCnt->multicastpkts_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0084)); pu32StaticCnt->ifoutdiscards = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0088)); pu32StaticCnt->ifouterrors = *(UINT32 *) (SF_Statis + (AddrForPort | 0x008c)); pu32StaticCnt->ifoutucastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0090)); pu32StaticCnt->ifoutnucastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0094)); pu32StaticCnt->ifoutmulticast = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0098)); pu32StaticCnt->ifoutbroadcast = *(UINT32 *) (SF_Statis + (AddrForPort | 0x009c)); pu32StaticCnt->pkts64_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00a0)); pu32StaticCnt->pkts65_127_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00a4)); pu32StaticCnt->pkts128_255_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00a8)); pu32StaticCnt->pkts256_511_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00ac)); pu32StaticCnt->pkts512_1023_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00b0)); pu32StaticCnt->pkts1024_1518_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00b4)); pu32StaticCnt->pkts_1518_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00b8)); pu32StaticCnt->dot3singlecol = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00bc)); pu32StaticCnt->dot3multiplecol = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00c0)); pu32StaticCnt->dot3latecol = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00c4)); pu32StaticCnt->dot3excessivecol = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00c8)); pu32StaticCnt->dot3colcnt = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00cc)); pu32StaticCnt->dot3defer = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00d0)); pu32StaticCnt->pkts_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00d4)); pu32StaticCnt->octets_tx = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00d8)); pu32StaticCnt->collisions = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00dc)); pu32StaticCnt->ifoutoctets = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00e0)); pu32StaticCnt->dot3outpause = *(UINT32 *) (SF_Statis + (AddrForPort | 0x00e4)); #ifdef SfTest SF_Print("SF count information is %ld\n",pu32StaticCnt->drop_event); SF_Print("SF count information is %ld\n",pu32StaticCnt->crcerr); SF_Print("SF count information is %ld\n",pu32StaticCnt->undersizepkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->oversizepkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->fragments); SF_Print("SF count information is %ld\n",pu32StaticCnt->jabber); SF_Print("SF count information is %ld\n",pu32StaticCnt->broadcastpkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->multicastpkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts64); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts65_127); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts128_255); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts256_511); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts512_1023); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts1024_1518); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts_1518); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifinucastpkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifinnucastpkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifindiscards); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifinerrors); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifinmulticast); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifinbroadcast); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3alignmenterr); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3fcserr); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3internalrecerr); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3inpause); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3unkpause); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3dribble); SF_Print("SF count information is %ld\n",pu32StaticCnt->octets); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifinoctets); SF_Print("SF count information is %ld\n",pu32StaticCnt->broadcastpkts_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->multicastpkts_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifoutdiscards); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifouterrors); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifoutucastpkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifoutnucastpkts); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifoutmulticast); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifoutbroadcast); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts64_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts65_127_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts128_255_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts256_511_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts512_1023_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts1024_1518_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts_1518_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3singlecol); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3multiplecol); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3latecol); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3excessivecol); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3colcnt); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3defer); SF_Print("SF count information is %ld\n",pu32StaticCnt->pkts_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->octets_tx); SF_Print("SF count information is %ld\n",pu32StaticCnt->collisions); SF_Print("SF count information is %ld\n",pu32StaticCnt->ifoutoctets); SF_Print("SF count information is %ld\n",pu32StaticCnt->dot3outpause); #endif}#endif/*======================================================================= * 函数名称:void ETH_SetPortShortFrameReceive(In UINT32 u32ShorReceEn) * 初稿完成:2005/1/6 * 作 者: * 函数功能:设置端口短帧接收使能/禁止 * 输入参数: 短帧接收使能/禁止设置 * u32ShorReceEn:1->使能;0->禁止 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetPortShortFrameReceive(In UINT32 u32ShorReceEn){ Port_Conf_U SetShorReceEn; SetShorReceEn.w32 = *(UINT32 *) ETH_MAC0_REG(0); SetShorReceEn.bits.rx_shframe_en = u32ShorReceEn; *(UINT32 *) ETH_MAC0_REG(0) = SetShorReceEn.w32;}/*======================================================================= * 函数名称:void ETH_SetPortPostFrameSend(In UINT32 u32PostFraSenEn) * 初稿完成:2005/1/6 * 作 者: * 函数功能:设置端口流控帧发送使能/禁止 * 输入参数:流控帧发送使能/禁止设置 * u32PostFraSenEn:1->使能;0->禁止 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetPortPostFrameSend(In UINT32 u32PostFraSenEn){ Port_Conf_U SetPostFraSenEn; SetPostFraSenEn.w32 = *(UINT32 *) ETH_MAC0_REG(0); SetPostFraSenEn.bits.pause_en = u32PostFraSenEn; *(UINT32 *) ETH_MAC0_REG(0) = SetPostFraSenEn.w32;}/*======================================================================= * 函数名称:void ETH_SetPortCountRollCtrl( In UINT32 u32Value) * 初稿完成:2005/1/6 * 作 者: * 函数功能:设置端口的统计信息计满是否回零 * 输入参数: 需要设置计数器满回零的端口置1,否则置0 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetPortCountRollCtrl( In UINT32 u32Value) { Port_Conf_U CntRollCtrl; CntRollCtrl.w32 = *(UINT32 *) ETH_MAC0_REG(0); CntRollCtrl.bits.cntr_roll_dis = u32Value; *(UINT32 *) ETH_MAC0_REG(0) = CntRollCtrl.w32;}/*======================================================================= * 函数名称:void ETH_ReadFrameCRCErrorFlag (Out UINT32 *u32RecFraCRCErr, Out UINT32 *u32TraFraCRCErr) * 初稿完成:2005/1/15 * 作 者: * 函数功能:读取的接收帧CRC校验出错标志,读取的发送帧CRC校验出错标志 * 输入参数: * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_ReadFrameCRCErrorFlag (Out UINT32 *u32RecFraCRCErr, Out UINT32 *u32TraFraCRCErr){ Port_Conf_U FrameCRCError; FrameCRCError.w32 = *(UINT32 *) ETH_MAC0_REG(0); *(UINT32 *)u32RecFraCRCErr = FrameCRCError.bits.crc_rx; *(UINT32 *)u32TraFraCRCErr = FrameCRCError.bits.txcrc_bad;}/*======================================================================= * 函数名称:void ETH_SetFrameCRCCtlRebuild ( In UINT32 u32CRCRebuild) * 初稿完成:2005/1/15 * 作 者: * 函数功能:CRC生成时是否需要修改原来的CRC位,重新计算CRC * 输入参数:CRC重新生成设置位 * u32CRCRebuild:0->从新计算;1->不从新计算 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetFrameCRCCtlRebuild ( In UINT32 u32CRCRebuild){ Port_Conf_U FrameCRCRebuild; FrameCRCRebuild.w32 = *(UINT32 *) ETH_MAC0_REG(0); FrameCRCRebuild.bits.crcgen_dis= u32CRCRebuild; *(UINT32 *) ETH_MAC0_REG(0) = FrameCRCRebuild.w32;}/*======================================================================= * 函数名称:UINT32 ETH_SetLongFrameLength(In UINT32 u32Value) * 初稿完成:2005/1/5 * 作 者: * 函数功能:设置最长帧的长度 * 输入参数: 最长帧长度 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetLongFrameLength( In UINT32 u32Value){ Port_Conf_U SetLongFrame; SetLongFrame.w32 = *(UINT32 *) ETH_MAC0_REG(0); SetLongFrame.bits.len_max = u32Value; *(UINT32 *) ETH_MAC0_REG(0) = SetLongFrame.w32;}/*======================================================================= * 函数名称:UINT32 ETH_SetShortFrameLength(In UINT32 u32Value) * 初稿完成:2005/1/5 * 作 者: * 函数功能:设置最短帧的长度 * 输入参数:最短帧长度 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetShortFrameLength(In UINT32 u32Value){ Port_Conf_U SetLongFrame; SetLongFrame.w32 = *(UINT32 *) ETH_MAC0_REG(0); SetLongFrame.bits.rx_min_thr = u32Value; *(UINT32 *) ETH_MAC0_REG(0) = SetLongFrame.w32;}/*======================================================================= * 函数名称:void ETH_SetLoopBackEnable(In UINT32 u32ExLoop, In UINT32 u32InLoop) * 初稿完成:2005/1/5 * 作 者: * 函数功能:设置内环回和外环回使能 * 输入参数:使能-1,否则-0 * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetLoopBackEnable(In UINT32 u32ExLoop, In UINT32 u32InLoop){ Port_Conf_U SetLoopBack; SetLoopBack.w32 = *(UINT32 *) ETH_MAC0_REG(0); SetLoopBack.bits.ex_loop_en = u32ExLoop; SetLoopBack.bits.in_loop_en = u32InLoop; *(UINT32 *) ETH_MAC0_REG(0) = SetLoopBack.w32;}/*=======================================================================* MDIO REG**=======================================================================*//*======================================================================= * 函数名称:UINT32 ETH_SetPHYExternAddress(In UINT32 u32PHYAddr) * 初稿完成:2005/1/7 * 作 者: * 函数功能:用于是设置对应端口链接的PHY外部物理地址 * 输入参数:Phy Addr. * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议 * 主调函数: 建议 *========================================================================*/void ETH_SetPHYExternAddress(In UINT32 u32PHYAddr) { Set_phy_addr_U SetPHYExAddr; SetPHYExAddr.w32 = *(UINT32 *) ETH_MDIO_REG(2); SetPHYExAddr.bits.phy_addr0= u32PHYAddr; *(UINT32 *) ETH_MDIO_REG(2) = SetPHYExAddr.w32;}/*======================================================================= * 函数名称:void ETH_SetPHYFrequency(In UINT32 u32PHYFreq) * 初稿完成:2005/1/7 * 作 者: * 函数功能:通过配置分频系数配置外部PHY进行读写操作时的速度 * 输入参数:分频系数(2分频到16分频) * 输出参数: * 返回类型: 无 * 其他说明: * 调用函数: 建议
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -