S3C2410 Linux 2.6.35.7 内核启动分析
"S3C2410 Linux 2.6.35.7内核启动分析第二阶段涉及的关键步骤和结构体解析" 在Linux 2.6.35.7内核启动过程中,第二阶段的启动至关重要,它在硬件初始化的基础上继续构建操作系统的核心架构。这一阶段的起点是汇编语言代码\arch\arm\kernel\head.S,它负责执行一系列关键任务,以确保C代码的顺利执行。 首先,CPU ID的检查确保了系统正在使用的处理器与内核支持的类型匹配。这对于多处理器系统尤其重要,因为它需要正确地识别和配置每个CPU。这一过程通常通过读取CPU的标识寄存器来完成。 其次,machine ID(开发板ID)的验证确保内核针对的是正确的硬件平台。这个ID是在开发板特定的文件中定义的,如arch/arm/mach-s3c2410/mach-smdk2410.c,这使得内核能够识别并适应不同的硬件特性。 接下来,初始化页表是构建内存管理的基础。在ARM架构中,页表用于将虚拟地址映射到物理地址,这是为了实现内存保护和高效内存管理。在第二阶段,内核会创建一个初始的页表,以便在C代码执行时能够访问内存。 设置C代码运行环境涉及初始化堆栈、设置全局描述符表(GDT)以及其他必要的系统寄存器。这些操作使得内核可以安全地执行C语言代码,因为C代码依赖于这些环境来访问内存和执行控制流。 在这些准备工作完成后,控制权传递给内核的第一个真正C函数`start_kernel()`。这个函数是整个内核初始化过程的起点,它将调用更多的函数来初始化设备驱动、调度器、网络子系统等。 在第二阶段,有两个重要的结构体起到核心作用: 1. `struct proc_info_list`:这个结构体描述了CPU的相关信息,包括CPU的特性、状态等。它的定义和处理在arch/arm/include/asm/procinfo.h和arch/arm/mm/proc_arm920.S中进行。 2. `struct machine_desc`:这个结构体存储了开发板或机器的特定信息,比如中断控制器的配置、设备的布局等。它的定义在arch/arm/include/asm/mach/arch.h中,而具体的实现和赋值则在与开发板相关的源文件中,例如arch/arm/mach-s3c2410/mach-smdk2410.c。 在编译时,所有的machine ID列表会根据arch/arm/tools/mach-types文件的内容,链接到内核映像vmlinux的特定段中。这两个段`.proc.info.init`和`.arch.info.init`在链接脚本arch/arm/kernel/vmlinux.lds中被定义和安排,以供内核加载时使用。 S3C2410 Linux 2.6.35.7内核启动的第二阶段是连接硬件和软件的关键步骤,它为后续的系统初始化提供了必要的基础设施。通过对CPU ID、machine ID的检查以及页表和C运行环境的设置,内核确保了与硬件的正确交互,并为运行高层次的系统服务做好准备。
![](https://csdnimg.cn/release/download_crawler_static/3818485/bg3.jpg)
剩余14页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 1
- 资源: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)