uboot是一个很优秀的开源项目。不只能够学习bootloader。嵌入式,各种总线协议。

还能够了解网络协议栈。在嵌入式开发中,常常使用uboot的tftp和nfs来加快开发的效率。那么在tftp能够使用之前,我们要保证host和pcDuino3能够ping通。

在uboot下能够ping通host。可是host不能ping通uboot,这是由于uboot不是操作系统,我们须要做了个命令来循环等待来自host的ping命令。

在为uboot加入命令接受来自host的ping之前。我们先了解一下ping的过程:

硬件环境:host主机的ip是192.168.1.11,mac地址是5c:26:0a:5c:91:50.

pcDuino3的ip是192.168.1.188,mac地址是12:34:56:78:11:22.

我们从uboot往host发送ping 192.168.1.188时,这个过程能够用wireshark抓下来:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG5keGhlag==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

首先是广播发送一个ARP请求,然后host会回复该请求。这样uboot端就得到了host的mac地址;

接下来就是发送ICMP协议的Echo request,收到Echo reply,就表示ping通了。

事实上从host往pcDuino3发送ping过程也是一样的,我们只须要加入几行简单的代码就能够了。

为uboot加入一条recvping命令:

static int recv_ping(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
printf("recv ping command excute \n");
if (NetLoop(RECVPING) < 0) {
printf("ping failed; ");
return 1;
} printf("host is alive\n"); return 0; } U_BOOT_CMD(
recvping, 2, 1, recv_ping,
"recv ICMP ECHO_REQUEST from network host",
"wait the ping from other host"
);

接着在NetLoop中加入处理RECVPING的处理分支:

		case RECVPING:

			recvping_start();
break;

当中recvping_start函数例如以下:

void recvping_start(void)
{ printf("Using %s device\n", eth_get_name());
NetSetTimeout(100000UL, ping_timeout); }

这样,我们再次从主机ping,使用wireshark抓包:

由于host会发送四次ICMP包。所以就有多次Echo request。

这么一看。网络协议栈也蛮简单清晰的。透过这个过程。只为了对网络协议栈的理解。而不不过会UNIX网络编程中的socket。listen,bind等。

一步步玩pcDuino3--uboot下的ping,加入命令能够接受来自host的ping的更多相关文章

  1. 一步步玩pcDuino3--mmc下的裸机流水灯

            第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台.         首先介绍下开发环境: 虚拟机:VMware® Workstati ...

  2. uboot下的命令行

    1.典型嵌入式linux系统启动过程: 嵌入式系统上电后先执行uboot.然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就 ...

  3. Linux和Uboot下eMMC boot分区读写

    关键词:eMMC boot.PARTITION_CONFIG.force_ro等. 1. eMMC的分区 大部分eMMC都有类似如下的分区,其中BOOT.RPMB和UDA一般是默认存在的,gpp分区需 ...

  4. [命令]在uboot下查看文件系统的目录结构

    在uboot下敲help可以查看该版本的uboot支持哪些命令 ls mmc 1:1 ls mmc 1:2 可以查看mmc设备上对应的文件目录,支持多种文件系统格式,如fat32/ext

  5. uboot下emmc内容烧写(拷贝)步骤

    一.目的:嵌入式开发板,通过emmc上的内核文件加载启动linux操作系统,以及存放其他程序文件.需要将所需文件先写入emmc中. 二.总体步骤是:uboot启动后,进入linux下,将emmc分区并 ...

  6. uboot下的网络终端/控制台

    许多linux设备可能没有外置串口,这是就需要一个网络终端来在uboot下操作设备,如升级镜像等. uboot下的网络终端为netconsole,代码drivers/net/netconsole.c. ...

  7. uboot 下更改NAND的分区 fdisk

    uboot 下更改NAND的分区 fdisk 分类: S5PXX(三星)2012-07-01 18:59 8946人阅读 评论(7) 收藏 举报 flash平台cacheandroid三星null 关 ...

  8. uboot下tftp传输文件

    uboot下通过tftp工具传输文件,tftp与ftp是完全不同的工具或协议. 1) 下载并安装程序 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是 ...

  9. uboot下netconsole的原理及用法

    近期发现uboot下一个非常有意思也非常有用的功能:netconsole,uboot下的netconsole相似于kernel下的telnet等网络终端功能,将网络作为输入输出的终端,这样就便于我们在 ...

随机推荐

  1. 【leetcode】Find All Anagrams in a String

    [leetcode]438. Find All Anagrams in a String Given a string s and a non-empty string p, find all the ...

  2. CentOS找不到想要的镜像版本?

    CentOS找不到想要的镜像版本? 情景: 当学习Linux时,一般教程不是最新的,教程里的CentOS版本也就不是最新的,这个时候, 在看着教程练习的时候就需要安装指定的版本,避免因为版本不同造成困 ...

  3. AC日记——[USACO09OCT]Bessie的体重问题Bessie's We… 洛谷 P2639

    题目描述 Bessie像她的诸多姊妹一样,因为从Farmer John的草地吃了太多美味的草而长出了太多的赘肉.所以FJ将她置于一个及其严格的节食计划之中.她每天不能吃多过H (5 <= H & ...

  4. Stockbroker Grapevine(最短路)

      poj——1125 Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36112 ...

  5. awk数组详解、实战

    1.其它编程语言数组的下标一般从0开始,awk中数组下标默认从1开始,也可以从0开始设置: awk 'BEGIN{huluwa[0]="大娃";huluwa[1]="二娃 ...

  6. cacti监控linux和windows磁盘IO

    cacti监控linux和windows磁盘IO 标签:cacti linux磁盘IO windows磁盘IO 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则 ...

  7. 【转载】面向切面编程(AOP)学习

    看到这篇文章,学习一下:http://www.ciaoshen.com/2016/10/28/aop/ 想理清一下从“动态代理”,到 “注释”,到“面向切面编程”这么一个技术演进的脉络. 只想讲清楚两 ...

  8. solr 最佳实践

    管理页面 页面地址:http://{ip}:{port}/solr/#/ 管理页面的data-import页可以手动重建索引,configuration指定了数据源,重建索引也可以通过http请求触发 ...

  9. 自己写的通过ADO操作mysql数据库

    #include <iostream> #include <windows.h> #include <atlstr.h> #import "c:\Prog ...

  10. 请问如何突破”所选文件超出了文件的最大值设定:25.00 Mb“限制

        警告消息             这个限制 并没有 设置项, 必须 修改 源码才可以.     打开 web/static/src/js/views/form_widgets.js       ...