一种Linux内核调试系统及方法技术方案

技术编号:14211656 阅读:121 留言:0更新日期:2016-12-18 21:00
本发明专利技术公开一种Linux内核调试系统及方法,所述方法包括如下步骤:调试机的客户端发送读取内核打印信息的指令;所述指令通过调试机的网口传送到目标机;目标机的网口接收指令;基板管理控制器解析指令后通过自定义总线控制中央处理器从内存的静态缓冲区读取内核打印信息;基板管理控制器发送所述内核打印信息;所述内核打印信息通过目标机的网口发送到调试机;调试机的客户端通过网口接收内核打印信息,并将其显示在界面上。本发明专利技术有效解决了在操作系统启动过程中无法通过printk调试Linux内核的问题。

【技术实现步骤摘要】

本专利技术涉及Linux内核调试
,尤其涉及一种Linux内核调试系统及方法
技术介绍
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux内核是一个一体化内核系统。内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。随着嵌入式设备越来越普遍,很多功能都是在Linux内核内部开发的,即功能实现的代码集成在Linux内核内部,没有作为应用程序在用户态实现,这样就无法方便的使用GDB等调试工具去调试定位应用程序运行状态。目前,调试Linux内核主要方法有printk,/proc和kgdb等,其中最常用的的printk。printk是在内核中运行的向控制台输出显示的函数,Linux内核首先在内核空间分配一个静态缓冲区,作为显示用的空间,然后调用sprintf,格式化显示字符串,最后调用tty_write向终端进行信息的显示。但是不同的操作系统会有不一样的效果,例如编写一个hello word内核模块,使用这个函数不一定会将内容显示到终端上,但是一定在内核缓冲区里,可以使用“dmesg”命令查看效果。然而Linux内核在启动的过程当中,若遇到错误而停止不前或崩溃,将无法通过“dmesg”命令查看内核printk的打印信息。在这种情况下无法通过printk调试内核。
技术实现思路
本专利技术的目的在于通过一种Linux内核调试系统及方法,来解决以上
技术介绍
部分提到的问题。为达此目的,本专利技术采用以下技术方案:一种Linux内核调试系统,其包括调试机和目标机;所述调试机包括但不限于客户端和网口;所述目标机包括但不限于网口、基板管理控制器(BMC)、中央处理器(CPU)及内存;所述调试机与目标机通过各自的网口实现两者间的数据传输。本专利技术还公开了一种基于上述系统的Linux内核调试方法,包括如下步骤:S101、调试机的客户端发送读取内核打印信息的指令;S102、所述指令通过调试机的网口传送到目标机;S103、目标机的网口接收指令;S104、基板管理控制器解析指令后通过自定义总线控制中央处理器从内存的静态缓冲区读取内核打印信息;S105、基板管理控制器发送所述内核打印信息;S106、所述内核打印信息通过目标机的网口发送到调试机;S107、调试机的客户端通过网口接收内核打印信息,并将其显示在界面上。特别地,所述步骤S104中指令的构造包括但不限于:Head:头标记;Body Size:消息体长度;Command:指令;Sequence:指令序号;Version:协议版本;Check Code:头部校码;Body:消息体。特别地,所述步骤S104中基板管理控制器解析指令的过程具体包括:一、基板管理控制器从目标机的网口读取指令;二、寻找指令的头部标记Head;三、判断是否找到头部标记Head,若未找到,则返回执行步骤一,否则执行步骤四;四、读取指令的整个头部;五、读取校验码;六、判断是否校验通过,若未校验通过,则返回执行步骤一,否则执行步骤七;七、根据指令的消息体长度Body Size读取消息体Body;八、根据指令Command和消息体Body进行相应操作。本专利技术提出的Linux内核调试系统及方法有效解决了在操作系统启动过程中无法通过printk调试Linux内核的问题。附图说明图1为本专利技术实施例提供的Linux内核调试系统结构示意图;图2为本专利技术实施例提供的Linux内核调试方法流程;图3为本专利技术实施例提供的指令的构造示意图;图4为本专利技术实施例提供的基板管理控制器解析指令的具体流程图。具体实施方式为了便于理解本专利技术,下面将参照相关附图对本专利技术进行更全面的描述。附图中给出了本专利技术的较佳实施例。但是,本专利技术可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本专利技术的公开内容理解的更加透彻全面。需要说明的是,除非另有定义,本文所使用的所有的技术和科学术语与属于本专利技术的
的技术人员通常理解的含义相同。本文中在本专利技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本专利技术。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。请参照图1所示,图1为本专利技术实施例提供的Linux内核调试系统结构示意图。本实施例中Linux内核调试系统具体包括调试机101和目标机102;所述调试机101包括但不限于客户端1011和网口1012;所述目标机102包括但不限于网口1021、基板管理控制器1022、中央处理器1023及内存1024;所述调试机101与目标机102通过各自的网口实现两者间的数据传输。其中,所述基板管理控制器(Baseboard Management Controller,BMC)支持行业标准的IPMI规范;该规范描述了已经内置到主板上的管理功能;这些功能包括:本地和远程诊断、控制台支持、配置管理、硬件管理和故障排除。如图2所示,图2为本专利技术实施例提供的Linux内核调试方法流程。本实施例中基于上述系统的Linux内核调试方法具体包括如下步骤:S101、调试机101的客户端1011发送读取内核打印信息的指令。S102、所述指令通过调试机101的网口1011传送到目标机102。S103、目标机102的网口1021接收指令。S104、基板管理控制器1022解析指令后通过自定义总线控制中央处理器1023从内存1024的静态缓冲区读取内核打印信息。如图3所示,在本实施例中所述指令的构造包括但不限于:Head:头标记;Body Size:消息体长度;Command:指令;Sequence:指令序号;Version:协议版本;Check Code:头部校码;Body:消息体。如图4所示,在本实施例中基板管理控制器1022解析指令的具体过程包括:一、基板管理控制器1022从目标机102的网口1021读取指令;二、寻找指令的头部标记Head;三、判断是否找到头部标记Head,若未找到,则返回执行步骤一,否则执行步骤四;四、读取指令的整个头部;五、读取校验码;六、判断是否校验通过,若未校验通过,则返回执行步骤一,否则执行步骤七;七、根据指令的消息体长度Body Size读取消息体Body;八、根据指令Command和消息体Body进行相应操作。S105、基板管理控制器1022发送所述内核打印信息。S106、所述内核打印信息通过目标机102的网口1021发送到调试机101。S107、调试机101的客户端1011通过网口1012接收内核打印信息,并将其显示在界面上。本专利技术的技术方案有效解决了在操作系统启动过程中无法通过printk调试Linux内核的问题。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。以上结合具体实施例描述了本专利技术的技术原理。这些描述只是为了解释本专利技术的原理,而本文档来自技高网
...
一种Linux内核调试系统及方法

【技术保护点】
一种Linux内核调试系统,其特征在于,包括调试机和目标机;所述调试机包括但不限于客户端和网口;所述目标机包括但不限于网口、基板管理控制器、中央处理器及内存;所述调试机与目标机通过各自的网口实现两者间的数据传输。

【技术特征摘要】
1.一种Linux内核调试系统,其特征在于,包括调试机和目标机;所述调试机包括但不限于客户端和网口;所述目标机包括但不限于网口、基板管理控制器、中央处理器及内存;所述调试机与目标机通过各自的网口实现两者间的数据传输。2.一种基于权利要求1所述调试系统的Linux内核调试方法,其特征在于,包括如下步骤:S101、调试机的客户端发送读取内核打印信息的指令;S102、所述指令通过调试机的网口传送到目标机;S103、目标机的网口接收指令;S104、基板管理控制器解析指令后通过自定义总线控制中央处理器从内存的静态缓冲区读取内核打印信息;S105、基板管理控制器发送所述内核打印信息;S106、所述内核打印信息通过目标机的网口发送到调试机;S107、调试机的客户端通过网口接收内核打印信息,并将其显示在界面上。3.根据权利要求2所述的Linux...

【专利技术属性】
技术研发人员:周毅程石林陆暤冉刘上
申请(专利权)人:无锡市同芯恒通科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1