如何在uboot中添加ping命令

 我来答
不是你的就让他走5419
2016-12-20 · TA获得超过121个赞
知道小有建树答主
回答量:669
采纳率:0%
帮助的人:233万
展开全部
首先icmp和arp是没有关系的!icmp承载于网络层他的协议号好像是1,其中有8种类型比如host不可达、超时等这是用来测试网络连通性的一种控制信息协议。ARP是以太网技术中最重要的一种协议地址解析协议,它承载于osi第二层类型号好像是806,因为以太网是多路访问的一种,所以为了解析其以太网物理MAC地址必须要用ARP协议,这种协议发送的request包中目标MAC地址为全1广播地址,reply包以自己的mac和IP地址为源,目标地址以目标主机MAC和IP地址为目标封装成帧后发送出去!虽然说它是链路层协议,但是他有网络层的概念IP地址,我抓包看到过ARP协议中有协议类型800这是IP协议的类型,因为他要用IP地址来解析MAC地址,所以每个网络层以上的设备都会有基于ARP的缓存,路由交换设备中的命令是showarp!windows中的命令是arp-a,有了这种缓存大大提高了互联网访问速度!好了说了这么多可能楼主认为我说的是废话!那么我就开始所问所答了!第一,ping命令是ICMP的一种形式,它属于ICMP,当然tracert也属于ICMP!ICMP与ARP没有任何关系,一个是网络层协议,一个是数据链路层协议!在功能方面上也没有什么交集的地方,唯一共同点就是都涉及IP地址。第二,我不会写什么UBOOT代码,但是既然承载在internet上那么他就应该遵循网络体系结构为了让网络统一化,IEEE和国际标准化组织iso统一定义了接入层及上层协议标准!当你ping时会发送ARP帧是因为你在以太网的环境中,为什么会发送ARP是因为在计算机刚刚启动的时候是没有对方主机的通信地址的!ping是为了测试与对方主机的连通性,所以需要知道对方主机的地址虽然你知道了目的的IP地址,但还需要其MAC地址,所以在ping之前就会发送ARP帧,主机中ARP默认缓存老化时间应该是10分钟。也就是说,自ARP解析10分钟后ARP缓存条目会自动清除。第三,arp帧发送和恢复确实不一样!一个用广播一个是单播好了!不管我写的是不是废话!辛辛苦苦写了这些不容易啊!接下来就看LZ你的了!^_^!
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
小K说办公
2021-01-24 · 超过82用户采纳过TA的回答
知道小有建树答主
回答量:352
采纳率:100%
帮助的人:35.4万
展开全部

Ping命令是用来进行网络连接测试的一个程序,其对应的文件名为“ping.exe”。根据不同的测试目的,此命令可以带上不同的参数。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
frankhp
2016-12-20 · 知道合伙人数码行家
frankhp
知道合伙人数码行家
采纳数:10973 获赞数:50478
爱好计算机,曾经任职于联想服务站,电信装维班组。 现在待业,希望能在百度知道平台帮助到更多的人。

向TA提问 私信TA
展开全部
NetLoop函数调用的PingStart()函数。
static void PingStart(void)
{
#if defined(CONFIG_NET_MULTI)//这个我们不用理
printf ("Using %s device\n", eth_get_name());
#endif
NetSetTimeout (10 * CFG_HZ, PingTimeout);
NetSetHandler (PingHandler);
PingSend();
}
第一、CFG_HZ
在fs2410.h中,我们队CFG_HZ的定义如下:
#define CFG_HZ 1562500,看看smdk2410开发板的作者是怎么注释的
//the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need it to wrap 100 times
//(total 1562500) to get 1 sec.
fs2410.h就是仿smdk2410.h改写的,所以这个值没变,
这个时间应该就是cpu查询CS8900的时间间隔,通过定时的查询检查是否收到数据包。
第二、NetSetTimeout 函数
下面让我们来看看NetSetTimeout 这个函数:
void
NetSetTimeout(ulong iv, thand_f * f)
{
if (iv == 0) {
timeHandler = (thand_f *)0;
} else {
timeHandler = f;
timeStart = get_timer(0);
timeDelta = iv;
}
}
在NetSetTimeout函数中,因为CFG_HZ不为0,所以执行else分支。
timeHandler 的定义如下(定义在net.c中):
static thand_f *timeHandler; // Current timeout handler
而thand_f的定义如下(定义在net.h中)
typedef void thand_f(void);//thand_f是一个无参数无返回的函数,typedef的作用是定义一种类型,例如上面的static thand_f *timeHandler就相当于static void (*thand_f)(void)即定义了一个函数型指针,所谓函数型指针就是指向函数入口地址的指针。
NetSetTimeout函数的参数2也是一个指向函数的指针,这个函数将指向PingTimeout函数,timeHandler=f其实是调用了PingTimeout函数。这个函数内容如下:
static void
PingTimeout (void)
{
eth_halt();
NetState = NETLOOP_FAIL;
}
显然PingTimeout 使CS8900停止工作,并将NetState赋值为NETLOOP_FAIL表示没有收到应答
随后将当前时间赋给timeStart,并或的时间的间隔值
这个函数:NetSetHandler (PingHandler);调用了PingHandler函数。PingHandler函数将ping的ip地址和返回的ip数据报的ip地址进行对标,如果相同则执行该语句NetState = NETLOOP_SUCCESS;

三、pingSend函数
这个函数不在分析,函数的功能是组建ARP请求报文并发送
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式