免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 878 | 回复: 0
打印 上一主题 下一主题

无内核启动信息时的两种调试方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-16 10:58 |只看该作者 |倒序浏览
当内核解压缩后无启动信息,只有可恨又可爱的:
Uncompressing Linux................................................................ done, booting the kernel.
时,怎么办呢???
一. 使用low level debug
1. 内核编译时要打开:kernel hacking->kernel debuging->low level debug(这时要确认下arch/arm/kernel/debug.S(2.6),
或debug-armv.S(2.4)里是否有相应MCU的UART实现,没有就移植别的,主要是正确设置UART发送寄存器地址)
参考代码:
#if defined(CONFIG_ARCH_MX2ADS)
#warning CONFIG_ARCH_IMX21 defined
  .macro addruart,rx
         mrc     p15, 0, \rx, c1, c0
                tst     \rx, #1                 @ MMU enabled?
                moveq   \rx, #0x10000000        @ Physical
                movne   \rx, #0xe4000000        @ Virtual
                orr     \rx, \rx, #0xa000
                orr     \rx, \rx, #0x40
  .endm
  .macro senduart,rd,rx
  str \rd, [\rx] @ TXDATA
  .endm
  .macro waituart,rd,rx
  .endm
  .macro busyuart,rd,rx
1002:  ldrb    \rd, [\rx, #0x54]
  @ Check TRDY in USR1_1 (phys=0x1000a094)
                and     \rd, \rd, #0x2000
                cmp     \rd, #0x2000
                bne     1002b
  .endm
#endif
(有时无信息输出时,可注释busyuart????),在要调试的地方加上printascii("XXX")进行调试。
二。使用printk buffer
当内核刚启动时,printk还不能将信息输出到串口或LCD,只是将它们记录到log buffer,启始地址为log_start(可从System.map得到,转化为physical add),然后用仿真器查看该段内存数据,再进行分析。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76349/showart_1132003.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP