?? bootconfig.c
字號:
int sysStartType; /* BOOT_CLEAR, BOOT_NO_AUTOBOOT, ... */BOOL scsiInitialized = FALSE;int bootCmdTaskPriority = 1;int bootCmdTaskOptions = VX_SUPERVISOR_MODE;int bootCmdTaskStackSize = BOOT_CMD_STACK_SIZE;/* Two magic cookies used to detect data section misalignment */#define TRAP_VALUE_1 0x12348765#define TRAP_VALUE_2 0x5a5ac3c3LOCAL volatile UINT32 trapValue1 = TRAP_VALUE_1;LOCAL volatile UINT32 trapValue2 = TRAP_VALUE_2;#ifdef INCLUDE_NETWORK/* network protocol configuration parameters */#ifdef INCLUDE_TCPTCP_CFG_PARAMS tcpCfgParams = /* tcp configuration parameters */ { TCP_FLAGS_DFLT, /* include rfc1323 support */ TCP_SND_SIZE_DFLT, /* default send buffer size */ TCP_RCV_SIZE_DFLT, /* default recv buffer size */ TCP_CON_TIMEO_DFLT, /* initial connection time out */ TCP_REXMT_THLD_DFLT, /* retransmit threshold */ TCP_MSS_DFLT, /* default maximum segment size */ TCP_RND_TRIP_DFLT, /* default round trip time */ TCP_IDLE_TIMEO_DFLT, /* idle timeouts before first probe */ TCP_MAX_PROBE_DFLT, /* max no. probes before dropping */ TCP_RAND_FUNC /* Random Function for TCP */ };#endif /* INCLUDE_TCP */#ifdef INCLUDE_UDPUDP_CFG_PARAMS udpCfgParams = /* udp configuration parameters */ { UDP_FLAGS_DFLT, UDP_SND_SIZE_DFLT, /* send buffer size */ UDP_RCV_SIZE_DFLT /* recv buffer size */ };#endif /* INCLUDE_UDP */#ifdef INCLUDE_ICMPICMP_CFG_PARAMS icmpCfgParams = /* icmp configuration parameters */ { ICMP_FLAGS_DFLT /* no icmp mask replies by default */ };#endif /* INCLUDE_ICMP */IP_CFG_PARAMS ipCfgParams = /* ip configuration parameters */ { IP_FLAGS_DFLT, /* default ip flags */ IP_TTL_DFLT, /* ip default time to live */ IP_QLEN_DFLT, /* default ip intr queue len */ IP_FRAG_TTL_DFLT /* default ip fragment time to live */ };/* network buffers configuration *//* * mBlk, clBlk configuration table for network stack data pool. * Only used for data transfer in the network stack. */M_CL_CONFIG mClBlkConfig = { /* no. mBlks no. clBlks memArea memSize ----------- ---------- ------- ------- */ NUM_NET_MBLKS_MIN, NUM_CL_BLKS_MIN, NULL, 0 };/* * network stack data cluster pool configuration table * Only used for data transfer in the network stack. */CL_DESC clDescTbl [] = { /* clusterSize num memArea memSize ----------- ---- ------- ------- */ {64, NUM_64_MIN, NULL, 0}, {128, NUM_128_MIN, NULL, 0}, {256, NUM_256_MIN, NULL, 0}, {512, NUM_512_MIN, NULL, 0}, {1024, NUM_1024_MIN, NULL, 0}, };int clDescTblNumEnt = (NELEMENTS(clDescTbl));/* * mBlk, clBlk configuration table for network stack system pool. * Used for network stack system structures such as routes, sockets, * protocol control blocks, interface addresses, mulitcast addresses, * and multicast routing entries. */M_CL_CONFIG sysMclBlkConfig = { /* no. mBlks no. clBlks memArea memSize ----------- ---------- ------- ------- */ NUM_SYS_MBLKS_MIN, NUM_SYS_CL_BLKS_MIN, NULL, 0 };/* * network stack system cluster pool configuration table * Used for network stack system structures such as routes, sockets, * protocol control blocks, interface addresses, mulitcast addresses, * and multicast routing entries. */CL_DESC sysClDescTbl [] = { /* clusterSize num memArea memSize ----------- ---- ------- ------- */ {64, NUM_SYS_64_MIN, NULL, 0}, {128, NUM_SYS_128_MIN, NULL, 0}, {256, NUM_SYS_256_MIN, NULL, 0}, {512, NUM_SYS_512_MIN, NULL, 0}, }; int sysClDescTblNumEnt = (NELEMENTS(sysClDescTbl));#ifdef INCLUDE_PPP#ifndef PPP_OPTIONS_FLAGS#define PPP_OPTIONS_FLAGS ((PPP_OPT_NO_ALL << PPP_S_NO_ALL) | \ (PPP_OPT_PASSIVE_MODE << PPP_S_PASSIVE_MODE) | \ (PPP_OPT_SILENT_MODE << PPP_S_SILENT_MODE) | \ (PPP_OPT_DEFAULTROUTE << PPP_S_DEFAULTROUTE) | \ (PPP_OPT_PROXYARP << PPP_S_PROXYARP) | \ (PPP_OPT_IPCP_ACCEPT_LOCAL << PPP_S_IPCP_ACCEPT_LOCAL) | \ (PPP_OPT_IPCP_ACCEPT_REMOTE << PPP_S_IPCP_ACCEPT_REMOTE) | \ (PPP_OPT_NO_IP << PPP_S_NO_IP) | \ (PPP_OPT_NO_ACC << PPP_S_NO_ACC) | \ (PPP_OPT_NO_PC << PPP_S_NO_PC) | \ (PPP_OPT_NO_VJ << PPP_S_NO_VJ) | \ (PPP_OPT_NO_VJCCOMP << PPP_S_NO_VJCCOMP) | \ (PPP_OPT_NO_ASYNCMAP << PPP_S_NO_ASYNCMAP) | \ (PPP_OPT_NO_MN << PPP_S_NO_MN) | \ (PPP_OPT_NO_MRU << PPP_S_NO_MRU) | \ (PPP_OPT_NO_PAP << PPP_S_NO_PAP) | \ (PPP_OPT_NO_CHAP << PPP_S_NO_CHAP) | \ (PPP_OPT_REQUIRE_PAP << PPP_S_REQUIRE_PAP) | \ (PPP_OPT_REQUIRE_CHAP << PPP_S_REQUIRE_CHAP) | \ (PPP_OPT_LOGIN << PPP_S_LOGIN) | \ (PPP_OPT_DEBUG << PPP_S_DEBUG) | \ (PPP_OPT_DRIVER_DEBUG << PPP_S_DRIVER_DEBUG))#endif /* PPP_OPTIONS_FLAGS */ PPP_OPTIONS pppOptions = { PPP_OPTIONS_FLAGS, /* flags field */ PPP_STR_ASYNCMAP, /* Set the desired async map */ PPP_STR_ESCAPE_CHARS, /* Set chars to escape on transmission */ PPP_STR_VJ_MAX_SLOTS, /* Set maximum VJ compression header slots */ PPP_STR_NETMASK, /* Set netmask value for negotiation */ PPP_STR_MRU, /* Set MRU value for negotiation */ PPP_STR_MTU, /* Set MTU value for negotiation */ PPP_STR_LCP_ECHO_FAILURE, /* Set max # consecutive LCP echo failures */ PPP_STR_LCP_ECHO_INTERVAL, /* Set time for LCP echo requests */ PPP_STR_LCP_RESTART, /* Set timeout for LCP */ PPP_STR_LCP_MAX_TERMINATE, /* Set max # xmits for LCP term-reqs */ PPP_STR_LCP_MAX_CONFIGURE, /* Set max # xmits for LCP conf-reqs */ PPP_STR_LCP_MAX_FAILURE, /* Set max # conf-naks for LCP */ PPP_STR_IPCP_RESTART, /* Set timeout for IPCP */ PPP_STR_IPCP_MAX_TERMINATE, /* Set max # xmits for IPCP term-reqs */ PPP_STR_IPCP_MAX_CONFIGURE, /* Set max # xmits for IPCP conf-reqs */ PPP_STR_IPCP_MAX_FAILURE, /* Set max # conf-naks for IPCP */ PPP_STR_LOCAL_AUTH_NAME, /* Set local name for authentication */ PPP_STR_REMOTE_AUTH_NAME, /* Set remote name for authentication */ PPP_STR_PAP_FILE, /* Set the PAP secrets file */ PPP_STR_PAP_USER_NAME, /* Set username for PAP auth with peer */ PPP_STR_PAP_PASSWD, /* Set password for PAP auth with peer */ PPP_STR_PAP_RESTART, /* Set timeout for PAP */ PPP_STR_PAP_MAX_AUTHREQ, /* Set max # xmits for PAP auth-reqs */ PPP_STR_CHAP_FILE, /* Set the CHAP secrets file */ PPP_STR_CHAP_RESTART, /* Set timeout for CHAP */ PPP_STR_CHAP_INTERVAL, /* Set interval for CHAP rechallenge */ PPP_STR_CHAP_MAX_CHALLENGE /* Set max # xmits for CHAP challenge */ }; #endif /* INCLUDE_PPP */#endif /* INCLUDE_NETWORK *//* forward declarations */#ifdef __STDC__void usrRoot (char *pMemPoolStart, unsigned memPoolSize);void usrClock (void);void usrKernelInit (void);LOCAL void bootCmdLoop (void);LOCAL char autoboot (int timeout);LOCAL void printBootLogo (void);LOCAL void bootHelp (void);LOCAL STATUS bootLoad (char *bootString, FUNCPTR *pEntry);LOCAL void go (FUNCPTR entry);LOCAL void m (char *adrs);LOCAL void d (char *adrs, int nwords);LOCAL void bootExcHandler (int tid);LOCAL void skipSpace (char **strptr);LOCAL void printExcMsg (char *string);LOCAL STATUS getArg (char **ppString, int *pValue, BOOL defaultHex, BOOL optional);LOCAL void usrBootLineInit (int startType);LOCAL STATUS usrBootLineCrack (char *bootString, BOOT_PARAMS *pParams);#ifdef INCLUDE_NETWORKLOCAL STATUS netLoad (char *hostName, char *fileName, char *usr, char *passwd, FUNCPTR *pEntry);LOCAL void netifAdrsPrint (char *ifname);LOCAL STATUS checkInetAddrField (char *pInetAddr, BOOL subnetMaskOK);LOCAL STATUS usrNetIfAttach (char *devName, int unitNum, char *inetAdrs);LOCAL STATUS usrNetIfConfig (char *devName, int unitNum, char *inetAdrs, char *inetName, int netmask);LOCAL STATUS usrBpInit (char *devName, int unitNum, u_long startAddr);LOCAL STATUS usrSlipInit (char *pBootDev, int unitNum, char *localAddr, char *peerAddr);LOCAL STATUS usrPPPInit (char *pBootDev, int unitNum, char *localAddr, char *peerAddr);#ifdef INCLUDE_BOOTPLOCAL STATUS bootpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile, char *pHostAddr, int *pMask);#endif#ifdef INCLUDE_DHCPCLOCAL STATUS dhcpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile, char *pHostAddr, int *pMask, DHCP_LEASE_DATA *pDhcpLease);#endif#endif /* INCLUDE_NETWORK */#ifdef INCLUDE_SCSI_BOOTLOCAL STATUS scsiLoad (int bootDevId, int bootDevLUN, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_SCSI_BOOT */#ifdef INCLUDE_FDLOCAL STATUS fdLoad (int drive, int type, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_FD */#ifdef INCLUDE_IDELOCAL STATUS ideLoad (int drive, int type, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_IDE */#ifdef INCLUDE_ATALOCAL STATUS ataLoad (int ctrl, int drive, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_ATA */#ifdef INCLUDE_PCMCIALOCAL STATUS pcmciaLoad (int sock, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_PCMCIA */#ifdef INCLUDE_TFFSLOCAL STATUS tffsLoad (int drive, int removable, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_TFFS */#ifdef INCLUDE_TSFS_BOOTLOCAL STATUS tsfsLoad (char * fileName, FUNCPTR * pEntry);LOCAL void wdbRebootEventGet (void * pNode, WDB_EVT_DATA * pEvtData);#endif /* INCLUDE_TSFS_BOOT */#elsevoid usrRoot ();void usrClock ();void usrKernelInit ();LOCAL void bootCmdLoop ();LOCAL char autoboot ();LOCAL void printBootLogo ();LOCAL void bootHelp ();LOCAL STATUS bootLoad ();LOCAL void go ();LOCAL void m ();LOCAL void d ();LOCAL void bootExcHandler ();LOCAL void skipSpace ();LOCAL void printExcMsg ();LOCAL STATUS getArg ();LOCAL void usrBootLineInit ();LOCAL STATUS usrBootLineCrack ();#ifdef INCLUDE_NETWORKLOCAL STATUS netLoad ();LOCAL void netifAdrsPrint ();LOCAL STATUS checkInetAddrField ();LOCAL STATUS usrNetIfAttach ();LOCAL STATUS usrNetIfConfig ();LOCAL STATUS usrBpInit ();LOCAL STATUS usrSlipInit ();LOCAL STATUS usrPPPInit ();#ifdef INCLUDE_BOOTPLOCAL STATUS bootpGet ();#endif#endif /* INCLUDE_NETWORK */#ifdef INCLUDE_SCSI_BOOTLOCAL STATUS scsiLoad();#endif /* INCLUDE_SCSI_BOOT */#ifdef INCLUDE_FDLOCAL STATUS fdLoad ();#endif /* INCLUDE_FD */#ifdef INCLUDE_IDELOCAL STATUS ideLoad ();#endif /* INCLUDE_IDE */#ifdef INCLUDE_ATALOCAL STATUS ataLoad ();#endif /* INCLUDE_ATA */#ifdef INCLUDE_PCMCIALOCAL STATUS pcmciaLoad ();#endif /* INCLUDE_PCMCIA */#ifdef INCLUDE_TFFSLOCAL STATUS tffsLoad ();#endif /* INCLUDE_TFFS */#ifdef INCLUDE_TSFS_BOOTLOCAL STATUS tsfsLoad ();LOCAL void wdbRebootEventGet ();#endif /* INCLUDE_TSFS_BOOT */LOCAL STATUS FlashLoad();#endif /* __STDC__ */#ifdef INCLUDE_USB_PEGASUS_END/* include USB stack initialization */#ifdef INCLUDE_USB#include "../comps/src/usrUsbInit.c"#endif/* include the Pegasus network driver initialization */#include "../comps/src/usrUsbPegasusEndInit.c"/* include the OHCI driver initialization */#ifdef INCLUDE_OHCI#include "usbPciStub.c"#include "../comps/src/usrUsbHcdOhciInit.c"#endif/****************************************************************************** usbOhciInit - initialize the USB stack w/ OHCI controller** RETURNS: Nothing.*/LOCAL void usbOhciInit ( void ) { usbInit (); /* initialize stack */ usrUsbHcdOhciAttach (); /* attach OHCI driver */ taskDelay (sysClkRateGet());/* needed to allow USB stack and OHCI driver starting */ usbPegasusEndInit (); /* initialize pegasus */ }/****************************************************************************** usbOhciStop - stop the USB stack w/ OHCI controller** RETURNS: Nothing.*/LOCAL void usbOhciStop ( void ) { STATUS status;#if 0 /* pdr: does not work !!!, not necessary needed */ printf("Shutdown Pegasus interface..."); status = pegasusShutdown(OK); /* shutdown pegasus interface */ printf("%s\n", (status == OK ? "Done":"Failed")); taskDelay(sysClkRateGet());#endif (void) usrUsbHcdOhciDetach(); /* detach the OHCI driver */ printf("Shutdown USB stack..."); status = usbdShutdown(); /* shutdown the USB stack */ printf("%s\n", (status == OK ? "Done":"Failed")); }#endif /* INCLUDE_USB_PEGASUS_END *//********************************************************************************* usrInit - user-defined system initialization routine** This routine is called by the start-up code in romStart(). It is called* before kernel multi-tasking is enabled, with the interrupts locked out.** It starts by clearing BSS, so all variables are initialized to 0 as per* the C specification. Then it sets up exception vectors, initializes the* hardware by calling sysHwInit(), and finally starts the kernel with the* usrRoot() task to do the remainder of the initialization.** NOMANUAL*/void usrInit ( int startType ) { /* * This trap will catch improper loading of the data section. * We check the magic cookie values to make sure the data section is * in the expected memory location. We do not want * to proceed further if the data segment is not correct. * * It should be easy to detect entry into the trap using an ICE, JTAG, * or logic analyzer. Without the trap, the processor is likely to run * away out of control. * * Data section misalignment can occur when there is a change in tool * chain, build rules, compiler, host utilites, etc. */ while (trapValue1 != TRAP_VALUE_1 || trapValue2 != TRAP_VALUE_2) { /* infinite loop */; } #if (CPU_FAMILY == SPARC) excWindowInit (); /* SPARC window management */#endif#if (CPU_FAMILY == MIPS) sysGpInit (); /* MIPS global pointer */#endif /* (CPU_FAMILY == MIPS) */#ifdef INCLUDE_SYS_HW_INIT_0 /* * Perform any BSP-specific initialisation that must be done before * cacheLibInit() is called and/or BSS is cleared. */ SYS_HW_INIT_0 ();#endif /* INCLUDE_SYS_HW_INIT_0 */ /* configure data and instruction cache if available and leave disabled */#ifdef INCLUDE_CACHE_SUPPORT /* * SPR 73609: If a cache is not to be enabled, don't require * its mode to be defined. Instead, default it to disabled. */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -