VXworks启动参数
bootrom各个参数的含义。
boot device
引导设备的类型。必须是boot loader已包含的驱动程序名。boot loader shell中使用devs或者h命令可显示可用设备列表。
引导设备通常是网卡、软盘、硬盘等。
网卡直接写驱动程序的名,比如ln、gei、enp等;
对于ATA硬盘,要写ata=controllerNum, driveNum(如ata=0,0)的格式;
对于SCSI硬盘,要写scsi=id,lun的格式;
一般情况需要硬盘启动也可以直接写成 fs;
对于软盘,要写fd=controllerNum, driveNum的格式;
unit number
具体引导设备的设备号,第一个设备的编号是0。
processor number
底板上有多个目标系统时,启动的目标的处理器号。底板控制器的处理器号必须设为0。
host name
用于引导的主机系统名。它只是引导起来的VxWorks中用来标识主机的名字(比如代码中用这个名字调用hostGetByName就能得到主机的地址),不一定就是主机自己(在网络中)使用的名字。
file name
要引导的VxWorks image的完整路径。使用target server时,这个名字被返回给主机,通常主机用它来定位image在主机上的位置。最长160字节,包括结尾空字符。
inet on ethernet (e)
被引导目标系统以太网接口的IP地址及子网掩码。IP地址用‘.’分隔的十进制数,后面跟16进制的子网掩码。网络引导时,这个是我们(被引导机器)自己的地址。
本机ip地址,每台同时使用的主板要不一样。
inet on backplane (b)
被引导目标系统底板网络接口的IP地址。对于一般的环境,我们没有这个东西。
host inet (h)
用于引导的主机系统的IP地址。网络引导时,这个是引导服务器(比如ftp服务器)的地址。
gateway inet (g)
如果被引导目标和主机不在一个物理网络,需要路由器,这是路由器地址。
可以简单理解为这就是网关。
user (u)
从主机装载VxWorks image文件时用于访问主机的用户ID,这个用户必须具有VxWorks image文件的“读”权限。
ftp password (pw)
对应上述用户ID的密码。通过FTP或者TFTP访问文件时,必须有密码,如果密码为空,将使用UNIX rsh协议访问主机。
flags (f)
一些标志位的集合,每个标志代表一个特殊的选项。这些标志定义如下:
0x00 = 在8秒倒计时后自动引导程序。
0x01 = 即使processor number为0,也不要激活系统控制器。(这个其实是由使用的板子解释的,所以应参考目标板子的资料)
0x02 = 载入所有VxWorks符号表,而不只是全局部分。
0x04 = 不要自动引导
0x08 = 快速自动引导,也就是自动引导前等的时间短一些。
0x20 = 禁用安全登录。
0x80 = 用TFTP(而不是FTP)来引导。
0x400 = 调试模式。
target name (tn)
目标系统的名字,所谓 目标系统,就是被引导打系统,VxWorks本身。这个名字会被加入host table,所以代码中用这个名字调用hostGetByName就能得到系统自己的名字。
startup script (s)
启动脚本。如果引导的VxWorks image包含kernel shell,系统引导后,这个参数指定的路径和文件名会被传递给kernel shell执行。启动脚本中,只能包含shell的C命令。注意kernel shell和boot loader shell互相有冲突。(如果系统配置好了,这个脚本也可以用来RTP应用。)
other (o)
这个参数通常没有什么用,由应用程序来解释。但是,当我们不从网络引导又需要激活网络时,这个参数就非常重要了,它被用来指定默认的网络接口。跟boot device参数一样,我们仍然使用驱动程序的名字来标识设备。
比如,如下的bootline,
ata=0,0(0,0)mars:/ata0a/vxWorks h=192.168.86.185 e=192.168.86.92 u=fred pw=secret tn=vx66 o=gei
可从第一个ATA硬盘引导,并且激活(第一个)gei网络端口,同时设置本机(gei端口)的IP地址为“192.168.86.92”,本机名字叫“vx66”,服务器(主机)的IP地址为“192.168.86.185”,名字为“mars”。
这样设置之后,网络可以像从网络启动一样的使用。
除了上面的bootline之外,要(想像使用本地文件一样)直接使用远程(主机)文件,还需要netDrv。在VxWorks内核工程中,设置 INCLUDE_NET_DRV 后可以使用netDrv。netDrv通常通过ftp或者rsh在主机(host,或俗称服务器)和目标机器(target,即VxWorks机器)之间传递文件。
VxWorks引导程序(bootloader)从网络启动时,就是使用bootline中的参数创建了一个netDrv实例来下载run-time image。具体参见源码文件usrNetwork.c中的usrNetInit()。
如果VxWorks内核参数设置了 INCLUDE_NET_DRV,并且像前面那样在bootline指定了网络接口,那么从硬盘启动后,照样可以直接使用远程(主机上的)文件。关于netDrv的详细信息,可参见VxWorks文档,这里只是给个索引,我想已经足够了。