?? bootconfig.c
字號:
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);LOCAL STATUS bootpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile, char *pHostAddr, int *pMask);#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 ();LOCAL STATUS bootpGet ();#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 */#endif /* __STDC__ *//********************************************************************************* 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. */# if (!defined(USER_D_CACHE_ENABLE) && !defined(USER_D_CACHE_MODE))# define USER_D_CACHE_MODE CACHE_DISABLED# endif /* !USER_D_CACHE_ENABLE && !USER_D_CACHE_MODE */# if (!defined(USER_I_CACHE_ENABLE) && !defined(USER_I_CACHE_MODE))# define USER_I_CACHE_MODE CACHE_DISABLED# endif /* !USER_I_CACHE_ENABLE && !USER_I_CACHE_MODE */ cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE);#endif /* INCLUDE_CACHE_SUPPORT */#if (CPU == SPARClite) cacheLib.textUpdateRtn = NULL; /* XXX - mod hist 07u */#endif /* don't assume bss variables are zero before this call */ bzero (edata, end - edata); /* zero out bss variables */ /* debug led D12 */ /* while (1); dead here jhf --0214, ok here */ sysStartType = startType; intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS); /* set vector base table */ /* this func does nothing in ARM arch */#if (CPU_FAMILY == AM29XXX) excSpillFillInit (); /* am29k stack cache managemt */#endif excVecInit (); /* install exception vectors */ sysHwInit (); /* initialize system hardware */ usrKernelInit (); /* configure the Wind kernel */#if (CPU==SPARC) || (CPU_FAMILY==I80X86) /* XXX workaround for sun1e */#undef USER_I_CACHE_ENABLE /* XXX disable instruction cache */#endif /* (CPU==SPARC) || (CPU_FAMILY==I80X86) */#ifdef INCLUDE_CACHE_SUPPORT#ifdef USER_I_CACHE_ENABLE cacheEnable (INSTRUCTION_CACHE); /* enable instruction cache */#endif /* USER_I_CACHE_ENABLE */#endif /* INCLUDE_CACHE_SUPPORT */ /* start the kernel specifying usrRoot as the root task */ kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE, (char *) MEM_POOL_START_ADRS, sysMemTop (), ISR_STACK_SIZE, INT_LOCK_LEVEL); }/********************************************************************************* usrRoot - user-defined root task** The root task performs any initialization that should be done* subsequent to the kernel initialization.** It initializes the I/O system, install drivers, create devices,* sets up the network, etc., as necessary for the particular configuration.* It may also create the system symbol table if one is to be included.* Finally, it spawns the boot command loop task.** NOMANUAL*/void usrRoot ( char * pMemPoolStart, /* start of system memory partition */ unsigned memPoolSize /* initial size of mem pool */ ) { char tyName [20]; int ix; int dbg; #ifdef INCLUDE_END int count; END_TBL_ENTRY* pDevTbl;#endif /* INCLUDE_END */ /* Initialize the memory pool before initializing any other package. * The memory associated with the root task will be reclaimed at the * completion of its activities. */ memInit (pMemPoolStart, memPoolSize);/* XXX select between memPartLibInit */ /* set up system timer */ sysClkConnect ((FUNCPTR) usrClock, 0);/* connect clock interrupt routine */ (void)sysClkRateSet (SYS_CLK_RATE); /* set system clock rate */ sysClkEnable (); /* start it */ /* * The select library needs to be initialized before the tyLib module * since the _func_selWakeupListInit FUNCPTR is required (SPR #3314). * The installation of the select task delete hook is not performed * for boot ROMs. */ #ifdef INCLUDE_SELECT selectInit (NUM_FILES);#endif /* INCLUDE_SELECT */ /* initialize I/O and file system */ iosInit (NUM_DRIVERS, NUM_FILES, "/null"); consoleFd = NONE; /* install driver for on-board serial ports and make devices */#ifdef INCLUDE_TYCODRV_5_2#ifdef INCLUDE_TTY_DEV if (NUM_TTY > 0) { tyCoDrv (); /* install console driver */ for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */ { sprintf (tyName, "%s%d", "/tyCo/", ix); (void) tyCoDevCreate (tyName, ix, 512, 512); if (ix == CONSOLE_TTY) strcpy (consoleName, tyName); /* store console name */ } consoleFd = open (consoleName, O_RDWR, 0); /* set baud rate */ (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_ECHO | OPT_CRMOD | OPT_TANDEM | OPT_7_BIT); }#endif /* INCLUDE_TTY_DEV */#else /* !INCLUDE_TYCODRV_5_2 */#ifdef INCLUDE_TTY_DEV if (NUM_TTY > 0) { ttyDrv(); /* install console driver */ for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */ {#if (defined(INCLUDE_WDB) && (WDB_COMM_TYPE == WDB_COMM_SERIAL)) if (ix == WDB_TTY_CHANNEL) /* don't use WDBs channel */ continue;#endif sprintf (tyName, "%s%d", "/tyCo/", ix); /* (void) ttyDevCreate (tyName, sysSerialChanGet(ix), 512, 512);*/ ttyDevCreate (tyName, sysSerialChanGet(ix), 512, 512); if (ix == CONSOLE_TTY) /* init the tty console */ { strcpy (consoleName, tyName); consoleFd = open (consoleName, O_RDWR, 0); (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_ECHO | OPT_CRMOD | OPT_TANDEM | OPT_7_BIT); } } }#endif /* INCLUDE_TTY_DEV */ #ifdef INCLUDE_PC_CONSOLE pcConDrv (); for (ix = 0; ix < N_VIRTUAL_CONSOLES; ix++) { sprintf (tyName, "%s%d", "/pcConsole/", ix); (void) pcConDevCreate (tyName,ix, 512, 512); if (ix == PC_CONSOLE) /* init the console device */ { strcpy (consoleName, tyName); consoleFd = open (consoleName, O_RDWR, 0); (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_ECHO | OPT_CRMOD | OPT_TANDEM | OPT_7_BIT); }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -