📄 bootconfig.c
字号:
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));
#if defined(INCLUDE_STREAMS) || defined(INCLUDE_STREAMS_ALL)
#ifdef STREAMS_PROTO_INIT_RTN
FUNCPTR strmProtoInitRtn = (FUNCPTR) STREAMS_PROTO_INIT_RTN;
#endif /* STREAMS_PROTO_INIT_RTN */
#endif /* INCLUDE_STREAMS || INCLUDE_STREAMS_ALL */
#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 STATUS myGetFileName(char *commandLine,char *fileName);
LOCAL STATUS myUpdateRom (char *fName,char *hostName, char *usr,char *passwd);
LOCAL STATUS sysUpdateImage (char *fileName,char *hostName,char *usr,char *passwd);
LOCAL STATUS sysUpdateFile (char *fileName,char *hostName,char *usr,char *passwd);
LOCAL STATUS myNetInit (char * bootString, int initParam);
LOCAL char autoboot (int timeout);
LOCAL STATUS sysAutoFlashBoot (char *bootString, FUNCPTR *pEntry);
LOCAL void printBootLogo (void);
LOCAL void bootHelp (void);
LOCAL STATUS bootLoad (char *bootString, FUNCPTR *pEntry);
void go (FUNCPTR entry);
void m (char *adrs);
void mb (char *adrs);
void wb (char *adrs,int value);
void d (char *adrs, int nwords);
void dw (UINT16 *adrs, int nwords);
void dd (unsigned long *adrs, int nwords);
void dg (unsigned long *adrs, int nwords);
void S (long adrs);
LOCAL void bootExcHandler (int tid);
void skipSpace (char **strptr);
LOCAL void printExcMsg (char *string);
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_NETWORK
LOCAL 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_BOOTP
LOCAL STATUS bootpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile,
char *pHostAddr, int *pMask);
#endif
#ifdef INCLUDE_DHCPC
LOCAL STATUS dhcpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile,
char *pHostAddr, int *pMask,
DHCP_LEASE_DATA *pDhcpLease);
#endif
#if defined(INCLUDE_STREAMS) || defined(INCLUDE_STREAMS_ALL)
LOCAL STATUS usrStrmInit (void);
#endif /* INCLUDE_STREAMS || INCLUDE_STREAMS_ALL */
#endif /* INCLUDE_NETWORK */
#ifdef INCLUDE_SCSI_BOOT
LOCAL STATUS scsiLoad (int bootDevId, int bootDevLUN, char *fileName,
FUNCPTR *pEntry);
#endif /* INCLUDE_SCSI_BOOT */
#ifdef INCLUDE_FD
LOCAL STATUS fdLoad (int drive, int type, char *fileName, FUNCPTR *pEntry);
#endif /* INCLUDE_FD */
#ifdef INCLUDE_IDE
LOCAL STATUS ideLoad (int drive, int type, char *fileName, FUNCPTR *pEntry);
#endif /* INCLUDE_IDE */
#ifdef INCLUDE_ATA
LOCAL STATUS ataLoad (int ctrl, int drive, char *fileName, FUNCPTR *pEntry);
#endif /* INCLUDE_ATA */
#ifdef INCLUDE_PCMCIA
LOCAL STATUS pcmciaLoad (int sock, char *fileName, FUNCPTR *pEntry);
#endif /* INCLUDE_PCMCIA */
#ifdef INCLUDE_TFFS
LOCAL STATUS tffsLoad (int drive, int removable, char *fileName,
FUNCPTR *pEntry);
#endif /* INCLUDE_TFFS */
#ifdef INCLUDE_TSFS_BOOT
LOCAL STATUS tsfsLoad (char * fileName, FUNCPTR * pEntry);
LOCAL void wdbRebootEventGet (void * pNode, WDB_EVT_DATA * pEvtData);
#endif /* INCLUDE_TSFS_BOOT */
#else
void usrRoot ();
void usrClock ();
void usrKernelInit ();
LOCAL void bootCmdLoop ();
LOCAL char autoboot ();
LOCAL STATUS sysAutoFlashBoot ();
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_NETWORK
LOCAL STATUS netLoad ();
LOCAL void netifAdrsPrint ();
LOCAL STATUS checkInetAddrField ();
LOCAL STATUS usrNetIfAttach ();
STATUS usrNetIfConfig ();
LOCAL STATUS usrBpInit ();
LOCAL STATUS usrSlipInit ();
LOCAL STATUS usrPPPInit ();
#ifdef INCLUDE_BOOTP
LOCAL STATUS bootpGet ();
#endif
#if defined(INCLUDE_STREAMS) || defined(INCLUDE_STREAMS_ALL)
LOCAL STATUS usrStrmInit ();
#endif /* INCLUDE_STREAMS || INCLUDE_STREAMS_ALL */
#endif /* INCLUDE_NETWORK */
#ifdef INCLUDE_SCSI_BOOT
LOCAL STATUS scsiLoad();
#endif /* INCLUDE_SCSI_BOOT */
#ifdef INCLUDE_FD
LOCAL STATUS fdLoad ();
#endif /* INCLUDE_FD */
#ifdef INCLUDE_IDE
LOCAL STATUS ideLoad ();
#endif /* INCLUDE_IDE */
#ifdef INCLUDE_ATA
LOCAL STATUS ataLoad ();
#endif /* INCLUDE_ATA */
#ifdef INCLUDE_PCMCIA
LOCAL STATUS pcmciaLoad ();
#endif /* INCLUDE_PCMCIA */
#ifdef INCLUDE_TFFS
LOCAL STATUS tffsLoad ();
#endif /* INCLUDE_TFFS */
#ifdef INCLUDE_TSFS_BOOT
LOCAL 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))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -