近期发现uboot下一个非常有意思也非常有用的功能:netconsole,uboot下的netconsole相似于kernel下的telnet等网络终端功能,将网络作为输入输出的终端,这样就便于我们在PC端通过网络登录设备uboot中执行命令(更准确的说是通过网络向uboot发送命令和接收uboot的反馈信息。netconsole没有登录检查)。

kernel下也有netconsole机制,只是由于内核下的console仅仅有write功能(由于内核启动是没有交互的,仅仅有输出信息),因此kernel下netconsole机制事实上就是向内核注冊提供网络发送数据功能的console_device。详细实现代码在drivers/net/netconsole.c中。

关于内核console的实现能够查看我之前一篇解析内核下console机制的文章。链接例如以下:

http://blog.csdn.net/skyflying2012/article/details/41078349

uboot下的netconsole实现相似于内核,也是向uboot下的console子系统注冊新的设备。关于uboot下的console系统能够查我之前分析uboot启动流程的一篇文章,在最后分析了uboot下console机制,链接例如以下:

http://blog.csdn.net/skyflying2012/article/details/25804209

uboot下netconsole的实如今drivers/net/netconsole.c中,大体原理是在drv_nc_init中向uboot下注冊stdio_dev设备。事实上就是将其增加到uboot中stdio_dev链表中。

stdio_dev中实现了读写函数。函数中则实现了向网络中发送数据以及从网络中接收数据。依据之前分析uboot下console实现原理的文章,uboot下默认的console是stdio_dev链表的第一个设备。stdio_init中调用drv_nc_init之前会调用drv_system_init和serial_stdio_init注冊了串口的一些stdio设备。因此netconsole不是uboot的默认console。我们能够通过set命令进行设置。

netconsole的用法例如以下:

1 在uboot的配置头文件里增加netconsole支持。#define CONFIG_NETCONSOLE,重编uboot

2 启动uboot后首先设备netconsole的服务器ip,set ncip serverip。然后改动uboot下的默认输入输出console。set stdin nc;set stdout nc。uboot进入netonsole模式,此时串口控制台就没有输出了。

3 在PC端命令行下使用nc命令发送命令和接收uboot输出(uboot下netconsole的默认接收和发送port都是6666)

(1)对于windows电脑。执行start /b nc -lup 6666。nc -u 设备ip 6666

(2)对于linux电脑,执行nc -lup 6666 &;nc -u 设备ip 6666

之后我们就能够在PC端执行uboot命令了。

uboot下的netconsole能够用来远程执行命令。我们也能够将其与uboot提供的tftpserver功能结合,由PC端程序控制。实现uboot的一个在线升级功能。

uboot下netconsole的原理及用法的更多相关文章

  1. linux下crontab的原理和用法

    linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...

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

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

  3. Nmap扫描原理与用法

    Nmap扫描原理与用法 1     Nmap介绍 Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Audit ...

  4. JSON Web Token(JWT)原理和用法介绍

    JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.今天给大家介绍一下JWT的原理和用法. 官网地址:https://jwt.io/ 一.跨域身份验证 Internet服务无法与 ...

  5. Java并发-volatile的原理及用法

    Java并发-volatile的原理及用法 volatile属性:可见性.保证有序性.不保证原子性.一.volatile可见性 在Java的内存中所有的变量都存在主内存中,每个线程有单独CPU缓存内存 ...

  6. Web安全学习笔记之Nmap扫描原理与用法

    1     Nmap介绍 Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字N ...

  7. 初涉IPC,了解AIDL的工作原理及用法

    初涉IPC,了解AIDL的工作原理及用法 今天来讲讲AIDL.这个神奇的AIDL,也是近期在学习的,看了某课大神的解说写下的blog,希望结合自己的看法给各位同价通俗易懂的解说 官方文档:http:/ ...

  8. Python实现的选择排序算法原理与用法实例分析

    Python实现的选择排序算法原理与用法实例分析 这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋 ...

  9. Python函数装饰器原理与用法详解《摘》

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

随机推荐

  1. 关于Android应用中图片占用内存浅谈

    从事过移动端应用开发的童鞋应该都清楚,内存是非常宝贵的资源.如果能很好的利用有限的内存,对应用性能的提升会有很大的帮助.在实际应用开发中图片内存占整个应用非常大的比重,我们只有了解图片是如何加载到内存 ...

  2. [BZOJ1280][POJ1149]Emmy卖猪pigs

    [BZOJ1280][POJ1149]Emmy卖猪pigs 试题描述 Emmy在一个养猪场工作.这个养猪场有 \(M\) 个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位 ...

  3. 【SPOJ1297】Palindrome (SA+RMQ)

    求最长回文串.把原串翻转后,加在原串后面,中间插入一个辨别字符.然后求SA,Height.然后枚举每个字母作为回文串中心,分长度为奇数和偶数去讨论:奇数求 suffix(i)和suffix(n-i+1 ...

  4. MYSQL重复记录排除法处理方式

    SELECT tmp.user_id, tmp.course_id, tmp.type, tmp.expire_time, @rownum := @rownum + 1, IF ( @course_i ...

  5. Bzoj1195 [HNOI2006]最短母串 [AC自动机]

    Time Limit: 10 Sec  Memory Limit: 32 MBSubmit: 1304  Solved: 439 Description 给定n个字符串(S1,S2,„,Sn),要求找 ...

  6. ubuntu php编译安装配置

    安装参考:http://ilanni.blog.51cto.com/526870/1569322/ 加载扩展的一些参数参考:http://java-er.com/blog/nginx-php-fpm/

  7. Codeforces Round #442 Div.2 A B C D E

    A. Alex and broken contest 题意 判断一个字符串内出现五个给定的子串多少次. Code #include <bits/stdc++.h> char s[110]; ...

  8. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---44

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. C# 用实例来理解IComparable和IComparer

    通过Array的Sort方法来理解的 Sort方法要 通过对象去继承IComparable接口来实现排序(当然也有其它办法),我想入门这可能就是对这句话有点不理解,在下面会有注释 using Syst ...

  10. mysql error 1093 解决办法

    mysql> select * from t; +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 ...