在前面对很多s3c2440的功能模块进行学习后,已经具备了将这些模块综合起来的条件,基于此,将前面的代码综合成一个简单的bootloader.自己写的bootloader在引导kernel的时候,串口输出只有Uncompressing Linux...和done, booting the kernel。串口有这个输出,说明kernel被正确引导了,但是串口有问题。
这篇blog只是分析解决这个问题的第一步:
既然"Uncompressing Linux..."这句打印是kernel代码中的,那kernel的其他打印怎么没有?
在archarmootcompressed目录下的misc.c中,上面的打印是在decompress_kernel函数中,而该函数是在kernel的初始汇编中调用的,也就是说这个时候kernel的串口驱动肯定是没有工作的,那这里的串口输出只能是用bootloader初始化好的串口,
putstr("Uncompressing Linux...");
putstr(" done, booting the kernel. ");
- static void putstr(const char *ptr)
- {
- char c;
- while ((c = *ptr++) != '