2.3. 启动机器

首先,配置终端程序,在我们的例子中是 minicom,按以下方式配置:9600 bps,8 位,无奇偶校验,1 个停止位,并且没有任何类型的流控制。Linux 中的串口应该是/dev/ttyS0对于COM1, /dev/ttyS1对于COM2等等。

启动目标机。您应该在终端屏幕上看到 vxWorks 引导加载程序,并且应该能够通过按空格键来停止启动序列。

Note

我们不能使用 vxWorks 引导加载程序来加载 Linux 内核,因为它会在 ELF 头部查找并将映像加载到那里写入的地址。然而,使用虚拟内存的 Linux 内核被链接到一个高内存地址,而 vxWorks 无法处理。

一旦目标机停止,运行 VisionICE 软件并执行以下步骤

按下 Run 按钮后,没有任何反应。在那时,以及之后的一段时间,似乎什么都没有发生,内核卡住了。我们使用 ICE 逐步执行内核的初始化代码,并排除了一些潜在问题,例如虚拟内存错误,最终才发现问题很简单:内核确实在启动,但是由于控制台 (tty) 驱动程序有问题,我们看不到任何东西!

Caution

VisionICE 不是调试 Linux 时使用的正确工具。ICE 不了解虚拟内存和保护模式(至少我们拥有的版本是这样),并且由于 Linux 内核很早就开启了虚拟内存,因此 ICE 仅对调试最初的汇编器语句有用。在 VM 开启后,ICE 开始崩溃并给出奇怪的结果。