VxWorks网络加载

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在网络初始化时加载END和subEND,并在其中初始化IP协议栈,在TMS初始化时绑定IP到SubEND,单播路由协议初始化在TMS初始化中,根据MIB配置确定初始化哪个单播路由协议,RIP初始化可以在网络初始化时,OSPF初始化在TMS 初始化中根据TMSMIB配置确定,END的IP地址在网络初始化时设置,SwEND的IP地址在网管配置时设置。

一、在configAll.H中定义了所有定置系统配置的宏

《INCLUDED SOFTWARE FACILITIES》:定义了基本组件;

《EXCLUDED FACILITIES》:定义了扩充组件,缺省不包括;

《KERNEL SOFTWARE CONFIGURATION》:内核运行的基本参数定义,包括文件个数、任务个数等等;

《"GENERIC" BOARD CONFIGURATION》:板通用属性定义;《"MISCELLANEOUS" CONSTANTS》:共享的信号量以及相关对象个数定义;《INCLUDED NETWORK FACILITIES》:包括的网络协议组件定义;《EXCLUDED NETWORK FACILITIES》:未包括的网络协议组件定义;

二、在bootConfig.C中的流程

usrInit()的流程,该例程被rom—start()中的boot代码调用。

调用intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS)设置中断向量;

调用excVecInit ()设置异常向量;

调用sysHwInit ()初始化硬件;

调用usrKernelInit ()配置VXWORK内核;

调用kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE,启动usrRoot();usrRoot()有多个,一个在bootConfig。C中,一个在usrConfig。C中。

三、bootConfig.C中的usrRoot()流程(是BOOTROM用的)

调用 memInit (pMemPoolStart, memPoolSize);/* XXX select between memPartLibInit */初始化内存;

调用 sysClkConnect ((FUNCPTR) usrClock, 0);/* connect clock interrupt routine */

sysClkRateSet (60); /* set system clock rate */

sysClkEnable (); /* start it */

初始化系统时钟;

调用 iosInit (NUM_DRIVERS, NUM_FILES, "/null");初始化文件系统;

根据配置的串口和控制台口个数,初始化串口;

调用 wdbConfig(); /* configure and initialize the WDB agent */初始化WDB;

调用 pipeDrv (); /* install pipe driver */

excInit (); /* init exception handling */

excHookAdd ((FUNCPTR) bootExcHandler); /* install exc handler */ logInit (consoleFd, 5); /* initialize logging */

初始化相关功能模块;

调用 hashLibInit (); /* hashLib used by dosFS */初始化DOS文件系统;根据配置选择

bootAoutInit (); /* use a.out format */

#else /* coff or ecoff */

#if defined(INCLUDE_ECOFF)

bootEcoffInit (); /* use ecoff format */

#else /* coff */

#if defined(INCLUDE_COFF)

bootCoffInit (); /* use coff format */

#else /* coff */

#if defined(INCLUDE_ELF)

bootElfInit (); /* use elf format */

之上的其一初始化;

调用 if (muxLibInit() == ERROR)初始化MUX;

根据END个数加载END;

调用bootCmdLoop创建"tBoot"任务,启动下一步初始化;

四、bootCmdLoop()流程

调用key = autoboot (timeout);启动初始化;

五、autoboot()流程

调用 if (bootLoad (BOOT_LINE_ADRS, &entry) == OK)

go (entry); /* ... and never return */

从FLASH中读出BOOTLINE配置的启动文件,并运行该启动文件。

三、usrConfig.C中的usrRoot流程(是版本启动用的)

usrRoot()流程

usrRoot()是VXWORKS进入多任务环境下创建的第一个任务,用来初始化各种系统参数,并启动其它任务。

入口参数: char * pMemPoolStart, /* start of system memory partition */ unsigned memPoolSize /* initial size of mem pool */

调用 memInit (pMemPoolStart, memPoolSize); /* initialize memory pool */ 或memPartLibInit (pMemPoolStart, memPoolSize);/* initialize memory pool */

初始化系统内存池;

调用memShowInit ()初始化内存显示例程;

调用usrMmuInit ()初始化MMU单元;

调用 sysClkConnect ((FUNCPTR) usrClock, 0); /* connect clock ISR */ sysClkRateSet (60); /* set system clock rate */

sysClkEnable (); /* start it */

初始化系统时钟;

初始化_func_selWakeupListInit;

调用 iosInit (NUM_DRIVERS, NUM_FILES, "/null");初始化I/O系统;

安装控制台驱动,创建控制台设备,设置BAND率;

相关文档
最新文档