⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usrconfig.c

📁 MPC8241:本程序是freescale的824*系列的BSP源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/* usrConfig.c - user-defined system configuration library *//* Copyright 1984-1998 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------19f,10mar99,drm  Changing WINDMP to VXFUSION to reflect new product name.19e,08oct98,rlp  added support for UGL and HTML.19d,17sep98,ms   call cplusDemanglerInit if INCLUDE_CPLUS and INCLUDE_LOADER19c,17sep98,cym  added code to calculate proper IP address for PCSIM.19b,01sep98,drm  added code to initialize WindMP19a,10aug98,cym  added code to inform tornado when the NT simulator is up.18z,23apr98,yp   merged in TrueFFS support18y,22apr98,elp  created group 1 module when standalone (fixed SPR# 20301).18w,22apr98,hdn  added comment for tffsDrv().18t,17apr98,nps  added support for rBuffShow.18s,09mar98,sjw  merge in HTTP and JAVA changes for conflict resolution18r,18dec97,cth  replaced windview, timestamp initialization with windviewConfig18q,13nov97,cth  changed WV evtInstInit to wvLibInit2; removed connRtnSet, 		 evtTaskInit; added include wvLib.h, rBuffLib.h18p,18aug97,nps  changed WV buffer initialization with the rBuff API.18x,06mar98,ms   changed copyright year from 1996 to 1998.18v,04feb98,jpd  fix unsigned/signed warning (usrRoot); updated copyright date.18u,25feb98,jgn  removed call to excShowInit(), it is called by excInit()                 if needed (SPR #20625)18t,19jan98,hdn  changed a condition macro to include tffsDrv().18p,06jan98,cym  added SIMNT as processor not to clear bss.18s,23sep97,yp   added support for TFFS.18r,13aug97,cdp  add Thumb (ARM7TDMI_T) support;                 'fix' unsigned/signed comparison in usrRoot.18q,26feb97,dat  added INCLUDE_USER_APPL and USER_APPL_INIT, spr 8071.18p,05feb97,cdp  remove ARM test hook (_func_armStartup).18o,12dec96,cdp  added _func_armStartup for ARM platforms.18n,13dec96,elp	 changed syncLibInit() into symSyncLibInit().18m,18nov96,dds  SPR 2529: return status for sysScsiInit is now checked.18l,06nov96,ms   removed 17n hack to usrClock.18k,01nov96,hdn  added support for PCMCIA.18j,21oct96,hdn  changed paramerters for new LPT driver.18i,04oct96,elp  added INCLUDE_SYM_TBL_SYNC (SPR# 6775).18h,11jul96,tam  changed copyright year from 1995 to 1996.18l,19jul96,hdn  added support for ATA driver.18k,25jun96,jmb  Eliminated alternative WDB macro names (SPR #5707).18j,25jun96,dbt  Initialized _func_selWakeupListInit before tyLib (SPR #3314).18i,21jun96,jmb  update copyright. SPR #636418h,21jun96,jmb  long modhist -- deleted entries prior to 1994.  SPR #652818g,12mar96,tam  removed all #if (CPU == PPC403).18p,06jun96,ism  bumped copyright to 1996.18o,26jan96,ism  cleaned up vxsim/solaris version18f,02oct95,kvk  added sysHwInit2() for PPC603.18e,27sep95,tpr  removed #if (CPU_FAMILY != PPC) staff.18n,07nov95,srh  fixed C++ support comments.18m,29oct95,dat  fixed warnings about printf arguments18l,11oct95,jdi  doc: changed .pG to .tG.18k,10oct95,dat	 new BSP revision id. Added WDB Banner printing18j,15jun95,ms	 updated for new serial drivers.18i,09jun95,ms	 cleaned up console initialization18h,30may95,p_m  added initialization of formatted I/O library.		 replaced spyStop() by spyLibInit().18g,22may95,p_m  no longer initialize object format specific libraries if		 loader is not included.18f,22may95,myz  modified new serial device initialization for x86 support18e,22may95,ms   added some WDB agent support18e,30oct95,ism  updated for SIMSPARCSOLARIS18d,28mar95,kkk  added scalability support, changed edata and end to arrays		 (SPR #3917), changed baud rate to be a macro in configAll.h18g,25may95,yao  changed to bzero bss segment for PPC.18f,04apr95,caf  added PPC cache support.18e,03mar95,yao  added shsHwInit2 () for PPC403.18d,24feb95,caf  added PPC support.18c,20nov94,kdl  added hashLibInit() when using dosFs.18b,09nov94,jds  additions for scsi backward compatability ; scsi[12]IfInit()18a,04nov94,kdl	 merge cleanup.17l,02aug94,tpr  added cacheEnable (BRANCH_CACHE) for the MC68060.17m,15oct94,hdn  added LPT driver.17o,20jul94,ms   changed INCLUDE_AOUT_HPPA to INCLUDE_SOM_COFF17n,02may94,ms   added VxSim HP hack to usrClock().17q,15mar94,smb  renamed tEvtTask parameters.17p,15feb94,smb  defined WV_MODE, EVTBUFFER_ADDRESS for wvInstInit().17o,12jan94,kdl  modified posix initialization; added queued signal init.*//*DESCRIPTIONThis library is the WRS-supplied configuration module for VxWorks.  Itcontains the root task, the primary system initialization routine, thenetwork initialization routine, and the clock interrupt routine.The include file config.h includes a number of system-dependent parameters usedin this file.In an effort to simplify the presentation of the configuration of vxWorks,this file has been split into smaller files.  These additional configurationsource files are located in ../../src/config/usr[xxx].c and are #included intothis file below.  This file contains the bulk of the code a customer islikely to customize.The module usrDepend.c contains checks that guard against unsupportedconfigurations suchas INCLUDE_NFS without INCLUDE_RPC.  The moduleusrKernel.c contains the core initialization of the kernel which is rarelycustomized, but provided for information.  The module usrNetwork.c nowcontains all network initialization code.  Finally, the module usrExtra.ccontains the conditional inclusion of the optional packages selected inconfigAll.h.The source code necessary for the configuration selected is entirelyincluded in this file during compilation as part of a standard build inthe board support package.  No other make is necessary.INCLUDE FILES:config.hSEE ALSO:.tG "Getting Started, Cross-Development"*/#include "vxWorks.h"			/* always first */#include "config.h"			/* board support configuration header */#include "usrConfig.h"			/* general configuration header */#include "usrDepend.c"			/* include dependency rules */#include "usrKernel.c"			/* kernel configuration */#include "usrExtra.c"			/* conditionally included packages */#if CPU==SIMNTextern int simUpMutex;extern int win_ReleaseMutex(int hMutex);#endif#ifdef INCLUDE_HTTP#include "http/httpLib.h"		/* Wind Web Server interfaces */#endif/* global variables */int		consoleFd;		/* fd of initial console device */char		consoleName[20];	/* console device name, eg. "/tyCo/0" */SYMTAB_ID	statSymTbl;		/* system error status symbol table id*/SYMTAB_ID	standAloneSymTbl;	/* STANDALONE version symbol table id */SYMTAB_ID	sysSymTbl;		/* system symbol table id */BOOT_PARAMS	sysBootParams;		/* parameters from boot line */int		sysStartType;		/* type of boot (WARM, COLD, etc) *//********************************************************************************* usrInit - user-defined system initialization routine** This is the first C code executed after the system boots.  This routine is* called by the assembly language start-up routine sysInit() which is in the* sysALib module of the target-specific directory.  It is called with* interrupts locked out.  The kernel is not multitasking at this point.** This routine starts by clearing BSS; thus all variables are initialized to 0,* as per the C specification.  It then initializes the hardware by calling* sysHwInit(), sets up the interrupt/exception vectors, and starts kernel* multitasking with usrRoot() as the root task.** RETURNS: N/A** SEE ALSO: kernelLib** ARGSUSED0*/void usrInit     (    int startType    )    {#if	(CPU_FAMILY == SPARC)    excWindowInit ();				/* SPARC window management */#endif    /* configure data and instruction cache if available and leave disabled */#ifdef  INCLUDE_CACHE_SUPPORT    cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE);#endif  /* INCLUDE_CACHE_SUPPORT */#if	CPU_FAMILY!=SIMNT && CPU_FAMILY!=SIMSPARCSUNOS && CPU_FAMILY!=SIMHPPA && CPU_FAMILY!=SIMSPARCSOLARIS    /* don't assume bss variables are zero before this call */    bzero (edata, end - edata);		/* zero out bss variables */#endif	/* CPU_FAMILY!=SIMNT && CPU_FAMILY!=SIMSPARCSUNOS && CPU_FAMILY!=SIMHPPA && CPU_FAMILY!=SIMSPARCSOLARIS */    sysStartType = startType;			/* save type of system start */    intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS);	/* set vector base table */#if (CPU_FAMILY == AM29XXX)    excSpillFillInit ();			/* am29k stack cache managemt */#endif#ifdef  INCLUDE_EXC_HANDLING    excVecInit ();				/* install exception vectors */#endif  /* INCLUDE_EXC_HANDLING */    sysHwInit ();				/* initialize system hardware */    usrKernelInit ();				/* configure the Wind kernel */#ifdef  INCLUDE_CACHE_SUPPORT#ifdef 	USER_I_CACHE_ENABLE    cacheEnable (INSTRUCTION_CACHE);		/* enable instruction cache */#endif	/* USER_I_CACHE_ENABLE */#ifdef	USER_D_CACHE_ENABLE    cacheEnable (DATA_CACHE);			/* enable data cache */#endif 	/* USER_D_CACHE_ENABLE */#if (CPU == MC68060)#ifdef 	USER_B_CACHE_ENABLE    cacheEnable (BRANCH_CACHE);			/* enable branch cache */#endif	/* USER_B_CACHE_ENABLE */#endif	/* (CPU == MC68060) */#endif  /* INCLUDE_CACHE_SUPPORT */    /* start the kernel specifying usrRoot as the root task */    kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE,#ifdef  INCLUDE_WDB                (char *) FREE_RAM_ADRS + WDB_POOL_SIZE,#else                (char *) FREE_RAM_ADRS,#endif		sysMemTop (), ISR_STACK_SIZE, INT_LOCK_LEVEL);    }/********************************************************************************* usrRoot - the root task** This is the first task to run under the multitasking kernel.  It performs* all final initialization and then starts other tasks.** It initializes the I/O system, installs drivers, creates devices, and sets* up the network, etc., as necessary for a particular configuration.  It* may also create and load the system symbol table, if one is to be included.* It may then load and spawn additional tasks as needed.  In the default* configuration, it simply initializes the VxWorks shell.** RETURNS: N/A*/void usrRoot    (    char *	pMemPoolStart,		/* start of system memory partition */    unsigned	memPoolSize		/* initial size of mem pool */    )    {    char tyName [20];    int  ix;    /* 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.     */#ifdef INCLUDE_MEM_MGR_FULL    memInit (pMemPoolStart, memPoolSize);	/* initialize memory pool */#else    memPartLibInit (pMemPoolStart, memPoolSize);/* initialize memory pool */#endif /* INCLUDE_MEM_MGR_FULL */#ifdef	INCLUDE_SHOW_ROUTINES     memShowInit ();				/* initialize memShow routine */#endif	/* INCLUDE_SHOW_ROUTINES */#if	defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_FULL)    usrMmuInit ();				/* initialize the mmu */#endif	/* defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_FULL) */    /* set up system timer */    sysClkConnect ((FUNCPTR) usrClock, 0);	/* connect clock ISR */    sysClkRateSet (60);				/* set system clock rate */    sysClkEnable ();				/* start it */    /*      * select sould be initialized after NFS and RPC for proper delete     * hook order but _func_selWakeupListInit should be set      * before tyLib module (SPR #3314).     */#ifdef  INCLUDE_SELECT    _func_selWakeupListInit     = (FUNCPTR) selWakeupListInit;#endif	/* INCLUDE_SELECT */    /* initialize I/O system */#ifdef  INCLUDE_IO_SYSTEM    iosInit (NUM_DRIVERS, NUM_FILES, "/null");    consoleFd = NONE;                           /* assume no console device */#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_TERMINAL);	}#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);	    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_TERMINAL);		}	    }	}#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_TERMINAL);	    }	}#endif	/* INCLUDE_PC_CONSOLE */#endif  /* !INCLUDE_TYCODRV_5_2 */    ioGlobalStdSet (STD_IN,  consoleFd);    ioGlobalStdSet (STD_OUT, consoleFd);    ioGlobalStdSet (STD_ERR, consoleFd);#endif  /* INCLUDE_IO_SYSTEM */		    /* initialize symbol table facilities */#ifdef	INCLUDE_SYM_TBL    hashLibInit ();			/* initialize hash table package */    symLibInit ();			/* initialize symbol table package */#ifdef 	INCLUDE_SHOW_ROUTINES     symShowInit ();			/* initialize symbol table show */#endif	/* INCLUDE_SHOW_ROUTINES */#endif	/* INCLUDE_SYM_TBL */    /* initialize exception handling */#if     defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK)    excInit ();				/* initialize exception handling */#endif  /* defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK) */#ifdef	INCLUDE_LOGGING    logInit (consoleFd, MAX_LOG_MSGS);	/* initialize logging */#endif	/* INCLUDE_LOGGING */#ifdef	INCLUDE_SIGNALS    sigInit ();				/* initialize signals */#endif	/* INCLUDE_SIGNALS */    /* initialize debugging */#ifdef	INCLUDE_DEBUG    dbgInit ();				/* initialize debugging */#endif	/* INCLUDE_DEBUG */    /* initialize pipe driver */#ifdef	INCLUDE_PIPES    pipeDrv ();				/* install pipe driver */#endif	/* INCLUDE_PIPES */    /* initialize standard I/O package */#ifdef	INCLUDE_STDIO    stdioInit ();			/* initialize standard I/O library */#ifdef  INCLUDE_SHOW_ROUTINES    stdioShowInit ();#endif  /* INCLUDE_SHOW_ROUTINES */#endif	/* INCLUDE_STDIO */    /* initialize POSIX queued signals */#if defined(INCLUDE_POSIX_SIGNALS) && defined(INCLUDE_SIGNALS)    sigqueueInit (NUM_SIGNAL_QUEUES); /* initialize queued signals */#endif    /* initialize POSIX semaphores */#ifdef  INCLUDE_POSIX_SEM    semPxLibInit ();			#ifdef INCLUDE_SHOW_ROUTINES    semPxShowInit ();#endif  /* INCLUDE_SHOW_POUTINES */#endif  /* INCLUDE_POSIX_SEM */    /* initialize POSIX message queues */#ifdef INCLUDE_POSIX_MQ    mqPxLibInit (MQ_HASH_SIZE);		#ifdef INCLUDE_SHOW_ROUTINES    mqPxShowInit ();#endif  /* INCLUDE_SHOW_ROUTINES */#endif  /* INCLUDE_POSIX_MQ */    /* initialize POSIX async I/O support */#ifdef INCLUDE_POSIX_AIO    aioPxLibInit (MAX_LIO_CALLS);#ifdef INCLUDE_POSIX_AIO_SYSDRV    aioSysInit (MAX_AIO_SYS_TASKS, AIO_TASK_PRIORITY, AIO_TASK_STACK_SIZE);#endif  /* INCLUDE_POSIX_AIO_SYSDRV */#endif  /* INCLUDE_POSIX_AIO */    /* initialize filesystems and disk drivers */#ifdef	INCLUDE_DOSFS    hashLibInit ();			/* initialize hash table package */    dosFsInit (NUM_DOSFS_FILES); 	/* init dosFs filesystem */#endif	/* INCLUDE_DOSFS */#ifdef	INCLUDE_RAWFS    rawFsInit (NUM_RAWFS_FILES); 	/* init rawFs filesystem */#endif	/* INCLUDE_RAWFS */#ifdef	INCLUDE_RT11FS    rt11FsInit (NUM_RT11FS_FILES); 	/* init rt11Fs filesystem */#endif	/* INCLUDE_RT11FS */#ifdef	INCLUDE_RAMDRV    ramDrv ();				/* initialize ram disk driver */#endif	/* INCLUDE_RAMDRV */#ifdef	INCLUDE_SCSI    /*     * initialize either the SCSI1 or SCSI2 interface; initialize SCSI2 when      * the SCSI2 interface is available.     */#ifndef INCLUDE_SCSI2    scsi1IfInit ();#else    scsi2IfInit ();#endif    /* initialize SCSI controller */    if (sysScsiInit () == OK)	{	usrScsiConfig ();			/* configure SCSI peripherals */        }    else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -