使用uboot启动低版本内核卡死在Starting kernel...

时间:2021-05-08 07:01:30

  在u-boot2016.11(我用的这个版本)中用串口发送的时候使能了FIFO的方法,因fifo_mask,fifo_max没有被赋值,所以导致卡死在一个while循环里面(\linux\arch\arm\plat-samsung\include\plat\uncomperss.h static void putc(int ch))。

解决办法:

  1.把uboot的串口FIFO关闭,linux那边就不会走这边的流程就没有问题成功引导内核,打印正常,但是在uboot打印的时候就会出现问题。所以我的解决办法是在uboot打印完最后一句话(Starting kernel...)且fifo为空的时候的时候再将程序交接给内核。

  2.还有一个办法就是修改内核,修改方法:在\linux-3.0.8\arch\arm\mach-s5pv210\include\mach\uncompress.h中

  

static void arch_detect_cpu(void)
{
  
/* we do not need to do any cpu detection here at the moment. */
  fifo_mask
= S5PV210_UFSTAT_TXMASK; //yiming add
  fifo_max = 255 << S5PV210_UFSTAT_TXSHIFT; //yiming add
}

我用的第一种方法解决的,第二种方法没事实验过。解决方法的出处:http://www.arm9home.net/read.php?tid=86329