• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友,商务沟通v:ai_draw
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

u-boot中网络命令 —- dhcp命令

点滴 admin 11年前 (2013-12-09) 4089次浏览 已收录 0个评论 扫描二维码

在平时使用u-boot通过网络下载linux内核,我们的通常做法是手动设置serverip,ipaddr,然后通tftpboot命令把linux内核下载到指定地址,最后通过bootm命令来启动linux内核。

其实,这一切都可以通过u-boot自带的dhcp命令来实现。需要在configure文件中加入CONFIG_CMD_DHCP。此命令的具体实现在common/cmd_net.c与net/bootp.c。

dhcp的命令用法如下:

dhcp [loadAddress][[hostIPaddr:]bootfilename]

例:dhcp 0x20000000 192.168.1.10:uImage

使用这条命令,就不需要设置serverip,ipaddr,以及gateway(如果跨网段)了。

当dhcp成功从dhcp服务器上面拿到ip地址后,其就会从192.168.1.10地址,以tftp的方式获取uImage文件。

但是,使用这条命令有一个需要注意的地方,如果dhcp服务器ACK包中含有bootfilename,则此条命令将会执行失败。

serverip会使用dhcp服务的ip地址,bootfilename使用dhcp服务器返回的命令。

故认为这个是一个bug。请参考下面patch去解决这个问题。

http://article.gmane.org/gmane.comp.boot-loaders.u-boot/130743

——————————————————————————

when using dhcp command with parameters as usage message,
if DHCP server response contains bootfilename, it will overwrite
the dhcp command parameters. So the dhcp command parameters
can not be used.
Using this patch to fix it.
Signed-off-by: Bo Shen voice.shen at gmail.com

common/cmd_net.c | 1 +
net/bootp.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)

diff –git a/common/cmd_net.c b/common/cmd_net.c
index 65f32bc..9b1e650 100644
— a/common/cmd_net.c
+++ b/common/cmd_net.c
@@ -221,6 +221,7 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc,

case 3:load_addr = simple_strtoul(argv[1], NULL, 16);
copy_filename (BootFile, argv[2], sizeof(BootFile));
+ setenv (“bootfile”, BootFile);

break;

diff –git a/net/bootp.c b/net/bootp.c
index 9e32476..df9f5eb 100644
— a/net/bootp.c
+++ b/net/bootp.c
@@ -116,7 +116,8 @@ static void BootpCopyNetParams(Bootp_t *bp)
memcpy (NetServerEther, ((Ethernet_t *)NetRxPacket)-et_src, 6);
#endif
if (strlen(bp-bp_file) 0)
copy_filename (BootFile, bp-bp_file, sizeof(BootFile));
+ if (!getenv(“bootfile”))
+ copy_filename (BootFile, bp-bp_file, sizeof(BootFile));

debug(“Bootfile: %s
“, BootFile);


1.7.9.5

——————————————————————————

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址