?? bootconfig.c
字號:
/* bootConfig.c - system configuration module for boot ROMs *//*DESCRIPTIONThis is the WRS-supplied configuration module for the VxWorks boot ROM.It is a stripped-down version of usrConfig.c, having no VxWorks shell ordebugging facilities. Its primary function is to load an object moduleover the network with either RSH or FTP. Additionally, a simple set ofsingle letter commands is provided for displaying and modifying memorycontents. Use this module as a starting point for placing applications in ROM.*/#include "vxWorks.h"#include "bootEcoffLib.h"#include "bootElfLib.h"#include "bootLib.h"#include "bootLoadLib.h"#include "bsdSockLib.h"#include "cacheLib.h"#include "cbioLib.h"#include "ctype.h"#include "dosFsLib.h"#include "dpartCbio.h"#include "errno.h"#include "errnoLib.h"#include "fcntl.h"#include "fioLib.h"#include "ftpLib.h"#include "hostLib.h"#include "icmpLib.h"#include "ifIndexLib.h"#include "ifLib.h"#include "if_sl.h"#include "inetLib.h"#include "intLib.h"#include "ioLib.h"#include "iosLib.h"#include "loadAoutLib.h"#include "loadCoffLib.h"#include "loadLib.h"#include "logLib.h"#include "memLib.h"#include "msgQLib.h"#include "netLib.h"#include "pipeDrv.h"#include "proxyLib.h"#include "qLib.h"#include "qPriBMapLib.h"#include "rebootLib.h"#include "remLib.h"#include "rngLib.h"#include "routeLib.h"#include "semLib.h"#include "sockLib.h"#include "stdio.h"#include "string.h"#include "sysLib.h"#include "sysSymTbl.h"#include "taskHookLib.h"#include "taskLib.h"#include "tftpLib.h"#include "tickLib.h"#include "trcLib.h"#include "unistd.h"#include "usrFdiskPartLib.h"#include "version.h"#include "wdLib.h"#include "net/if.h"#include "net/mbuf.h"#include "netinet/if_ether.h"#include "drv/netif/smNetLib.h"#include "ipProto.h"#include "private/excLibP.h"#include "private/kernelLibP.h"#include "private/workQLibP.h"#include "config.h"#include "scsiLib.h"#ifdef INCLUDE_BOOTP#include "bootpLib.h"#endif /* INCLUDE_BOOTP */#ifdef INCLUDE_PPP#include "pppLib.h"#endif /* INCLUDE_PPP */#ifdef INCLUDE_DHCPC#include "dhcpcLib.h"#include "dhcpcBootLib.h"#include "dhcp/dhcpc.h"#include "dhcp/dhcpcCommonLib.h"#endif#if (defined(INCLUDE_SECOND_SMNET) || \ defined(INCLUDE_SM_NET_ADDRGET) || \ defined(INCLUDE_SM_SEQ_ADDR))# ifndef INCLUDE_SM_NET# define INCLUDE_SM_NET# endif /* INCLUDE_SM_NET */#endif /* INCLUDE_SECOND_SMNET || ... */#if (defined(INCLUDE_SECOND_SMNET) && !defined(INCLUDE_SM_NET_ADDRGET))# define INCLUDE_SM_NET_ADDRGET#endif /* INCLUDE_SECOND_SMNET && !INCLUDE_SM_NET_ADDRGET */#ifdef INCLUDE_SM_NET# ifndef INCLUDE_BSD# define INCLUDE_BSD# endif /* INCLUDE_BSD */# ifndef INCLUDE_SM_COMMON# define INCLUDE_SM_COMMON# endif /* INCLUDE_SM_COMMON */#endif /* INCLUDE_SM_NET *//* defines */#define STREQ(A, B) (strcmp(A, B) == 0 ? 1 : 0)#define TIMEOUT 3 /* number of seconds before auto-boot *//* maximum line length for cmd input to 'm' and 'mEnet' routine */#define MAX_LINE 160 /* maximum line length for bootCmdLoop() command line input */#define BOOT_CMD_MAX_LINE BOOT_LINE_SIZE#define RSHD 514 /* rshd service */#define DEC FALSE /* getArg parameters */#define HEX TRUE#define OPT TRUE#define MAX_ADR_SIZE 6 #define DOS_ID_OFFSET 3#define FIRST_PARTITION_SECTOR_OFFSET (0x1be + 8)#define VXDOS "VXDOS"#define VXEXT "VXEXT"#ifndef NUM_PARTITIONS_DISK_BOOT# define NUM_PARTITIONS_DISK_BOOT 1 /* one partition on the disk */#endif /* NUM_PARTITIONS_DISK_BOOT */#ifndef PARTITION_DISK_BOOT# define PARTITION_DISK_BOOT 1 /* partition mounted during boot */#endif /* PARTITION_DISK_BOOT *//* DO NOT ADD ANYTHING BEFORE THE FIRST ROUTINE compressedEntry() */void usrInit ();IMPORT void sysInitAlt ();extern int random ();#if (CPU_FAMILY==MIPS)IMPORT void sysGpInit ();#endif /* (CPU_FAMILY==MIPS) */#ifdef INCLUDE_NETWORK#ifdef ETHERNET_ADR_SETvoid mEnet (char *);void sysEnetAddrGet ();void sysEnetAddrSet ();#endif /* ETHERNET_ADR_SET */#endif /* INCLUDE_NETWORK */#ifdef INCLUDE_ENDLOCAL void* findCookie(int unitNo, char* devName);#endif /* INCLUDE_END *//********************************************************************************* compressedEntry - compressed entry point after decompression ** This routine is the entry point after the bootroms decompress, if* compression is utilized. This routine must be the first item of the* text segment of this file. With ANSI C, strings will appear in text* segment so one should avoid entering strings, routines, or anything* else that might displace this routine from base of the text segment.** It is unwise to add functionality to this routine without due cause.* We are in the prehistoric period of system initialization. ** NOMANUAL*/void compressedEntry ( int startType ) {#if (CPU_FAMILY==MIPS) WRS_ASM (".extern _gp; la $gp,_gp");#endif#if (CPU_FAMILY==I960) sysInitAlt (startType); /* jump to the i960 entry point */#else usrInit (startType); /* all others procede below */#endif }#ifdef INCLUDE_END#include "end.h"#include "muxLib.h"#include "muxTkLib.h"#include "configNet.h"#include "m2Lib.h"IMPORT int ipAttach ();IMPORT END_TBL_ENTRY endDevTbl[];typedef struct cookie_tbl { int unitNo; char devName[END_NAME_MAX]; void* pCookie; }COOKIE_TBL;COOKIE_TBL cookieTbl[32];#ifndef MUX_MAX_BINDS#define MUX_MAX_BINDS 8#endifvoid* pCookie;M2_INTERFACETBL endM2Tbl;#endif /* INCLUDE_END */#ifndef IP_MAX_UNITS #define IP_MAX_UNITS 1#endifIP_DRV_CTRL ipDrvCtrl [IP_MAX_UNITS];int ipMaxUnits = IP_MAX_UNITS; /* Wind kernel configuration facility */#undef INCLUDE_SHOW_ROUTINES /* keep out kernel show routines */#undef INCLUDE_SM_NET_SHOW#include "usrKernel.c" /* kernel configuration facility *//* imports */IMPORT char edata []; /* defined by the loader */IMPORT char end []; /* defined by the loader */#define FREE_MEM_START_ADRS FREE_RAM_ADRS#ifdef INCLUDE_INITIAL_MEM_ALLOCATION#define MEM_POOL_START_ADRS \ (ROUND_UP(FREE_MEM_START_ADRS, (INITIAL_MEM_ALIGNMENT)) + \ (INITIAL_MEM_SIZE))#else /* INCLUDE_INITIAL_MEM_ALLOCATION */#define MEM_POOL_START_ADRS FREE_MEM_START_ADRS#endif /* INCLUDE_INITIAL_MEM_ALLOCATION */#ifdef INCLUDE_TSFS_BOOT /* boot via Target Server File System */#if ((WDB_COMM_TYPE == WDB_COMM_SERIAL) && \ (CONSOLE_TTY == NONE || CONSOLE_TTY == WDB_TTY_CHANNEL))#define INCLUDE_TSFS_BOOT_VIO_CONSOLE /* needed for Target Server Console */#endif#define INCLUDE_WDB /* WDB agent needed for TSFS Boot */#define INCLUDE_WDB_TSFS /* target-server file system */#undef INCLUDE_WDB_BANNER /* print banner after agent starts */#undef INCLUDE_WDB_TTY_TEST /* test serial line communcation */#undef INCLUDE_WDB_START_NOTIFY /* notify the host of task creation */#undef INCLUDE_WDB_USER_EVENT /* user events handling */#undef INCLUDE_WDB_CTXT /* context control */#undef INCLUDE_WDB_FUNC_CALL /* spawn function as separate task */#undef INCLUDE_WDB_GOPHER /* gopher info gathering */#undef INCLUDE_WDB_EXIT_NOTIFY /* notify the host of task exit */#undef INCLUDE_WDB_REG /* get/set hardware registers */#undef INCLUDE_WDB_EVENTPOINTS /* eventpoints handling */#undef INCLUDE_WDB_MEM /* optional memory services */#undef INCLUDE_WDB_BP /* breakpoint support */#include "wdb/wdbEvtLib.h"#include "usrWdb.c" /* WDB agent configuration */#else /* INCLUDE_TSFS_BOOT not defined */#undef INCLUDE_WDB#endif /* INCLUDE_TSFS_BOOT */#ifdef INCLUDE_NETWORK/* forward declarations */LOCAL STATUS usrNetProtoInit (void);IMPORT int lnEbsaattach ();IMPORT int oliattach ();IMPORT int dcattach ();IMPORT int eglattach ();IMPORT int eiattach ();IMPORT int feiattach ();IMPORT int exattach ();IMPORT int enpattach ();IMPORT int ieattach ();IMPORT int ilacattach ();IMPORT int lnattach ();IMPORT int lnsgiattach ();IMPORT int nicattach ();IMPORT int nicEvbattach ();IMPORT int medattach ();IMPORT int elcattach ();IMPORT int ultraattach ();IMPORT int eexattach ();IMPORT int eltattach ();IMPORT int eneattach ();IMPORT int esmcattach ();IMPORT int quattach ();IMPORT int loattach ();IMPORT int snattach ();IMPORT int fnattach ();IMPORT STATUS slipInit ();IMPORT int ifreset ();IMPORT void if_dettach ();IMPORT u_long in_netof ();IMPORT struct ifnet * ifunit ();IMPORT int pcmciaattach ();IMPORT int netLibInitialized;#ifdef NETIF_USR_DECL NETIF_USR_DECL /* additional declarations, from BSP */#endif#ifdef INCLUDE_IF_USRIMPORT int IF_USR_ATTACH ();#endif /* INCLUDE_IF_USR */LOCAL NETIF netIf [] = {#ifdef NETIF_USR_ENTRIES NETIF_USR_ENTRIES /* additional entries, from BSP */#endif#ifdef INCLUDE_IF_USR { IF_USR_NAME, IF_USR_ATTACH, IF_USR_ARG1, IF_USR_ARG2, IF_USR_ARG3, IF_USR_ARG4, IF_USR_ARG5, IF_USR_ARG6, IF_USR_ARG7, IF_USR_ARG8 },#endif /* INCLUDE_IF_USR */#ifdef INCLUDE_LNEBSA { "lnEbsa", lnEbsaattach, (char*)IO_ADRS_LNEBSA, INT_VEC_LNEBSA, INT_LVL_LNEBSA, LNEBSA_POOL_ADRS, LNEBSA_POOL_SIZE, LNEBSA_DATA_WIDTH, LNEBSA_MODE, LNEBSA_DMA_CHAN },#endif /* INCLUDE_LNEBSA */#ifdef INCLUDE_OLI { "oli", oliattach, (char*)IO_ADRS_NISA_BASE, IO_ADRS_NISA_PCMCIA, IO_ADRS_NISA_PCMEM, INT_VEC_PCMCIA_A, INT_LVL_PCMCIA_A, INT_VEC_PCMCIA_B, INT_LVL_PCMCIA_B },#endif#ifdef INCLUDE_DC { "dc", dcattach, (char*)IO_ADRS_DC, INT_VEC_DC, INT_LVL_DC, DC_POOL_ADRS, DC_POOL_SIZE, DC_DATA_WIDTH, DC_RAM_PCI_ADRS, DC_MODE },#endif /* INCLUDE_DC */#ifdef INCLUDE_EGL { "egl", eglattach, (char*)IO_ADRS_EGL, INT_VEC_EGL, INT_LVL_EGL },#endif /* INCLUDE_EGL */#ifdef INCLUDE_EI { "ei", eiattach, (char*)INT_VEC_EI, EI_SYSBUS, EI_POOL_ADRS, 0, 0},#endif /* INCLUDE_EI */#ifdef INCLUDE_FEI { "fei", feiattach, (char*)FEI_POOL_ADRS, 0, 0, 0, 0},#endif /* INCLUDE_FEI */#ifdef INCLUDE_EX { "ex", exattach, (char*)IO_ADRS_EX, INT_VEC_EX, INT_LVL_EX, IO_AM_EX_MASTER, IO_AM_EX },#endif /* INCLUDE_EX */#ifdef INCLUDE_ENP { "enp", enpattach, (char*)IO_ADRS_ENP, INT_VEC_ENP, INT_LVL_ENP, IO_AM_ENP },#endif /* INCLUDE_ENP */#ifdef INCLUDE_IE { "ie", ieattach, (char*)IO_ADRS_IE, INT_VEC_IE, INT_LVL_IE },#endif /* INCLUDE_IE */#ifdef INCLUDE_ILAC { "ilac", ilacattach, (char*)IO_ADRS_ILAC, INT_VEC_ILAC},#endif /* INCLUDE_ILAC */#ifdef INCLUDE_LN { "ln", lnattach, (char*)IO_ADRS_LN, INT_VEC_LN, INT_LVL_LN, LN_POOL_ADRS, LN_POOL_SIZE, LN_DATA_WIDTH, LN_PADDING, LN_RING_BUF_SIZE },#endif /* INCLUDE_LN */#ifdef INCLUDE_LNSGI { "lnsgi", lnsgiattach, (char*)IO_ADRS_LNSGI, INT_VEC_LNSGI, INT_LVL_LNSGI, LNSGI_POOL_ADRS, LNSGI_POOL_SIZE, LNSGI_DATA_WIDTH, LNSGI_PADDING, LNSGI_RING_BUF_SIZE },#endif /* INCLUDE_LNSGI */#ifdef INCLUDE_NIC { "nic", nicattach, (char*)IO_ADRS_NIC, INT_VEC_NIC, INT_LVL_NIC },#endif /* INCLUDE_NIC */#ifdef INCLUDE_NIC_EVB { "nicEvb", nicEvbattach, (char*)IO_ADRS_NIC,INT_VEC_NIC,INT_LVL_NIC },#endif /* INCLUDE_NIC_EVB */#ifdef INCLUDE_MED { "med", medattach, (char*)IO_ADRS_DBETH, INT_VEC_DBETH, INT_LVL_DBETH},#endif /* INCLUDE_MED */#ifdef INCLUDE_ELC { "elc", elcattach, (char*)IO_ADRS_ELC, INT_VEC_ELC, INT_LVL_ELC, MEM_ADRS_ELC, MEM_SIZE_ELC, CONFIG_ELC},#endif /* INCLUDE_ELC */#ifdef INCLUDE_ULTRA { "ultra", ultraattach, (char*)IO_ADRS_ULTRA, INT_VEC_ULTRA, INT_LVL_ULTRA, MEM_ADRS_ULTRA, MEM_SIZE_ULTRA, CONFIG_ULTRA},#endif /* INCLUDE_ULTRA */#ifdef INCLUDE_EEX { "eex", eexattach, (char*)IO_ADRS_EEX, INT_VEC_EEX, INT_LVL_EEX, NTFDS_EEX, CONFIG_EEX},#endif /* INCLUDE_EEX */#ifdef INCLUDE_ELT { "elt", eltattach, (char*)IO_ADRS_ELT, INT_VEC_ELT, INT_LVL_ELT, NRF_ELT, CONFIG_ELT},#endif /* INCLUDE_ELT */#ifdef INCLUDE_ENE { "ene", eneattach, (char*)IO_ADRS_ENE, INT_VEC_ENE, INT_LVL_ENE},#endif /* INCLUDE_ELT */#ifdef INCLUDE_ESMC { "esmc", esmcattach, (char*)IO_ADRS_ESMC, INT_VEC_ESMC, INT_LVL_ESMC, CONFIG_ESMC, RX_MODE_ESMC},#endif /* INCLUDE_ESMC */#ifdef INCLUDE_QU { "qu", quattach, (char*)IO_ADRS_QU_EN, INT_VEC_QU_EN, QU_EN_SCC, QU_EN_TX_BD, QU_EN_RX_BD, QU_EN_TX_OFF, QU_EN_RX_OFF, QU_EN_MEM},#endif /* INCLUDE_QU */#ifdef INCLUDE_SN { "sn", snattach, (char*)IO_ADRS_SN, INT_VEC_SN },#endif /* INCLUDE_SN */#ifdef INCLUDE_FN { "fn", fnattach },#endif /* INCLUDE_FN */#ifdef INCLUDE_SM_NET { "sm", smNetAttach2, 0, 0, 0, 0, 0, 0, 0, 0 },#endif /* INCLUDE_SM_NET */#ifdef INCLUDE_PCMCIA { "pcmcia", pcmciaattach, 0, 0, 0, 0, 0, 0 },#endif /* INCLUDE_PCMCIA */#ifdef INCLUDE_PPP {"ppp", 0, 0, 0, 0, 0},#endif /* INCLUDE_PPP */#ifdef INCLUDE_SLIP { "sl", 0, 0, 0, 0, 0 },#endif /* INCLUDE_SLIP */ { "lo", loattach, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0 }, };#endif /* INCLUDE_NETWORK *//* global variables */SYMTAB_ID sysSymTbl;int consoleFd; /* fd of initial console device */char consoleName [20]; /* console device name, eg. "/tyCo/0" */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -