我尝试通过 USB 引导 BeagleBone Black、以证明我可以初始加载并刷写基于 Sitara 的生产系统的 MMC。 我有一个问题是如何配置 DHCP。
Ubuntu 12.04设置为网络引导基于 AM335x 的平台 wiki 提供了以下 dhcp.conf 示例:
子网192.168.2.0子网掩码255.255.255.0
{
范围 dynamic-BOOTP 192.168.2.2 192.168.2.100;
如果子字符串(选项供应商类标识符,0,10)="AM335x ROM"
{
文件名"u-boot-spl-restore.bin";
}
elsif 子字符串(选项 vender-class-identifier、0、10)="DM814x ROM"
{
文件名"u-boot-spl-restore.bin";
}
elsif 子字符串(选项 vender-class-identifier、0、17)="AM335x U-Boot SPL"
{
文件名"u-boot-restore.img";
}
否则
{ 文件名"zImage";
}
范围192.168.2.101 192.168.2.199;
}
dhcp.conf 文件指定为动态 BOOTP 客户机分配地址的范围、并根据 Sitara Boot ROM 客户机的信息指定要上载的文件。
AM335x U-Boot 用户指南 wiki 的"Booting Over CPSW Ethernet"一节提供了此示例:
主机 AM335x_EVM { 硬件以太网文件:ad:be:ee:ef; 如果子字符串(选项 vender-class-identifier、0、10)="DM814x ROM" { fileName "u-boot-spl.bin"; } elsif 子字符串 SPL (选项 vender-class-identifier、0、17)="AM335x rom"} 文件名"u-boot-spl.bin";}elsif substring sf substring (选项 sil-guide-sel、0、17)="AM335x u-u-boot" }"u-u.
我认为这两个文件的目的是实现相同的目标:
- 在 Sitara 客户端受公共 ROM 代码控制时 tftp u-boot-spi.bin
- 然后在 Sitara 客户端运行 SPL 指令客户端时转到 tftp u-boot.img 文件。
如果传输介质是以太网或 USB、则情况应相同。
从 dhcp.conf 主页:
"如果要动态地为子网上的客户端分配地址,则子网声明中必须显示一个范围声明。 对于静态分配地址的客户端、或者对于只为已知客户端提供服务的安装、每个此类客户端都必须有一个主机声明。"
第一个示例使用动态地址、第二个示例使用静态地址。
dhcp.conf 手册页还显示:
"要识别 BOOTP 客户机,必须使用主机语句中的硬件子句声明其网络硬件地址。 硬件类型必须是物理硬件接口类型的名称。"
使用动态配置示例、我能够让 Sitara 通过 tftp 启动、广播和接收 u-boot-spl.bin 文件。 但是、在 SPL 文件传输后、网络接口出现故障后、我似乎会遇到网络错误。 在我看来、Sitara 似乎无法连接回 Linux 服务器。 (我不知道当时如何保持 Wireshark、所以我看不到发生了什么、但这可能是另一个主题)
问题是否是我没有在 dhcp.conf 中使用硬件语句? 我的 Sitara BOOTP 客户机似乎初始被识别,但在收到 SPL 文件后未被识别。 也许我最基本的问题是:在通过 USB 引导 Sitara 的环境中、"为了识别 BOOTP 客户机"这一说法意味着什么?


