Vxworks启动代码usrRoot()函数分析(二)

这两天都很忙,差点忘了自己的方向。偶尔看到一个视频问人的梦想是什么?突然为之一振,说的很好,梦想就是做让人坚持而感到幸福的事。

         接着看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()共享内存机制初始化。

         vmTextProtectintVecTableWriteProtect将代码段以及中断向量表部分内存写保护。

之后就是一些机制的支持、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要强大的多,真的值得学习。

你可能感兴趣的:(Vxworks启动代码usrRoot()函数分析(二))