在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