BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #8284同步于 2010/4/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

[求助]如何实现ARM板自动获取IP

nail
2010/4/19镜像同步11 回复
想用NFS,同时又想上网,想把ARM板直接插到交换机上,但这个交换机是自动获取IP的。在ARM板上要怎么设置,容不容易实现?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
hobby机器人#1 · 2010/4/19
简单的方法是:选一个目前未被使用的公网IP,将其静态配置给开发板。这样的配置就怕出现IP冲突,一旦冲突了,NFS就断,而且改为其他IP还要再重新配置。 不过虽然如此,我还是建议你静态配置!(或者给你的PC装个双网卡,开发板和第二网卡配置到同一网段,使用私有IP) 此问题还可以通过指定“uboot引导内核的参数”来实现,在引导参数中有个参数是ip,其中可以静态配置开发板ip和nfs server的ip,其中有个字段叫做autoconf(它可以指定使用RARP或者BOOTP或者IP地址等信息),当然这样就需要你的网络里有相应的server去响应了。 详细信息请参考linux kernel的doc,包括kernel-parameters.txt和nfsroot.txt
hobby机器人#2 · 2010/4/19
附件是kernel2.6.13的doc,仅供参考~ 【 在 hobby 的大作中提到: 】 : 简单的方法是:选一个目前未被使用的公网IP,将其静态配置给开发板。这样的配置就怕出现IP冲突,一旦冲突了,NFS就断,而且改为其他IP还要再重新配置。 : 此问题还可以通过指定“uboot引导内核的参数”来实现,在引导参数中有个参数是ip,其中可以静态配置开发板ip和nfs server的ip,其中有个字段叫做autoconf(它可以指定使用RARP或者BOOTP或者IP地址等信息),当然这样就需要你的网络里有相应的server去响应了。 : 详细信息请参考linux kernel的doc,包括kernel-parameters.txt和nfsroot.txt 附件(43.6KB) kernel-parameters.txt 附件(7.8KB) nfsroot.txt
nail机器人#3 · 2010/4/19
谢谢版主,下附件再学学
hiboy机器人#4 · 2010/4/20
busybox有dhcp client功能的吧。 在KERNEL中需要将 Packet socket和IP: DHCP support编译进内核或编译成模块。在编译Busybox时把 Networking Utilities下udhcp Server/Client中的 udhcp Client (udhcpc)选上。 关键点要把examples/udhcp/simple.script 脚本文件做为default.script拷贝到/usr/share/udhcpc/default.script 运行udhcpc ~ # udhcpc udhcpc (v1.5.1) started Sending discover... Sending select for 59.64.134.99... Sending select for 59.64.134.99... Sending select for 59.64.134.99... Lease of 59.64.134.99 obtained, lease time 10800 deleting routers route: SIOC[ADD|DEL]RT: No such process adding dns 211.68.71.4 adding dns 211.68.71.5 adding dns 202.106.196.115 adding dns 202.106.0.20
hobby机器人#5 · 2010/4/21
补充一下,这两天看uboot的代码,发现也有dhcp支持。由此看来,uboot和kernel都支持多种方式获取IP,就看你需要什么了。 补充一下uboot下的相关内容的说明 上面说的bootp和RARP是可以在uboot引导内核时使用的,具体的:是在bootm命令运行时,uboot会读取环境变量bootargs的设置,并将其作为参数传递给kernel。因此也可以看到bootp和rarp的parameter说明是在kernel的doc里面。 另一方面,uboot自带了bootp, rarp和dhcp的命令。为了适用这些命令,需要在开发板头文件中定义一些宏(包括:CONFIG_COMMANDS,CFG_CMD_NET,CFG_CMD_DHCP等命令)。具体的执行过程,如果uboot启动后并未引导内核而是进入命令交互界面,可以通过这几个命令获取IP地址等信息。具体的命令及其实现请参考:uboot/net/bootp.c uboot/net/net.c uboot/common/cmd_net.c等文件 【 在 nail 的大作中提到: 】 : 谢谢版主,下附件再学学
hobby机器人#6 · 2010/4/21
嗯 这个也可行 单是这样就是执行到shell的时候才去获取IP了吧,如果应用场景类似于nfs中放着rootfs,那可能还是要在uboot里面获取好IP然后传给内核,或者内核启动时去自动获取了 【 在 hiboy 的大作中提到: 】 : busybox有dhcp client功能的吧。 : 在KERNEL中需要将 Packet socket和IP: DHCP support编译进内核或编译成模块。在编译Busybox时把 Networking Utilities下udhcp Server/Client中的 udhcp Client (udhcpc)选上。 : 关键点要把examples/udhcp/simple.script 脚本文件做为default.script拷贝到/usr/share/udhcpc/default.script : ...................
ssailing机器人#7 · 2010/4/21
【 在 hobby 的大作中提到: 】 : 补充一下,这两天看uboot的代码,发现也有dhcp支持。由此看来,uboot和kernel都支持多种方式获取IP,就看你需要什么了。 : 补充一下uboot下的相关内容的说明 : 上面说的bootp和RARP是可以在uboot引导内核时使用的,具体的:是在bootm命令运行时,uboot会读取环境变量bootargs的设置,并将其作为参数传递给kernel。因此也可以看到bootp和rarp的parameter说明是在kernel的doc里面。 : ................... 赞 真热心啊 最近uboot看的有不少收获啊
hobby机器人#8 · 2010/4/22
呵呵 是啊 这不趁着做师兄安排的那个volunteer task的时候顺便看了下嘛~ 【 在 ssailing 的大作中提到: 】 : 赞 真热心啊 : 最近uboot看的有不少收获啊
cxj1125机器人#9 · 2010/4/22
太感动了