美文网首页
嵌入式Linux基础教程第一版中文版之内核初始化

嵌入式Linux基础教程第一版中文版之内核初始化

作者: 汤普森 | 来源:发表于2019-09-28 00:22 被阅读0次

一、基础概念

1. 引导装入程序:会在系统加电后即取得对系统的控制权。用来完成底层的初始化任务、加载内核映像和系统的自我诊断,它包含内存转储和内核填充程序以修改和检查内存中的内容,同时也包含了底层的自检程序,包括对内存和I/O口的检测。最后,引导装入程序包含了一个用来引导并且把对系统的控制权交给另一个程序的逻辑,这个程序通常就是操作系统,例如Linux。

二、基础知识

1.认识head.o模块

1.对于大多数体系结构来说,对系统的控制权会由第二阶段引导装入程序直接传递给严格意义上的内核,即传递给名为head.o的模块。

2.当第二阶段引导装入程序完成任务之后,严格意义上的内核head.o就取得了对系统的控制权,并且从main.c程序中的start_kernel()函数开始执行。

3.对进行体系结构或者CPU级别的初始化。

4.执行的功能有:

检测处理器及整个体系结构的合法性;

创建初始化页表目录;

支持处理器的内存管理单元;

进行错误检测并且生成相应报告;

跳转到严格意义上的内核的起始处main.c。

2.认识main.c

1.对于ARM系列的处理器,head.o模块会使用如下方法将系统的控制权移交给严格意义上的内核。(bl start_kernel)

2.如果想要对开发Linux内核有更好的了解,那么花费时间去研究main.c中的代码将是一个非常好的方法。

3.绝大多数Linux内核的初始化工作都是通过start_kernel()函数来实现的。

4.start_kernel()调用的setup_arch()函数来执行CPU和硬件平台级别相关的初始化任务,识别给定的CPU的ID号和版本号,通过控制台输出一些相关信息。

3.认识内核命令行

1.引导装入程序或第二阶段引导装入程序通过一系列被称为命令行的参数实现对Linux的引导。

2.当某些平台的引导装入程序不能很好地识别Linux时,那么就在内核编译时定义命令行参数,并且将其作为Linux内核二进制映像固件代码的一部分。

3.关于Linux内核命令行参数,可参照文档:.../Documentation/kernel-parameters.txt。

4.Linux内核命令行参数的形式为:单个单词(rootwait等)、key=value对(rootfstype=ext4 init=/sbin/init等)、key=value1, value2, ...(earlycon=uart8250,mmio32,0xff1a0000等)。

5.内核命令行都是可用的,并且可以由许多的模块来处理。设备驱动程序编写者和内核开发者口可以为他们特定的需要而增加相应的命令行参数。

6.配置程序和设备驱动程序与在内核命令行中所指定控制台参数进行通信的难点,在于要求该参数时标准通用的模式。

7.在内核中,应当有一种机制,知道每一个命令行参数的使用信息,如每个参数的目标函数。

相关文章

网友评论

      本文标题:嵌入式Linux基础教程第一版中文版之内核初始化

      本文链接:https://www.haomeiwen.com/subject/rrhbaqtx.html