⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 meclib.c

📁 vxworks MPC8541 BSP
💻 C
📖 第 1 页 / 共 4 页
字号:
* outBandNetDetach
*
*/
STATUS outBandNetDetach (void)
    {
    /*
    struct in_addr inetAddr;
    char   ipStr[INET_ADDR_LEN];
    */
    int    ret = 0;

    ret = ifAllRoutesDelete (OUTBAND_DEV, OUTBAND_DEV_UNIT);
    /*
    printf ("ifAllRoutesDelete return %d\n", ret);
    */

    /*
    ret = ifRouteDelete (OUTBAND_DEV, OUTBAND_DEV_UNIT);
    printf ("ifRouteDelete return %d\n", ret);

    inetAddr.s_addr = NvRamContent.Nvram_MpIp;
    inet_ntoa_b(inetAddr, ipStr);
    ret = ifAddrDelete (OUTBAND_NET_DEV, ipStr);
    printf ("ifAddrDelete %s return %d\n", ipStr, ret);
    */
    
    if (OK != ipDetach (OUTBAND_DEV_UNIT, OUTBAND_DEV))
        {
        printf ("Outband net ipDetach failed\n");
        return (ERROR);
        }

    return (OK);
    }

/*******************************************************************************
* outBandNetAttach - debug use
*
*/
STATUS outBandNetAttach (void)
    {
    struct in_addr inetAddr;
    char   ipStr[INET_ADDR_LEN];
    int ret;

    if (OK != ipAttach (OUTBAND_DEV_UNIT, OUTBAND_DEV))
        {
        printf ("Outband net ipAttach failed\n");
        return ERROR;
        }

    ret = ifMaskSet (OUTBAND_NET_DEV, NvRamContent.Nvram_MpMask);
    printf ("ifMaskSet %x return %d\n", NvRamContent.Nvram_MpMask, ret);

    inetAddr.s_addr = NvRamContent.Nvram_MpIp;
    inet_ntoa_b (inetAddr, ipStr);
    ret = ifAddrSet (OUTBAND_NET_DEV, ipStr);
    printf ("ifAddrSet %s return %d\n", ipStr, ret);

    ret = ifFlagChange (OUTBAND_NET_DEV, IFF_UP, 1);
    printf ("ifFlagChange return %d\n", ret);

    return (OK);
    }


/*******************************************************************************
* SetMachinePara
*
*/
UINT8 npcnum = 0;
void SetMachinePara (void)
    {
    switch (MACHINE_TYPE)
	{
	case M_6910:
	    npcnum = 8;
	    break;
	case M_6906:
	    npcnum = 5;
	    break;
        case M_6903:
            npcnum = 2;
            break;
	default:
	    npcnum = 8;
	    break;
	}
    }

/***********************************************************************
* jiao.zhaoyun added on 2007-08-14
*/
void b_portInit()
{
    char    ipStr[INET_ADDR_LEN]/*, castAddr[INET_ADDR_LEN]*/;
    struct  in_addr inetAddr;

    inetAddr.s_addr = bspBbIpAddr();
    inet_ntoa_b(inetAddr, ipStr);
    netEndDevStart (BBC_DEV, BBC_DEV_UNIT, "", ipStr, BBC_INET_MASK);
}


#endif /* defined(PRJ_BUILD) */


/*****************************************************************************
*                            CPLD 读写控制接口                               *
******************************************************************************/

/*******************************************************************************
* mecRegWrite - Setup MEC Register
*
* Return OK/ERROR
*
*/
int mecRegWrite (int Register, UINT8 value)
{
    int oldlevel;

    oldlevel = intLock ();
    BCSR_REG(Register) = value;
    intUnlock (oldlevel);

    return (OK);
}

/*******************************************************************************
* mecRegRead - Read from MEC Register
*
* Parameter: Register offset
*
* Return: the value of UPC Register
*
*/
UINT8 mecRegRead (int Register)
{
    unsigned char value;
    value = BCSR_REG(Register);

    return(value);
}

/*******************************************************************************
*                             WatchDog相关                                    *
******************************************************************************/

/*****************************************************************************
 *   enable watchdog 
 */
void bsp_WatchDogEnable(void)
{
    /*BCSR_REG(0x44) |= 0x1;*/
    return;
}

/*****************************************************************************
 *   disable watchdog 
 */
void bsp_WatchDogDisable(void)
{
    BCSR_REG(0x44) &= ~0x1;
}

/*****************************************************************************
 *   clear watchdog
 */
void bsp_WatchDogClear(void)
{
    BCSR_REG(0x40) = 0x1;
    BCSR_REG(0x40) = 0x0;  
}

/*******************************************************************************
 *                              BOOTROM相关                                    *
 ******************************************************************************/

/*****************************************************************************
 *  b_getBootVersion
 */
void b_getBootVersion (char * buf, UINT32 length)
{
    BOOTVER info;
    int     ver_size;

    if (OK != bsp_getRuningBootVerInfo(&info))
        {
        return;
        }

    ver_size = strlen(info.verTag);
    if (ver_size > (int)(length - 10))
        {
        return;
        }
    sprintf (buf, " %s ", info.verTag);
}



/*******************************************************************************
 *                             ROS相关                                        *
 *******************************************************************************/

/******************************************************************************
 * sysMemRosTop
 */
char * sysMemRosTop (void)
    {
    return (sysPhysMemTop() - TRACE_BUF_SIZE);
    }

/******************************************************************************
 * sysMemRosBottom
 */
char * sysMemRosBottom (void)
    {
    static char * memTop = NULL;

    memTop = (char *)(sysMemTop() + RAM_DISK_SIZE);

    return (memTop);
    }


/*******************************************************************************
*                               本板控制与状态接口                             *
*******************************************************************************/

/*******************************************************************************
* boardOnLine
*
*/
BOOL boardOnLine (UINT8 phySlot)
    {
#ifdef  INSTALL_GCSA
    UINT16 val;
#elif defined(INSTALL_GCSD)
    UINT8  val1;
    UINT8  val2;
    UINT16 val;
#endif 
    int    shift;

    if (sysMySlot == 0xFF)
        return FALSE;

    if (phySlot > 14)
        return FALSE;

    if (sysMySlot == phySlot)
        return TRUE;
#ifdef  INSTALL_GCSA
    val = *(volatile UINT16 *)0xEB000000;
#elif defined(INSTALL_GCSD)
    val1 = *(volatile UINT8 *)0xEB000000;
    val2 = *(volatile UINT8 *)0xEB040000;
    val = val2;
    val = ( val << 8 ) | val1;
#endif 
    shift = phySlot;
    if ((phySlot == 7) || (phySlot == 8))
        shift = 7;
    else if (phySlot > 8)
        shift = phySlot - 1;

    if (val & (1 << shift))
        return TRUE;
    else
        return FALSE;

    }


/*******************************************************************************
* bsp_ResetBoard - 复位本板
*/
void bsp_ResetBoard(void)
{
    
#ifdef PRJ_BUILD
    Ros_MONSetRebootType(1);
#endif

    mecRegWrite (0x48, 3);
    intLock();
    while(1)
        ;
}

/*******************************************************************************
* physSlotNumber
*
* RETURNS:
*   7, 8 - 7或8号槽位,这是正常值;
*   0xFF - CPLD寄存器值出错。如果不插入机框会如何?
*/
UINT8 physSlotNumber (void)
{
    FAST UINT8 value;
    UINT8 slot8Token = 0x01;    /* default */

    value = mecRegRead (0x80) & 0x03;

    if(bspCpldVerNo()== 0x01) 
        slot8Token = 0x03;

    if (value == slot8Token)
        return (7);
    else if (value == 0x2)
        return (8);
    else
        return (0xFF);

}

/*******************************************************************************
* getSlaveSlotNumber
*
*/
UINT8 getSlaveSlotNumber (void)
{
    FAST UINT8 value;

    value = physSlotNumber();
    if (value == 7)
        return (8);
    else if (value == 8)
        return (7);
    else
        return (0xFF);
}


/*******************************************************************************
* sysIPAddrGet
* sysIPBroadcastAddrGet
*
* 获取板间通讯网口IP地址和广播地址
*/

UINT32 sysIPAddrGet (void)
{
    char   ipStr[INET_ADDR_LEN];

    if (ERROR == ifAddrGet (BBC_NET_DEV, ipStr))
        return (0);
    
    return (inet_addr(ipStr));
}

UINT32 sysIPBroadcastAddrGet (void)
{
    char   ipStr[INET_ADDR_LEN];

    if (ERROR == ifBroadcastGet (BBC_NET_DEV, ipStr))
        return (0);
    
    return (inet_addr(ipStr));
}

/*******************************************************************************
* b_getMacBase
*/
#if 0
STATUS b_getMacBase (UINT32 serial, unsigned char * pMac)
{
    if (serial > 16383)
        return ERROR;

    pMac[0] = 0x0;
    pMac[1] = 0xD0;
    pMac[2] = 0xD0;
    pMac[3] = 0xC8 + ((serial >> 11) & 0xFF);
    pMac[4] = 0x00 + ((serial >>  3) & 0xFF);
    pMac[5] = 0x00 + ((serial <<  5) & 0xFF);

    return OK;
}

#endif

/*lint -e40*/
UINT32 bFetchSerial (void)
{
    UINT32 SerialNo;

    if (OK == sysNvRamGet ((char*)&SerialNo, sizeof(SerialNo),
              (int)&NvRamContent.ZXR10_6910_SerialNo - (int)&NvRamContent))
        {
        return min(SerialNo, ZXR10_6910_MAX_SERIAL_NO - 1);
        }

    return (ZXR10_6910_MAX_SERIAL_NO - 1);
}

UINT32 bsp_FetchSerial (void)
{
    UINT32 SerialNo;

    if (OK == sysNvRamGet ((char*)&SerialNo, sizeof(SerialNo),
              (int)&NvRamContent.ZXR10_6910_SerialNo - (int)&NvRamContent))
        {
        return min(SerialNo, ZXR10_6910_MAX_SERIAL_NO - 1);
        }

    return (ZXR10_6910_MAX_SERIAL_NO - 1);
}

UINT32 b_FetchSerial (void)
{
    UINT32 SerialNo;
    SerialNo = NvRamContent.ZXR10_6910_SerialNo;
    return min(SerialNo, ZXR10_6910_MAX_SERIAL_NO - 1);
}
/*lint +e40*/



/*******************************************************************************
* sysBdcsInit
*
*/
STATUS sysBdcsInit (void)
{
    sysMySlot   = physSlotNumber();
    sysPeerSlot = getSlaveSlotNumber ();
    b_GetLastResetSource();

    return (OK);
}

/*******************************************************************************
* masterHwInit
*
*/
STATUS masterHwInit (void)
{
    return OK;
}

/*******************************************************************************
* slaveHwInit
*/
STATUS slaveHwInit (void)
{
    return OK;
}

/*******************************************************************************
*                               机框信息接口(软件)                           *
*******************************************************************************/
/*******************************************************************************
* b_getFrameType
*
*/
UINT8 b_getFrameType (void)
{
    UINT8 val;    

    val = *(volatile UINT8 *)0xE902002A;

    if(val & 0x80)
        return M_MBE6U;
    else
        return M_MB12U;   

}  
 

/*******************************************************************************
*                               单板信息接口(软件)                           *
*******************************************************************************/

/*******************************************************************************
* b_getMachineType
*
*/
UINT8 b_getMachineType (void)
{
    MACHINE_TYPE = M_6910;
    return (MACHINE_TYPE);
}


/*******************************************************************************
* b_getMachineName
*
*/
void b_getMachineName (char* buffer)
{
    sprintf(buffer, "ZXAN-C220");

    return;
}




/*******************************************************************************
*                               主备相关                                       *
*******************************************************************************/

/*******************************************************************************
* boardIsMaster
*
*/
BOOL boardIsMaster (void)
{
    UINT8 val;

    val = mecRegRead (0xF0);
    if (val & 0x01)
        return (FALSE);
    else
        return (TRUE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -