内核启动过程分析(自解压后到start_kernel).doc

内核启动过程分析(自解压后到start_kernel)

内核启动过程分析 在学习过程中“行走的流云”的博文给了我很大的帮助,我也复制了很多他的总结,在这里感谢他! 本文件的代码主要是讲内核开始工作前的准备工作,其工作主要有一下几点: 进入管理模式,判断处理器ID是否匹配,判断机器ID是否匹配,判断atags指针是否合法。 建立页表,实现虚拟地址和物理地址的映射。 关闭Icache、Dcache、清空write buffer、使TLB无效 使能MMU、使能cache跳转到start kernel开始真正的内核运行。 对于经过压缩的内核(zImage),先运行解压缩decompress_kernel,然后还需要重定位,然后调用内核,就象跳到未压缩的内核中的开始处,内核的startup在arch/arm/kernel/head.S中,进行页表初始化和处理器缓存初始化等工作,然后跳到C代码init/main.c中的start_kernel,接下来的事情就是大众化工作了,在这里,我们继续分析解压缩后的工作,即是arch/arm/kernel/head.S的工作内容。 首先先说下内核的启动条件: 1. CPU必须处于SVC(supervisor)模式,并且IRQ和FIQ中断都是禁止的; 2. MMU(内存管理单元)必须是关闭的, 此时虚拟地址对物理地址; 3. 数据cache(Data cache)必须是关闭的 4. 指令cache(Instruc

文档评论(0)

1亿VIP精品文档

相关文档