3、创建能够硬盘启动的bootrom【孔令宽】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

创建能够硬盘启动的bootrom
孔令宽2009-9-10 本文主要介绍创建bootrom的一般方法,关于添加rtl8139驱动,请参考《8139驱动完全版》。

要在计算机上运行vxworks,就需要一个引导程序来启动内核,bootrom就是这个功能。

而bootrom的运行需要一个载体,可以使软盘,也可以是硬盘。

现在软盘比较难找,所以本文主要介绍在硬盘上安装bootrom。

运行条件:
首先要注意,不是所有的PC机都能安装上VxWorks,最基本的条件是,需要PATA硬盘,现在流行的串口硬(SATA)盘vxworks 不支持。

————【华力创通公司工程师说的】。

而且由于X86平台(PC机)不像ARM平台,有JTAG调试接口,所以一旦VxWorks启动过程中出现问题,除了经验之外,没有办法知道到底是哪里出了错误。

这也是比较头疼的问题。

制作bootrom需要使用Tornado自带的BSP包(我们实验室里面用的BSP包是X86架构机器的BSP包,在安装完Tornado后安装的那个)。

根据计算机的CPU型号来选择,一般选择“pcPentium”这个BSP包,如果不能正常工作,再尝试用其他的BSP包。

这个文件夹的目录在C:\Tornado2.2\target\config 。

我们新建一个新的目录,名称自己定,我这里取名为KLKBSPExample,把pcPentium文件夹里面的所有文件复制到KLKBSPExample目录里。

在开始之前我先介绍一个DOS命令:
Displays the name of or changes the current directory.
CD [drive:][path] 进入到driver:盘path目录下
CD [..] 退出一级子目录(文件夹)
CD [\] 退出到根目录
Specifies that you want to change to the parent directory.
我们需要一个2进制文本编辑工具来修改代码内容,这样比较方便,我推荐用UltraEdit-32。

下面就可以开始工作了。

对于bootrom的修改我们需要修改的有几下几个方面:
1、添加PC CONSOLE 控制台界面,不然启动系统后会留在+++符号位置后,没有其
他显示,但实际上已经启动起来了。

2、在config.h里面保护焊硬盘驱动
3、修改启动项(bootline)。

实现硬盘启动。

4、修改热启动项,改为硬盘启动。

5、如果是双网卡,还需要修双网卡配置
(1)在config.h文件里面修改第643行:
#undef INCLUDE_PC_CONSOLE /* PC keyboard and VGA console */ 修改为:
#define INCLUDE_PC_CONSOLE /* PC keyboard and VGA console */ (2)在config.h文件里包含硬盘驱动。

#define INCLUDE_ATA /*包含IDE/EIDE(ATA) 硬盘驱动
#define INCLUDE_SHOW_ROUTINES /*包含ATA/IDE硬盘参数(用于调试) */
#define SYS_W ARM_TYPE SYS_W ARM_A TA /*定义热启动设备为硬盘*/
(3)修改#define DEFAULT_BOOT_LINE 宏定义。

例如:
#define DEFAULT_BOOT_LINE “ata=0,0(0,0)host:/ata0/vxWorks h=211.71.69.218 e=211.71.69.22:ffffff00 u=target pw=t o=fei”加上o=fei是为了能够将downloadable的程序下到目标机上
如果目标机上不能正常启动,把第一行改成ata=0,0
具体如下:
上图黑体的地方改成如上:
注意在bootline中加上网卡型号,并将它include,不加的话启动成功后会出现WDB错误。

加入硬盘驱动程序:
把#undef INCLUDE_ATA 改为#define INCLUDE_ATA
(4)定义热启动盘是硬盘。

(5)双网卡修改
如果是双网卡在C:\Tornado2.2\target\config\pcPentium\configNet.h中找到
END_TBL_ENTRY endDevTbl找到相应网卡类型,如intel(fei)原来为
#ifdef INCLUDE_FEI_END
{0, FEI82557_LOAD_FUNC, FEI82557_LOAD_STRING, FEI82557_BUFF_LOAN, NULL, FALSE},
#endif /* INCLUDE_FEI_END */
后改为
#ifdef INCLUDE_FEI_END
{0, FEI82557_LOAD_FUNC, FEI82557_LOAD_STRING, FEI82557_BUFF_LOAN, NULL, FALSE},
{1, FEI82557_LOAD_FUNC, FEI82557_LOAD_STRING, FEI82557_BUFF_LOAN, NULL, FALSE},
#endif /* INCLUDE_FEI_END */
定义完后,保存,关闭:
之后就可以生成bootrom了。

我们从开始菜单开始,开始–> 运行–> 输入cmd 点击确定,进入控制台程序:
图1:控制台程序(cmd)
之后按照下图输入命令:
图2:命令torvars
进入C:\Tornado2.2\host\x86-win32\bin目录,执行torvars指令,该指令的功能就是,使在任何目录都可以执行make 和mkboot指令。

运行结果如下图:
图3:torvars成功运行
之后返回根目录,之后进入到c:\tornado2.2\target\config目录下,运行列磁盘目录命令dir 可以看到config目录下的文件和文件夹。

如下所示:
图4:磁盘目录
之后用CD指令进入我们刚才建立的bsp文件夹,输入cd klkbspexample 回车。

如果以前编译过这个bsp,那么在开始之前需要运行一次指令“make clean”,清除以前生成的.o文件。

这里我们可以直接开始,输入“make bootrom”回车。

如果没有错误的话,就可以生成所需的bootrom。

图5:成功生成BSP
插入之前做好的启动U盘,运行指令“mkboot j: bootrom”,将bootrom生成到U盘上。

其中J:为U盘盘符,按实际情况填写。

在回车后会提示一个所操作磁盘为硬盘的警告,选择y继续,之后会弹出如下一个警告框:
图6:警告框
点击关闭按钮关闭它,这样就可以顺利把bootrom生成到U盘上面了。

接下来要做的就是把bootrom和vxworks内核做到硬盘上,关于VxWorks内核制作请参考相关文档。

这里不作介绍。

下面的工作需要用到的指令有3个:
COPY 复制文件
LOCK 给硬盘写入启动项
VXSYS 写入VxWorks 引导信息。

用U盘引导计算机,进入U盘DOS系统根目录C:\>。

用COPY命令复制bootrom.sys和vxowrks两个文件到D盘根目录,所需指令为:COPY BOOTROM.SYS D: 回车
COPY VXWORKS D: 回车
之后运行LOCK指令。

按提示操作即可,成功会显示一条成功信息。

LOCK D: 回车
最后运行VXSYS D:回车同样按提示操作,成功后会提示一条成功信息。

至此,引导制作完成,重启机器后如果没有异常,就可以进入到VxWorks系统了。

相关文档
最新文档