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

📄 sysvware.c

📁 wind river提供的MPC8260的BSP典型代码
💻 C
字号:
/* sysVware.c - BSP to visionWare interface *//* Copyright 1984-2001 Wind River Systems, Inc. *//*modification history--------------------01f,17jul02,agf  add #ifdef logic for calling vware101e,16jul02,g_h  Add support for subnet mask necessary for VxWorks 5.5 		 to fix SPR 7973901d,25oct01,g_h  Making compliamce with our coding convention.01c,20jun01,g_h  change the sysVwareBuildBootLine() to return int instead of void01b,17jun01,g_h  update the visionWARE 1.10 support01a,22apr01,g_h  created*//*DESCRIPTIONThis module contains the interface between vWARE and the vxWorks BSP.INCLUDES: sysVware.h*//* include */#include "sysVware.h"/* defines *//* gobals *//* external */IMPORT void *sysVwareParamsGet(void);IMPORT char *sysBootLine;/* local *//* forward declaration */LOCAL int  sysVwareBuildBootLine(char* pMacAdrs);LOCAL void sysConvertVware2IPandSubnet(ULONG ip, UINT32 subnet, char *s, char *x);LOCAL int  sysVware2BuildBootLine(char* pMacAdrs);LOCAL int  sysVware1BuildBootLine(char* pMacAdrs);LOCAL void sysConvertVware2IP(unsigned long ip,char *s,char *x);LOCAL void sysConvertVware1IP(unsigned long ip,char *s);BOOL sysCheckIfVware(void);/***************************************************************************** sysVwareBuildBootLine - build the boot line from vWARE I parameters** This routine build the bootrom boot line from vWARE I parameters.** RETURNS: 1 if we booting from vWARE 0 if not** SEE ALSO: sysVware2BuildBootLine(), sysVware1BuildBootLine(), sysCheckIfVware() */LOCAL int sysVwareBuildBootLine    (    char* pMacAdrs    )    {    int retValue = 0;    /* give vware1 first crack */    #if   (CPU == MIPS32)    #elif (CPU == MIPS64)    #elif (CPU == XSCALE)    #elif (CPU == ARMARCH4)    #elif (CPU == ARMARCH4_T)    #elif (CPU == ARMARCH5)    #elif (CPU == ARMARCH5_T)    /* No visionWARE for those Arch */    #else    retValue = sysVware1BuildBootLine (pMacAdrs);    /* If vware1 didn't launch us, see if vware2 will */    if (!retValue)     #endif /* (CPU == ...) */	{ 	retValue = sysVware2BuildBootLine (pMacAdrs);	}    return (retValue);    }/***************************************************************************** sysVware2BuildBootLine - build the boot line from vWare II parameters** This routine build the bootrom boot line from vWARE II parameters.** RETURNS: 1 if vWARE II or 0 if not** SEE ALSO: sysVwareBuildBootLine(), sysVware1BuildBootLine(), sysCheckIfVware() */LOCAL int sysVware2BuildBootLine    (    char *pMacAdrs    )    {    tOsParams * ptOs = NULL;    char	hostIpAdrs[24];    char	targetIpAdrs[40];	char	gatewayIpAdrs[24];    ULONG     * ulp;    ULONG	startedByVware;    int         index;    int         retValue = 0;    ulp = sysVwareParamsGet ();    startedByVware = *ulp++;    if (startedByVware == 0x1BADC0DE)	{	ptOs = (tOsParams*)(*ulp);	/* extract host IP address from vware */	sysConvertVware2IP (ptOs->PrimaryHost,hostIpAdrs,"h");			/* extract target IP address and Subnet Mask from vware */        /* Check if subnet mask is 0, if it 0 we don't use subnet mask */        if (ptOs->Subnet !=0)           {           sysConvertVware2IPandSubnet (ptOs->IpAddress,ptOs->Subnet, targetIpAdrs,"e");           }        else           {           sysConvertVware2IP (ptOs->IpAddress,targetIpAdrs,"e");           }	/* extract gateway IP address from vware */        /* Check if it 0, if it 0 we don't use gateway */	if (ptOs->DefaultGateway != 0)            {            sysConvertVware2IP (ptOs->DefaultGateway,gatewayIpAdrs,"g");            }        /* Create the VxWorks bootline */        sprintf (sysBootLine,VWARE_BOOT_LINE, hostIpAdrs, targetIpAdrs, gatewayIpAdrs);	/* extract MAC address from vware */	if (pMacAdrs != NULL)	    {	    for (index=0; index < VWARE_MAC_ADRS_LEN ;index++)       		pMacAdrs[index]= ptOs->MacBytes[index]; 	    }        retValue = 1;	}    return (retValue);    }/******************************************************************************** sysVware1BuildBootLine - build the boot line from vWARE I parameters** This routine build the bootrom boot line from vWARE I parameters.** RETURNS: 1 if vWrae1 or 0 if not** SEE ALSO: sysVwareBuildBootLine(), sysVware2BuildBootLine(), sysCheckIfVware() */LOCAL int sysVware1BuildBootLine    (    char * pMacAdrs    )    {    FAST char   * pS;    BOOT_PARAMS	  params;    int           index;    char	  hostIpAdrs[24];    char	  gatewayIpAdrs[24];    vWareParams	* vWare = (vWareParams *)BOOT_LINE_OFFSET;    int           retValue = 0;    /* Determine if visionWare (version 1) loaded this image: */    if ( strncmp( vWare->label, "vware", strlen ("vware")) == 0 ) 	{	/* initialize a parameter structure with DEFAULT_BOOT_LINE values */	pS = bootStringToStruct (DEFAULT_BOOT_LINE , &params);		/* extract target IP address from vware */	strcpy (params.ead, vWare->ipAddrs);	/* extract host IP address from vware */	sysConvertVware1IP (vWare->PrimaryHost,hostIpAdrs);	strcpy (params.had, hostIpAdrs);	/* extract gateway IP address from vware */	sysConvertVware1IP (vWare->DefaultGateway,gatewayIpAdrs);	strcpy (params.gad, gatewayIpAdrs);	/* extract MAC address from vware */	if (pMacAdrs != NULL)	    {	    for (index=0; index < VWARE_MAC_ADRS_LEN ;index++)       	        pMacAdrs[index] = vWare->MacBytes[index]; 	    }	/* extract IP address from vware */	/* rewrite bootline with vware specified IP address */	bootStructToString (BOOT_LINE_ADRS, &params);			retValue = 1;        }    return (retValue);    }/******************************************************************************** sysConvertVware2IPandSubnet - convert vWARE IP and Subnet format to VxWorks *                               format** This routine convert vWARE IP and Subnet format to VxWorks format** RETURNS: N/A** SEE ALSO: sysConvertVware2IP*/LOCAL void sysConvertVware2IPandSubnet    (    ULONG    ip,	UINT32   subnet,    char   * s,    char   * x    )    {    UCHAR * p;    p = (UCHAR *)&ip;    sprintf (s,"%s=%.1d.%.1d.%.1d.%.1d:%x",x,p[0],p[1],p[2],p[3],subnet);    }/******************************************************************************** sysConvertVware2IP - conver IP address from number to string** This routine conver vWARE II format IP address from number to string.** RETURNS: N/A** SEE ALSO: sysConvertVware1IP*/LOCAL void sysConvertVware2IP    (    ULONG  ip,    char * s,    char * x    )    {    UCHAR * p;    p = (UCHAR *)&ip;    sprintf (s,"%s=%.1d.%.1d.%.1d.%.1d",x,p[0],p[1],p[2],p[3]);    }/******************************************************************************** sysConvertVware1IP - conver IP address from number to string** This routine conver vWARE I format IP address from number to string.** RETURNS: N/A** SEE ALSO: sysConvertVware2IP*/LOCAL void sysConvertVware1IP    (    ULONG  ip,    char * s    )    {    UCHAR * p;    p = (UCHAR *)&ip;    sprintf (s,"%.1d.%.1d.%.1d.%.1d",p[0],p[1],p[2],p[3]);    }/******************************************************************************** sysCheckIfVware - check if we were lunched by vWARE** This routine check if we were lunched by vWARE** RETURNS: TRUE if yes, FALSE if no** SEE ALSO: sysVwareBuildBootLine(), sysVware2BuildBootLine(), sysVware1BuildBootLine() */BOOL sysCheckIfVware    (    void    )    {    ULONG * ulp;    ULONG   startedByVware;    BOOL    retValue = FALSE;    /* Check for vWARE 1.10 */    vWareParams	*vWare = (vWareParams *)BOOT_LINE_OFFSET;    if (strncmp ( vWare->label, "vware", strlen ("vware")) == 0) 	{		retValue = TRUE;	}    else	{	/* Cehck for vWARE 2.00 */	ulp = sysVwareParamsGet ();	startedByVware = *ulp++;	if (startedByVware == 0x1BADC0DE)	    {	    retValue = TRUE;	    }	}    return (retValue);    }

⌨️ 快捷键说明

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