kernel hexdump分析 (2.0)

原创 2013年12月04日 22:35:01

有的时候print_hex_dump_bytes循环打印很多信息的时候(大于1K)
用UART串口打印的信息总是会有丢失,估计是printk缓冲区的问题把,具体原因不是太清楚
于是自己写了个比较笨的dump函数,问题得到解决:

//每次打印128个字节(当然你也可以打印更多),只调用一次printk ,
// 而 print_hex_dump_bytes 则 最多32个字节 就调用一次printk

static void  dumpBuf(void * buf)
{
   unsigned char * temp;
   
   temp=(char *)buf;

   int i=0;
      printk(KERN_ERR  "[%s] \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n \
%02x %02x %02x %02x %02x %02x %02x %02x \r\n",__func__,  \
	   	temp[i+0],temp[i+1],temp[i+2],temp[i+3],temp[i+4],temp[i+5],temp[i+6],temp[i+7], \
	   	temp[i+8],temp[i+9],temp[i+10],temp[i+11],temp[i+12],temp[i+13],temp[i+14],temp[i+15],\
	   	temp[i+16],temp[i+17],temp[i+18],temp[i+19],temp[i+20],temp[i+21],temp[i+22],temp[i+23],\
	   	temp[i+24],temp[i+25],temp[i+26],temp[i+27],temp[i+28],temp[i+29],temp[i+30],temp[i+31],\
	   	temp[i+32],temp[i+33],temp[i+34],temp[i+35],temp[i+36],temp[i+37],temp[i+38],temp[i+39],\
	   	temp[i+40],temp[i+41],temp[i+42],temp[i+43],temp[i+44],temp[i+45],temp[i+46],temp[i+47],\
	   	temp[i+48],temp[i+49],temp[i+50],temp[i+51],temp[i+52],temp[i+53],temp[i+54],temp[i+55],\
	   	temp[i+56],temp[i+57],temp[i+58],temp[i+59],temp[i+60],temp[i+61],temp[i+62],temp[i+63],\
	   	temp[i+64],temp[i+65],temp[i+66],temp[i+67],temp[i+68],temp[i+69],temp[i+70],temp[i+71],\
	   	temp[i+72],temp[i+73],temp[i+74],temp[i+75],temp[i+76],temp[i+77],temp[i+78],temp[i+79],\
	   	temp[i+80],temp[i+81],temp[i+82],temp[i+83],temp[i+84],temp[i+85],temp[i+86],temp[i+87],\
	   	temp[i+88],temp[i+89],temp[i+90],temp[i+91],temp[i+92],temp[i+93],temp[i+94],temp[i+95],\
	   	temp[i+96],temp[i+97],temp[i+98],temp[i+99],temp[i+100],temp[i+101],temp[i+102],temp[i+103],\
	   	temp[i+104],temp[i+105],temp[i+106],temp[i+107],temp[i+108],temp[i+109],temp[i+110],temp[i+111],\
	   	temp[i+112],temp[i+113],temp[i+114],temp[i+115],temp[i+116],temp[i+117],temp[i+118],temp[i+119],\
	   	temp[i+120],temp[i+121],temp[i+122],temp[i+123],temp[i+124],temp[i+125],temp[i+126],temp[i+127]);
   //}


 

相关文章推荐

kernel hexdump分析

驱动调试中,很多时候是二进制的,这个时候hexdump就是个非常有用的工具了。 不要再自己去实现类似的功能,kernel代码里面就有: 参考: kernel/lib/hexdump.c // 0...

hexdump命令使用

hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别有用,配合eeprom来用简直是绝配。 今天我们来介绍一个hexdump命令的使用: ...
  • ZYBASJJ
  • ZYBASJJ
  • 2012年08月16日 19:37
  • 23214

hexdump 命令用法

NAME      hexdump - ascii, decimal, hexadecimal, octal dump SYNOPSIS       [-bcCdovx] [-e format_s...

fedora 25 升级更新内核后,开机出现:failed start load kernel modules 的解决;还有更新内核后maya viwePort2.0不能用的问题

出现Failed to start Load Kernel Modules.基本上是跟安装了虚拟机有关,可能是虚拟机的内核版本和物理机不同造成的. 执行: systemctl status sys...

hexdump Python2版本

  • 2014年05月12日 16:26
  • 5KB
  • 下载

HexDump源码

  • 2012年05月15日 09:39
  • 8KB
  • 下载

linux c hexdump之实现cat的16进制显示数据

/* hexdump.c reversible hexdump Copyright (c) 1996 by Andreas Leitgeb (AvL) Permission to u...
  • earbao
  • earbao
  • 2016年12月12日 23:53
  • 1215

mysqlbinlog中解释事件--hexdump

在binlog文件中有时候打印出来的标准时间并不足以确定一个问题,有时候会出现一个一些特殊的数字代表,无法具体理解其具体数字细节代表的意义;为处理类似的情况,可以通过使用--hexdump来打印出相关...

32位汇编语言学习笔记(24)--HexDump程序

 此程序的目的是把输入的文本字符转换成16进制的格式输出。 SECTION .bss                     ; Section containing uniniti...

fl2440内核自带按键驱动移植及hexdump命令

主机操作系统:Centos 6.7 交叉编译器版本:buildroot-2012.08  开发板平台: FL2440  Linux内核版本: linux-3.0  开发模块: linux内核自带按键驱...
  • fml1997
  • fml1997
  • 2017年04月29日 19:47
  • 364
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kernel hexdump分析 (2.0)
举报原因:
原因补充:

(最多只允许输入30个字)