📄 bootconfig.c
字号:
(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, PPP_STR_ASYNCMAP, PPP_STR_ESCAPE_CHARS, PPP_STR_VJ_MAX_SLOTS, PPP_STR_NETMASK, PPP_STR_MRU, PPP_STR_MTU, PPP_STR_LCP_ECHO_FAILURE, PPP_STR_LCP_ECHO_INTERVAL, PPP_STR_LCP_RESTART, PPP_STR_LCP_MAX_TERMINATE, PPP_STR_LCP_MAX_CONFIGURE, PPP_STR_LCP_MAX_FAILURE, PPP_STR_IPCP_RESTART, PPP_STR_IPCP_MAX_TERMINATE, PPP_STR_IPCP_MAX_CONFIGURE, PPP_STR_IPCP_MAX_FAILURE, PPP_STR_LOCAL_AUTH_NAME, PPP_STR_REMOTE_AUTH_NAME, PPP_STR_PAP_FILE, PPP_STR_PAP_USER_NAME, PPP_STR_PAP_PASSWD, PPP_STR_PAP_RESTART, PPP_STR_PAP_MAX_AUTHREQ, PPP_STR_CHAP_FILE, PPP_STR_CHAP_RESTART, PPP_STR_CHAP_INTERVAL, PPP_STR_CHAP_MAX_CHALLENGE }; #endif /* INCLUDE_PPP */#endif /* INCLUDE_NETWORK */#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,char *pGateway, 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 */#endif /* __STDC__ */void usrInit ( int startType ) { while (trapValue1 != TRAP_VALUE_1 || trapValue2 != TRAP_VALUE_2) { } #if (CPU_FAMILY == SPARC) excWindowInit (); #endif#if (CPU_FAMILY == MIPS) sysGpInit (); #endif#ifdef INCLUDE_SYS_HW_INIT_0 SYS_HW_INIT_0 ();#endif #ifdef INCLUDE_CACHE_SUPPORT#if (!defined(USER_D_CACHE_ENABLE) && !defined(USER_D_CACHE_MODE))#define USER_D_CACHE_MODE CACHE_DISABLED#endif#if (!defined(USER_I_CACHE_ENABLE) && !defined(USER_I_CACHE_MODE))#define USER_I_CACHE_MODE CACHE_DISABLED#endif cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE);#endif #if (CPU == SPARClite) cacheLib.textUpdateRtn = NULL; #endif bzero (edata, end - edata); sysStartType = startType; intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS); #if (CPU_FAMILY == AM29XXX) excSpillFillInit (); #endif excVecInit (); sysHwInit (); usrKernelInit (); #if (CPU==SPARC) || (CPU_FAMILY==I80X86) #undef USER_I_CACHE_ENABLE #endif #ifdef INCLUDE_CACHE_SUPPORT#ifdef USER_I_CACHE_ENABLE cacheEnable (INSTRUCTION_CACHE); #endif #endif kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE, (char *) MEM_POOL_START_ADRS, sysMemTop (), ISR_STACK_SIZE, INT_LOCK_LEVEL); }/******************************************************************************** NOMANUAL*/void usrRoot ( char * pMemPoolStart, unsigned memPoolSize ) { char tyName [20]; int ix; #ifdef INCLUDE_END int count; END_TBL_ENTRY* pDevTbl;#endif /* INCLUDE_END */ memInit (pMemPoolStart, memPoolSize); sysClkConnect ((FUNCPTR) usrClock, 0); sysClkRateSet (SYS_CLK_RATE); sysClkEnable (); #ifdef INCLUDE_SELECT selectInit (NUM_FILES);#endif iosInit (NUM_DRIVERS, NUM_FILES, "/null"); consoleFd = NONE; #ifdef INCLUDE_TYCODRV_5_2#ifdef INCLUDE_TTY_DEV if (NUM_TTY > 0) { tyCoDrv (); for (ix = 0; ix < NUM_TTY; ix++) { sprintf (tyName, "%s%d", "/tyCo/", ix); (void) tyCoDevCreate (tyName, ix, 512, 512); if (ix == CONSOLE_TTY) 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 #else #ifdef INCLUDE_TTY_DEV if (NUM_TTY > 0) { ttyDrv(); for (ix = 0; ix < NUM_TTY; ix++) {#if (defined(INCLUDE_WDB) && (WDB_COMM_TYPE == WDB_COMM_SERIAL)) if (ix == WDB_TTY_CHANNEL) continue;#endif sprintf (tyName, "%s%d", "/tyCo/", ix); (void) ttyDevCreate (tyName, sysSerialChanGet(ix), 512, 512); if (ix == CONSOLE_TTY) { 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) { 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_PC_CONSOLE */#endif /* !INCLUDE_TYCODRV_5_2 */ #ifdef INCLUDE_WDB wdbConfig(); vxBootFile[0] = NULL; #if defined(INCLUDE_TSFS_BOOT) && defined(INCLUDE_TSFS_BOOT_VIO_CONSOLE) consoleFd = open ("/vio/0", O_RDWR, 0); #endif#endif ioGlobalStdSet (STD_IN, consoleFd); ioGlobalStdSet (STD_OUT, consoleFd); ioGlobalStdSet (STD_ERR, consoleFd); pipeDrv (); #if defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK)#ifdef INCLUDE_EXC_SHOW excShowInit (); #endif excInit (); #endif excHookAdd ((FUNCPTR) bootExcHandler); logInit (consoleFd, 5); #ifdef INCLUDE_DOSFS hashLibInit (); #endif#if defined(INCLUDE_AOUT) bootAoutInit (); #else #if defined(INCLUDE_ECOFF) bootEcoffInit (); #else /* coff */#if defined(INCLUDE_COFF) bootCoffInit (); #else /* coff */#if defined(INCLUDE_ELF) bootElfInit (); #endif#endif #endif#endif#ifdef INCLUDE_PCMCIA pcmciaInit (); #endif #ifdef INCLUDE_END muxMaxBinds = MUX_MAX_BINDS; if (muxLibInit() == ERROR) return; for (count = 0, pDevTbl = endDevTbl; pDevTbl->endLoadFunc != END_TBL_END; pDevTbl++, count++) { cookieTbl[count].pCookie = muxDevLoad (pDevTbl->unit, pDevTbl->endLoadFunc, pDevTbl->endLoadString, pDevTbl->endLoan, pDevTbl->pBSP); if (cookieTbl[count].pCookie == NULL) { printf ("muxLoad failed!\n"); } cookieTbl[count].unitNo=pDevTbl->unit; bzero((void *)cookieTbl[count].devName,END_NAME_MAX); pDevTbl->endLoadFunc((char*)cookieTbl[count].devName, NULL); }#endif taskSpawn ("tBoot", bootCmdTaskPriority, bootCmdTaskOptions, bootCmdTaskStackSize, (FUNCPTR) bootCmdLoop, 0,0,0,0,0,0,0,0,0,0); while(1){ taskDelay (sysClkRateGet()/4); rPDATD= 0x4fff; taskDelay (sysClkRateGet()/4); rPDATD= 0x1fff; } }/******************************************************************************** NOMANUAL*/void usrClock (void) { tickAnnounce (); }#include "tffs/tffsDrv.h" STATUS ftpdInit (FUNCPTR, int stackSize); int netInit(char * bootString); /*********************************************************************************/LOCAL void bootCmdLoop (void) { BOOT_PARAMS params; char line [BOOT_CMD_MAX_LINE]; char *pLine; int nwords; int nbytes; int value; int adr; int adr2; FUNCPTR entry; char key = 0; int fd; int i=0; STATUS return_value; (void) ioctl (STD_IN, FIOFLUSH, 0 /*XXX*/); if (sysStartType & BOOT_CLEAR) printBootLogo (); usrBootLineInit (sysStartType); bootStringToStruct (BOOT_LINE_ADRS, ¶ms); bcopyBytes ((char *) (0x7e000), &(IP_PARAMS),sizeof(IP_PARAMS)); if(IP_PARAMS.dhcpflag==1) params.flags = 0x40; else { if(IP_PARAMS.bootpflag==1) params.flags = 0x40; else params.flags = 0; } sysFlags = params.flags;#ifdef INCLUDE_TFFS if (tffsDrv () != OK) dosFsInit (NUM_DOSFS_FILES); if (usrTffsConfig (0, 0, "/tffs0/vxworks") == ERROR) { }#endif #ifdef INCLUDE_NETWORK if( netInit(BOOT_LINE_ADRS) == ERROR ) { }#endif#ifdef INCLUDE_FTP_SERVER if( ftpdInit(0,0) == ERROR) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -