zoukankan      html  css  js  c++  java
  • uboot下netconsole的原理及用法

    近期发现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的一个在线升级功能。

  • 相关阅读:
    核函数
    主成分分析(PCA)原理详解
    Caffe上用SSD训练和测试自己的数据
    FCN-全卷积网络
    rpc选择标准
    dataserver test code
    数字方舟
    分布式事务
    golang获取数据表转换为json通用方法
    qt for java
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7232687.html
Copyright © 2011-2022 走看看