我正在尝试在i386 PC上移植eCos。
我已经下载了预构建的 redboot.bin 从http://ecos.sourceware.org/ecos/boards/redbootbins/x86pc/
我把它启动到USB磁盘上,使用dd conv=sync if/redboot.bin of=/dev/sdb1
从 USB 启动目标后,我总是在目标显示器上收到"IA2!"字符串,而在 38400 8n1 配置的串行端口上,我什么也没收到。
我尝试使用 i386-elf-gdb,但它无法连接到目标并开始打印"忽略错误数据包,继续..."
我也尝试使用 i386 的配置工具构建 redboot,但它只能构建库,当我尝试测试时,它给出了错误:cyg_start() 的多重定义
我对eCos很陌生,我不知道我做错了什么!.
好的,我想出了如何使用 RealteK RTL8139 ehternet 卡在目标 i386 PC 上启动 Redboot。
-
将 GRUB 安装在 U 盘上,
mkdir /mnt/USB && mount /dev/sdx1 /mnt/USB
grub-install --force --no-floppy --boot-directory=/mnt/USB/boot /dev/sdx
-
使用 ecosconfig 构建 Redboot,确保 pci 总线的数量小于 8 或更多,如果更多,则需要将 pci 总线范围从 pci.h 内的 8 增加到 pci.h,我在总线 10 dev 10 上有我的 realtek 以太网卡,我不得不将总线增加到 11,以便 redboot 在启动时找到 realtek 卡。
ecosconfig new pc redboot
configtool ecos.ecc
add common ethernet support
Build Library
-
在 USB 上复制 redboot.elf。
-
在 GRUB 启动菜单上,
insmod multiboot
multiboot /redboot.elf
boot
就是这样,redboot 将使用 BOOTP 并提供 IP 地址,然后我可以测试 redboot 命令,如ip_address、重置、ping、版本等。