内核启动过程分析(自解压后到start_kernel)
内核启动过程分析
在学习过程中“行走的流云”的博文给了我很大的帮助,我也复制了很多他的总结,在这里感谢他!
本文件的代码主要是讲内核开始工作前的准备工作,其工作主要有一下几点:
1. 进入管理模式,判断处理器ID是否匹配,判断机器ID是否匹配,判断atags指针是
否合法。
2. 建立页表,实现虚拟地址和物理地址的映射。
3. 关闭Icache、Dcache、清空write buffer、使TLB无效
4. 使能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(Instruction cache)可以是打开的,也可以是关闭的,这个没有强制要求;
5. CPU 通用寄存器0 (r0)必须是 0; 6. CPU 通用寄存器1 (r1)必须是 ARM Linux machine type
7. CPU 通用寄存器2 (r2) 必须是 kernel parameter list 的物理地址
/*
* linux/arch/arm/kernel/head.S
*
* Copyright (C) 1994-2002 Russell King
* Copyright (c) 2003 ARM Limited
* All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Kernel startup code for all 32-bit CPUs
*/
#include <linux/linkage.h>
#include <linux/init.h>
#include <asm/assembler.h>
#include <asm/domain.h>
#include <asm/ptrace.h>
#include <asm/asm-offsets.h>
你可能喜欢
- linux内核启动分析
- Linux内核分析
- Linux内核配置
- 嵌入式Linux
- 代码管理
- 内存管理
- ARM linux内核启动分析16页
- linux2.6内核启动分析--李枝果(不看是你的损失^_^)22页
- 这是一篇对armlinux内核启动的分析24页
- joyfire的linux-2内核分析—1启动61页
- arm linux内核启动过程(自解压后)的启动分析10页
- linux启动流程分析---内核解压缩过程2页
- Linux 内核分析一8页
- Linux内核源代码分析 (6)13页
- Linux内核源代码分析 (5)12页
- Linux内核分析方法谈36页
- Linux内核崩溃原因分析及错误跟踪技术8页
- 北京大学软件与微电子学院 Linux内核分析及驱动编程_实验2_模块7页
- Linux 2.6.19.x 内核编译配置选项简介53页
- Linux内核配置系统浅析84页
- Linux内核配置系统浅析10页
- Linux内核配置文件之解读Makefile32页
- Linux内核配置文件之解读Makefile6页
- Linux内核升级配置实验报告7页
- 嵌入式Linux系统的移植研究2页
- 嵌入式Linux操作系统的移植与研究3页
- 问为何要使用嵌入式Linux2页
- 基于嵌入式Linux的可自重构片上系统8页
- 一份基础的嵌入式Linux工程师笔试题11页
- 基于嵌入式Linux的塔机群防碰撞控制系统[1]4页
- 代码审查管理5页
- 代码标准管理制度1页
- 你需要知道的源代码管理的十条戒律8页
- 文档、代码审查管理及解决方案7页
- 技术部源代码管理制度3页
- 源代码控制管理办法4页


