将编译后的zImage烧写到开发板,串口打印done, booting the kernel.后没有其他反应了。
bl decompress_kernel
bl cache_clean_flush
bl cache_off
mov r0, #0@ must be zero
mov r1, r7@ restore architecture number
mov r2, r8@ restore atags pointer
ARM( mov pc, r4 ) @ call kernel
THUMB( bx r4 ) @ entry point is always ARM
根据查看汇编代码后发现在经过解压缩后,跳转到0x40008000地址去执行真正的linux代码。
从0x40008000读取0x100大小的数据通过串口打印输出后。
解压arch\arm\boot\compressed\piggy.gzip,获得piggy。对比串口输出的属于发现与piggy前0x100自己相同,可以判断解压成功。
在arch\arm\kernel\head.S的入口处ENTRY(stext)加入点灯的汇编代码后,发现LED亮,由此判断已经跳转到真正的linux镜像文件种执行了,接下来继续判断程序卡在哪里。