调试内核,bootkernel后没有输出信息
在uboot加载内核后,只打印了Uncompressing Linux... done, booting the kernel.后面控制台没有任何输出,此时应如何调试?
内核在串口没有准备好之前会把打印信息存储在ram中,这个地址为全局变量__log_buf,基于这一点,操作如下:
1、打开System.map,找到__log_buf的地址,这个就是存放日志的起始地址0xc10c745c;
2、safe_read_lock的地址就是存放日志的结束地址0xc110745c(只是个大概地址);
3、注意不要断电,连接jlink,使用gdb工具把地址区间的数据存储到dmesg.bin中;
4、在PC linux上,使用命令:strings dmesg.bin可以打印出期望的信息了;
5、可以根据日志调试了;
1 c10c5070 b textbuf.41826 2 c10c5450 B early_console 3 c10c5454 B oops_in_progress 4 c10c5458 b always_kmsg_dump 5 c10c545c b ext_text.42027 6 c10c745c b __log_buf 7 c110745c b safe_read_lock 8 c1107460 b irq_kobj_base 9 c1107464 b allocated_irqs 10 c1107868 b __key.21864 11 c1107868 b __key.21865 12 c1107868 b mask_lock.24111