首页 > Web开发 > 详细

uboot下netconsole的原理及使用方法

时间:2016-03-17 19:34:30      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:class   log   http   it   使用   代码   la   sp   java   

最近发现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的默认接收和发送端口都是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的原理及使用方法

标签:class   log   http   it   使用   代码   la   sp   java   

原文:http://blog.csdn.net/skyflying2012/article/details/50916167

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号