VxWorks入门07:本地启动

系列索引:VxWorks开发入门系列教程索引

上一篇:VxWorks入门06:虚拟机中运行

在上一篇的VxWorks入门06:虚拟机中运行中,启动文件是从FTP里面读取的,本文介绍把所有文件放置于目标平台操作系统中,并从本地启动VxWorks。

制作bootrom

bootrom是VxWorks操作系统集成的启动代码。

1、首先需要针对不同类型CPU配置BSP,这里需要修改$(WIND_BASE)\target\config\Pentium4\Config.h文件。因为前一篇文章我们修改过一些东西,所以我们重新复制一份原始的,在此基础上修改。

打开文件,修改第340行如下信息:

1
2
3
4
#elif	(CPU == PENTIUM)
#define DEFAULT_BOOT_LINE \
"ata=0,0(0,0)host:/ata0a/vxWorks h=90.0.0.3 e=90.0.0.50 u=target"
/* "lnPci(0,0)host:d:\\vxWorks h=192.168.0.32 e=192.168.0.36 u=target pw=vxworks o=fei" */

注意这个ata0a

其中,本文的虚拟机使用的CPU型号为PENTIUM,根据具体情况更改对应CPU下的配置项。引号中的内容含义是,配置了一个从目标机硬盘加载VxWorks镜像文件,注释掉的内容为从网络中主机加载VxWorks镜像文件。

h e不重要,毕竟没有用到网络相关的。

再修改如下信息:

将第362行的

1
#define SYS_WARM_TYPE		SYS_WARM_FD /* warm start device */

修改为:

1
#define SYS_WARM_TYPE		SYS_WARM_BIOS /* warm start device */

不更改的话,当系统引导时就会提示“0x28fe10(tBoot):sysNvRamGet:open failed”。(我没测试过,作者著)

将第425行的

1
#undef	INCLUDE_ATA		/* include IDE/EIDE(ATA) hard disk driver */

修改为:

1
#define	INCLUDE_ATA		/* include IDE/EIDE(ATA) hard disk driver */

将第593行的

1
#undef	INCLUDE_FEI_END         /* (END) Intel 8255[7/8/9] PCI interface */

修改为:

1
#define	INCLUDE_FEI_END         /* (END) Intel 8255[7/8/9] PCI interface */

我的是显示为

1
2
3
/*#ifndef INCLUDE_VXBUS*/
#define INCLUDE_FEI_END /* (END) Intel 8255[7/8/9] PCI interface */
/*#endif /* !INCLUDE_VXBUS */

为了达到同样的效果,我把上下两行注释掉了。

然后按照前一篇文章的流程继续编译BSP和镜像,得到上一篇一样的五个文件。

启动DOS

boot

可以看到启动正常了(如果启动不正常,应该是输出一行文字V1.6 BOOTROM SYS),但是显示不正常。

将config.h的第944行起

1
#undef INCLUDE_PC_CONSOLE                /* PC keyboard and VGA console */

修改为

1
#define INCLUDE_PC_CONSOLE                /* PC keyboard and VGA console */

重新编译运行

启动中

booting

启动完成

finished

完整地配置文件和结果文件在VxWorks_Freshman的4.hd中。

下一篇:VxWorks入门08:qemu中运行


VxWorks入门07:本地启动
https://feater.top/vxworks/boot-from-local-disk
作者
JackeyLea
发布于
2021年10月15日
许可协议