Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168053
  • 博文数量: 26
  • 博客积分: 17
  • 博客等级: 民兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-10 13:14
文章分类
文章存档

2014年(1)

2013年(1)

2012年(22)

2011年(2)

分类:

2012-02-24 17:24:08

当内核解压缩后无启动信息,只有可恨又可爱的:
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),然后用仿真器查看该段内存数据,再进行分析。
阅读(1368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~