VxWorks网络协议栈初始化流程Word文档格式.docx

上传人:b****5 文档编号:19938680 上传时间:2023-01-12 格式:DOCX 页数:11 大小:19.82KB
下载 相关 举报
VxWorks网络协议栈初始化流程Word文档格式.docx_第1页
第1页 / 共11页
VxWorks网络协议栈初始化流程Word文档格式.docx_第2页
第2页 / 共11页
VxWorks网络协议栈初始化流程Word文档格式.docx_第3页
第3页 / 共11页
VxWorks网络协议栈初始化流程Word文档格式.docx_第4页
第4页 / 共11页
VxWorks网络协议栈初始化流程Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

VxWorks网络协议栈初始化流程Word文档格式.docx

《VxWorks网络协议栈初始化流程Word文档格式.docx》由会员分享,可在线阅读,更多相关《VxWorks网络协议栈初始化流程Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

VxWorks网络协议栈初始化流程Word文档格式.docx

/*XXXselectbetweenmemPartLibInit*/

初始化内存;

调用sysClkConnect((FUNCPTR)usrClock,0);

/*connectclockinterruptroutine*/

sysClkRateSet(60);

/*setsystemclockrate*/

sysClkEnable();

/*startit*/初始化系统时钟;

调用iosInit(NUM_DRIVERS,NUM_FILES,"

/null"

);

初始化文件系统;

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

调用wdbConfig();

/*configureandinitializetheWDBagent*/初始化WDB;

调用pipeDrv();

/*installpipedriver*/

excInit();

/*initexceptionhandling*/excHookAdd((FUNCPTR)bootExcHandler);

/*installexchandler*/

logInit(consoleFd,5);

/*initializelogging*/初始化相关功能模块;

调用hashLibInit();

/*hashLibusedbydosFS*/初始化DOS文件系统;

根据配置选择

bootAoutInit();

/*usea.outformat*/#else/*cofforecoff*/

#ifdefined(INCLUDE_ECOFF)

bootEcoffInit();

/*useecoffformat*/#else/*coff*/

#ifdefined(INCLUDE_COFF)

bootCoffInit();

/*usecoffformat*/#else/*coff*/

#ifdefined(INCLUDE_ELF)

bootElfInit();

/*useelfformat*/之上的其一初始化;

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

根据END个数加载END;

调用bootCmdLoop创建"

tBoot"

任务,启动下一步初始化;

四、bootCmdLoop()流程

调用key=autoboot(timeout);

启动初始化;

五、autoboot()流程

调用if(bootLoad(BOOT_LINE_ADRS,&

entry)==OK)go(entry);

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

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

usrRoot()流程

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

入口参数:

char*pMemPoolStart,/*startofsystemmemorypartition*/

unsignedmemPoolSize/*initialsizeofmempool*/

/*initializememorypool*/

或memPartLibInit(pMemPoolStart,memPoolSize);

/*initializememorypool*/

初始化系统内存池;

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

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

/*connectclockISR*/

/*setsystemclockrate*/sysClkEnable();

/*startit*/

初始化系统时钟;

初始化_func_selWakeupListInit;

初始化I/O系统;

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

初始化PC控制台设备;

调用ioGlobalStdSet(STD_IN,consoleFd);

ioGlobalStdSet(STD_OUT,consoleFd);

ioGlobalStdSet(STD_ERR,consoleFd);

将标准输入、输出、错误输出定向到控制台设备上;

调用hashLibInit();

/*initializehashtablepackage*/symLibInit();

/*initializesymboltablepackage*/symShowInit();

/*initializesymboltableshow*/初始化系统符号表;

调用excInit()初始化异常处理;

调用logInit(consoleFd,MAX_LOG_MSGS)初始化登录;

调用sigInit()初始化信号量库;

调用dbgInit()初始化调试库;

调用pipeDrv()初始化管道;

stdioInit();

/*initializestandardI/Olibrary*/stdioShowInit();

初始化标准I/O;

调用sigqueueInit(NUM_SIGNAL_QUEUES);

/*initializequeuedsignals*/

semPxLibInit();

semPxShowInit();

mqPxLibInit(MQ_HASH_SIZE);

mqPxShowInit();

aioPxLibInit(MAX_LIO_CALLS);

aioSysInit(MAX_AIO_SYS_TASKS,AIO_TASK_PRIORITY,AIO_TASK_STACK_SIZE);

初始化POSIX;

/*initializehashtablepackage*/

dosFsInit(NUM_DOSFS_FILES);

/*initdosFsfilesystem*/

初始化DOS文件系统;

调用rawFsInit(NUM_RAWFS_FILES);

/*initrawFsfilesystem*/初始化原始文件系统;

调用rt11FsInit(NUM_RT11FS_FILES)初始化RT11文件系统;

调用ramDrv()初始内存虚拟盘;

初始化SCSI;

调用fdDrv(FD_INT_VEC,FD_INT_LVL)初始化软驱;

调用ideDrv(IDE_INT_VEC,IDE_INT_LVL,IDE_CONFIG)初始化IDE盘;

初始化硬盘驱动;

初始化LPT;

调用pcmciaShowInit();

/*installPCMCIAshowroutines*/

pcmciaInit();

/*initPCMCIALib*/初始化PCMCIA;

调用tffsDrv()初始化TFFS;

调用fioLibInit()初始化格式化I/O;

调用floatInit()初始化浮点设备;

调用mathSoftInit()初始化软浮点设备;

调用mathHardInit()初始化硬浮点设备;

调用spyLibInit()初始化CPU监视工具;

调用timexInit()初始化函数定时工具;

调用envLibInit(ENV_VAR_USE_HOOKS)初始化环境变量;

初始化NTPASSFS;

调用moduleLibInit()初始化模块管理器;

调用symSyncLibInit()同步目标机与主机的符号表;

调用sysFFSMount();

调用

usrBootLineInit(sysStartType);

/*crackthebootline*/

usrNetInit(BOOT_LINE_ADRS);

/*initializenetworksupport*/

初始化网络通讯协议;

初始化PASSFS;

初始化DOS_DISK;

调用usrSmObjInit(BOOT_LINE_ADRS)初始化共享内存对象;

初始化WindMP;

写保护文本段和向量表;

调用selectInit()初始化SELECT;

调用sysSymTbl=symTblCreate(SYM_TBL_HASH_SIZE_LOG2,TRUE,memSysPartId)创建系统符号表;

调用sysSymTbl=symTblCreate(SYM_TBL_HASH_SIZE_LOG2,TRUE,memSysPartId);

netLoadSymTbl()

创建网络符号表;

初始化C++库;

初始化WindWeb服务器;

调用httpd()初始化HTTP;

调用rBuffLibInit();

rBuffShowInit();

/*installrBuffshowroutine*/

初始化RBUFF;

调用windviewConfig()初始化WINDVIEW;

调用wdbConfig();

初始化调试接口;

打印SHELL界面;

初始化交互界面,提示用户输入信息,口令验证;

调用usrUglInit()初始化UGL;

调用javaConfig()初始化JAVA;

调用usrHtmlInit()初始化HTML;

调用USER_APPL_INIT初始化用户应用程序;

TmsAppInit()

四、网络协议栈初始化流程

在usrnetwork.C中:

在usrRoot()中调用

usrNetInit

char*bootString/*bootparameterstring*/

初始化网络协议栈

将BOOTLINE中的初始化字串写入初始化结构变量中,没有的赋缺省值。

初始化CPU号,以利用VME通讯;

初始化插口层、BSD插口和路由插口;

调用hostTblInit()初始化主机表;

(在hostlib。

C中,该表用于DNS)调用usrNetProtoInit()初始化各种协议,包括IP、RIP、IP过滤、UDP、TCP、ICMP、IGMP、多播路由、OSPF;

调用netLibInit()初始化网络库,包括创建网络任务环、创建网络处理任务、初始化缓冲区、接口初始化、

添加INTE域、INTE域初始化、路由表初始化、增强路由初始化、多播HASH表初始化、网络类型初始化;

调用muxLibInit()初始化MUX;

调用muxAddrResFuncAdd(M2_ifType_ethernet_csmacd,0x800,ipEtherResolvRtn)初始化以太网的IP地址解析;

调用muxAddrResFuncAdd(M2_ifType_atm,0x800,ipAtmResolvRtn)初始化ATM的IP地址解析;

调用muxAddrResFuncAdd(M2_ifType_ppp,0x800,ipPppResolvRtn)初始化POS的IP地址解析;

(此处初始化了所有外部链路类型的IP地址解析函数,形成函数链表,在IP绑定时,根据END接口类型和协议类型,获取地址解析函数,就可以完成地址解析了)

读endDevTbl,调用muxDevLoad()加载END并调用muxDevStart()启动END;

初始化PPP;

初始化DHCP,如果定义了Relay且未定义Server,则初始化Relay,初始化Client;

初始化UL接口;

设置加载启动接口,从PPP、SLIP和BACKPLANE中挑选其一,如果没有则查其它选项定义了其它设备,

则从其它设备加载;

根据其它设备的不同属性,

添加接口,设置IP地址;

若从磁盘启动则初始化必要的END:

{

调用pEnd=endFindByName(params.other,params.unitNum);

获取一个other中的END;

调用(ipAttach(params.unitNum,params.other)!

=OK)绑定IP协议栈到该END上;

设置attached=TRUE;

如果~attached,调用usrNetIfAttach(params.other,params.unitNum,params.ead)!

=OK)

初始化BSD类型的接口;

调用usrNetIfConfig(params.bootDev,params.unitNum,params.ead,

params.targetName,

netmask)!

=OK)配置IP地址

}

如果从以太网启动,则:

调用(ipAttach(params.unitNum,params.other)!

=OK)

则初始化BSD类型的接口;

=OK)配置IP地址;

如果不从BACKPLANE启动,则设置此BACKPLANE为第二接口:

调用usrNetIfAttach(bpDev,params.unitNum,params.bad);

(void)usrNetIfConfig(bpDev,params.unitNum,params.bad,

(char*)NULL,netmask);

配置BACKPLANE;

如果params.targetName[0]目标主机名不为空,则调用:

usrNetIfAttach("

lo"

0,"

127.0.0.1"

usrNetIfConfig("

"

localhost"

0);

添加环回接口;

若从BACKPLANE启动,则更改DHCPClient属性;

初始化ARP代理服务器;

初始化DHCPClient,并设置IP地址到BOOTLINE中;

如果定义了网关地址,则设置路由;

调用hostAdd(params.hostName,params.had);

将HOST加入到主机表;

设置与其它VXWORKS通讯的名字和联系

创建远程文件访问设备;

初始化ZBUF插口;

(目前没有使用)

初始化tcpTraceInit()跟踪调试接口;

调用rlogInit(),启动远程登录;

调用telnetInit(),启动TELNET;

调用rpcInit(),启动RPC;

调用ftpdInit((FUNCPTR)loginUserVerify,0),启动FTP;

调用tftpdInit(0,0,0,FALSE,0),启动TFTPServer;

初始化NFS;

初始化DHCPServer或Relay;

调用sntpcInit(SNTP_PORT),初始化SNTP;

调用pingLibInit(),初始化PING;

调用usrSnmpdInit(),初始化SNMPAgent;

调用ripLibInit(RIP_SUPPLIER,RIP_GATEWAY,RIP_MULTICAST,RIP_VERSION,

RIP_TIMER_RATE,RIP_SUPPLY_INTERVAL,RIP_EXPIRE_TIME,

RIP_GARBAGE_TIME);

初始化RIP;

调用usrResolvInit()初始化DNS;

五、configTms.H定义

在configTms.H中:

定义:

#defineBOARD_NAME"

Broadcom"

#defineHOST_NAME_DEFAULT"

TMS_HOST"

#defineTARGET_NAME_DEFAULT"

WRN-Broadcom"

#defineHOST_USER_DEFAULT"

TMS_User"

#defineHOST_PASSWORD_DEFAULT"

"

#defineSCRIPT_DEFAULT"

#defineOTHER_DEFAULT"

#definePRODUCT_NAME"

TMSBCM5600SwitchProduct"

等初始化BOOTLINE缺省名。

此外还定义了

TMS相关的实现宏。

六、在sysSwitch.C中

TMSAppInit()流程:

调用sysClkRateSet(SYSTEM_CLK_RATE)设置时钟速率;

调用sysNvmCreate();

初始化NVM,需要一段时间;

调用portMapInit()初始化端口映射;

调用portMapIfStructInit()初始化端口、接口映射;

调用TASK_START(NVM_APPNAME,nvmInit,&

nvmData,NULL,"

high"

(8*1024));

创建NVM数据维护任务;

调用appManagerClr(APP_MANAGER_IDB);

MODULE_START(IDB_APPNAME,idbInit,NUM_OF_OBJECTS,UM_OF_MODULES);

appManagerSet(APP_MANAGER_IDB);

初始化IDB+模块;

读取NVM更新系统的MAC地址;

调用muxIterateByName(SW_DEVICE_NAME,updateEndDevices,SW_DEVICE_NAME);

muxIterateByName(AG_DEVICE_NAME,updateEndDevices,AG_DEVICE_NAME);

muxIterateByName(AP_DEVICE_NAME,updateEndDevices,AP_DEVICE_NAME);

muxIterateByName(HW_DEVICE_NAME,updateEndDevices,HW_DEVICE_NAME);

更新END的MAC地址;

调用muxIterateByName(SW_DEVICE_NAME,swIpAttach,NULL)添加相应的网络接口;

初始化虚拟I/O消息服务;

初始化LOGO-TO-NULL;

如果环回接口未初始化,则初始化环回接口;

如果禁止IP路由,则调用m2IpGroupInfoSet(varToSet,&

ipVars)设置协议栈全局变量;

调用sysMib2Init();

初始化MIB;

调用envoyTMSInit();

初始化SNMP;

调用MODULE_START(SWAPI_APPNAME,bcmSwapiInit,0,0);

MODULE_START(RFC1213_APPNAME,rfc1213Init,0,0);

MODULE_START(RFC1907_APPNAME,rfc1907Init,0,0);

MODULE_START(RFC1493_APPNAME,rfc1493Init,0,0);

MODULE_START(RFC2233_APPNAME,rfc2233Init,0,0);

MODULE_START(RFC2665_APPNAME,rfc2665Init,0,0);

设置基本MIB;

调用MODULE_START(RFC2571_APPNAME,rfc2571Init,0,0);

MODULE_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1