VxWorks里有一个叫Kernel Shell的组件
连接TargetServer后,Host端可以启动一个叫HostShell的工具
而Bootrom在启动过程中,也会加载一个Shell,全称应该是BootLoader Application Command Shell,就叫它BootShell吧
咱俩来看看这个BootShell长什么样
默认情况下,VxWorks和Bootrom都是用串口0(波特率9600)做为系统的IO设备
当Target的Arch是X86时,可以定义宏INCLUDE_PC_CONSOLE,这样就会使用虚拟的pcConsole来做系统IO
而pcConsole又被bind到物理的显示器和键盘上
好了,不管用串口0还是pcConsole,我们启动Bootrom。默认它都是进入一个7秒的倒计时,这时候给它输入任意字符,就会进入BootShell
通过h命令,可以看到这个Shell支持的所有操作
常用的命令有3个:p - print,c - change,@- boot
p就是查看当前的Bootline
Bootline的这个初始值来自bsp/config.h里的宏DEFAULT_BOOT_LINE
因此可以通过修改这个宏(然后重新BuildBootrom),来调整Bootline,或者使用c命令
执行c命令后,每按一次回车,就会显示一个参数。如果要修改某个参数,在相应的参数后面直接追加新的值就可以。例如给Target改个名字
最后执行@命令,Bootrom就会按照当然的参数来加载系统镜像VxWorks了
而VxWorks应该放到什么位置呢?那就要看当前的Bootrom支持哪些bootdevice了,用h命令就可以看到。例如我当前这个Target可以使用本地的文件系统'/ata0:1'或者网卡'lnPci0'。
咱们先看看网卡:
'lnPci0'这个名字怎么来的?
首先得知道Target的网卡是什么型号,然后在config.h中定义它的宏
VxBus支持的网卡有这些
传统End支持的有这些
然后找到网卡驱动的头文件,里面定义了devicename
'lnPci0'里的那个0就表示物理上的第0个网卡
其它常见的网卡有:
Bootrom通过网卡来加载VxWorks系统镜像时,应用层默认使用的是FTP协议,从远程的FTPServer下载文件。通过Bootline的Flags参数,也可以改为TFTP
因此,我目前的Bootline表示的意思是:给自己的Vxworks起个名字'ttt',加载网卡AMDAm79C97X,设置IP地址为192.168.11.111。然后做为FTP的客户端,访问一个IP为192.168.11.1、名字为'host:'的FTP服务器,下载一个叫做'vxWorks'的文件,并boot。登录FTP时,使用的用户名是'vm',密码是'vm'。注意VxWorks会给网络设备追加一个冒号
那么Windows端就需要启动一个FTPServer,例如使用Workbench或Tornado默认集成的WFTPD。当然你使用其它的FTPServer工具也没问题
打开这个wftpd32,添加一个用户
User Name和Password与Bootline里参数一致,例如目前的'vm'
HomeDirectory指向VxWorks文件所在的目录,一般就是VIP工程里的default文件夹
为了方便观察,我们可以打开这个Server的log功能
这时Bootrom里执行@命令,通过FTP下载VxWorks,在FTPServer就可以看到下载过程
试试TFTP。CurrentDirectory指向VxWorks所在的目录,即default文件夹
把Bootline的Flags改为0x80,use和ftppassword就无所谓了,因为用不到了
运行一下,没有问题
最后再来看看从本地文件系统里加载VxWorks。
通过h命令,看到本地有个设备上挂接了文件系统/ata0:1(其实就是我这个Target的硬盘,只有一个分区)
修改bootdevice和file name
这个other参数表示:从文件系统加载VxWorks时,同时要加载的网卡(这里是lnPci0+192.168.11.111)
当然了,这样做的前提是,Target的文件系统里得有这个VxWorks文件
这正是:
Boot Shell有命令(h),加载系统并执行(@)。
网卡设备连远程(FTP),文件系统也可用(fs)。
我是泰山,专注VX 14年(+10个月)!
联系客服