0

我正在尝试在 i386 PC 上移植 eCos。

我已经从http://ecos.sourceware.org/ecos/boards/redbootbins/x86pc/下载了预建的 redboot.bin

我使用 dd conv=sync if/redboot.bin of=/dev/sdb1 将它引导到 USB 磁盘上

从 USB 启动目标后,我得到“IA2!” 目标监视器上的字符串始终,在 38400 8n1 配置的串行端口上,我什么也没收到。

我尝试使用 i386-elf-gdb,但它无法连接到目标并开始打印“忽略错误数据包,继续...”

我还尝试使用 i386 的 configtool 构建 redboot,但它只能构建库,当我尝试测试时,它给出 ERROR: multiple definition of cyg_start()

我对 eCos 很陌生,我不知道我做错了什么!!。

4

1 回答 1

1

好的,我想出了如何使用 RealteK RTL8139 ehternet 卡在目标 i386 电脑上启动 Redboot。

  1. 在 U 盘上安装 grub,

    mkdir /mnt/USB && mount /dev/sdx1 /mnt/USB

    grub-install --force --no-floppy --boot-directory=/mnt/USB/boot /dev/sdx

  2. 使用 ecosconfig 构建 Redboot,确保 pci 总线的数量小于 8 或更多,如果更多,则需要从 pci.h 中的 8 增加 pci 总线范围,我的 realtek 以太网卡在总线 10 dev 10 上,我不得不将总线增加到 11,以便 redboot 在启动时找到 realtek 卡。

    ecosconfig new pc redboot

    configtool ecos.ecc

    add common ethernet support

    Build Library

  3. 在 USB 上复制 redboot.elf。

  4. 在 grub 启动菜单上,

    insmod multiboot

    multiboot /redboot.elf

    boot

就是这样,redboot 将使用 BOOTP 并提供 IP 地址,然后我可以测试 redboot 命令,如 ip_address、reset、ping、version 等。

于 2014-02-19T07:46:48.773 回答