?? sysvware.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 , ¶ms); /* 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, ¶ms); 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 + -