这两天都很忙,差点忘了自己的方向。偶尔看到一个视频问人的梦想是什么?突然为之一振,说的很好,梦想就是做让人坚持而感到幸福的事。
接着看usrRoot这个函数,说实话这个函数真是vxworks初始化的精华,功能强大,条理清晰。
usrBootLineInit(),初始化系统boot命令,如果在flash的相应位置没有存放boot命令,那么就使用默认的启动命令,可以看到,默认的启动命令如下:
#elifdefined(CPU_920T)
# define DEFAULT_BOOT_LINE \
"fei(0,0)host:/tor2/target/config/integrator920t/vxWorks " \
"h=90.0.0.3 e=90.0.0.50:ffffff00 u=targettn=targetname"
默认的bootline是去主机host:/tor2/target/config/integrator920t/vxWorks位置去下载内核的,对于非bootrom类型vxworks镜像,因为内核已经拷贝到ram中了,就可以直接启动。
usrNetInit (BOOT_LINE_ADRS);使用BOOT_LINE_ADRS参数初始化以太网,看出主机IP为90.0.0.3,本机IP为e=90.0.0.50:ffffff00。
usrSmObjInit()共享内存机制初始化。
vmTextProtect、intVecTableWriteProtect将代码段以及中断向量表部分内存写保护。
之后就是一些机制的支持、C++的支持、初始化Wind Web Server的支持、WDB debug调试代理(很多种通信方式),下面就是打印系统的一些信息了:
printf("\n\n");
printf("%23s\n\n", runtimeName);
printf("Copyright 1984-2002 Wind RiverSystems, Inc.\n\n");
printf(" CPU: %s\n",sysModel ());
printf(" Runtime Name: %s\n",runtimeName);
printf("Runtime Version: %s\n", runtimeVersion);
printf(" BSP version: "BSP_VERSION BSP_REV "\n");
printf(" Created: %s\n",creationDate);
printf(" WDB Comm Type: %s\n",WDB_COMM_TYPE_STR);
printf(" WDB: %s.\n\n",
((wdbRunsExternal () || wdbRunsTasking ())?
"Ready" : "Agent configurationfailed") );
这就是非常熟悉的开机画面。
之后根据是否需要登录密码添加一个additional users,用户名为"target",密码为"RcQbRbzRyc",不知道vxworks为啥要取一个这么难记得密码。
printLogo ();打印vxworks logo 这个图居然是一个数组。之后打印一些跟上面类似的系统信息。
usrHtmlInit ();vxworks的功能还真是强大,还能创建一个html页面。
到此usrRoot这个函数就结束了,vxworks就跑起来了,下面将执行关于板卡的具体操作,之后将分析有关2410vxworksBSP的代码。从这个函数看来,vxworks支持了足够多的功能,比QNX要强大的多,真的值得学习。