嵌入式核心是在嵌入式硬体和软体之间的抽象层,它具有五个方面的作用:任务管理(Task Management)、定时(Timers)、设备I/O主管(Device I/O Supervisor)、动态存储分配(Dynamic Memory Allocation)、任务间同步通信(Inter-task Communication&Synchronization)。嵌入式系统中的核心是系统的核心,系统所有的任务及所完成的功能都是在核心的控制之下完成的。我们可以编程,然后通过程式控制核心完成我们所需要的工作。
基本介绍
- 中文名:嵌入式核心
- 外文名:Embedded core
- 套用领域:计算机等
- 组成部分:pu初始化、执行绪调度等
- 实质:嵌入式硬体和软体之间的抽象层
- 地位:系统的核心
分类
一个系统要进行工作要包括三部分,即boot+ 核心+ 档案系统。而真正核心的东西其实很少,包括cpu初始化、执行绪调度、记忆体分配、档案系统、网路协定栈、驱动这些部分。在基于优先权的调度中,核心处理任务所需的仅仅是每个任务的优先权,倘若一个任务的优先权高于另外一个任务的优先权,那幺该任务会先于另外一个任务执行。而对于安全性要求很高的系统,就需要利用分区调度来完成。在分区调度中,核心要求任务分成许多组,每一个组中含有许多相关的任务。分区调度器根据一系列的时钟视窗来执行某个任务。每个过程中的任务只有当时钟视窗来临这个任务时才开始运行,所有过程中的其他任务在这个过程中则不能运行。
以linux为例,Linux可以分为User Space和Kernel Space,即构成用户空间和核心空间。
用户空间:应用程式 C库 系统配置档案等
核心空间:在记忆体中,用户一般不能直接接触到(系统调用接口,体系结构相关的一些代码等等)
其实核心空间与用户空间是程式执行的两种不同的状态,通过系统调用和硬体中断能够完成从用户空间到核心空间转移。
核心架构
核心架构是有七个子系统组成的。
1. 系统调用接口模组
2. 进程管理模组
3. 记忆体管理子系统
4. 体系结构相关的子系统(和CPU密切相关)
5. 虚拟档案系统
6. 网路协定栈子系统
7. 设备驱动程式模组
目录档案
核心源码下几个重要的目录档案
arch目录:arch是architecture的缩写,核心所支持的每种cpu体系,在该目录下都有对应的子目录。每个CPU的子目录,有进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,记忆体管理,系统调用等
documentation目录:核心的文档(比如一些驱动的使用方法,一些核心的更新记录等等都是放在这个目录里面)
drivers目录:设备驱动程式
include目录:核心所需要的头档案,与平台无关的头档案在include/linux子目录下,与平台相关的头档案则放在相应的子目录中
fs目录:存放各种档案系统的实现代码,每个子目录对应一种档案系统的实现,公用的源程式用于实现虚拟档案系统VFS
核心配置编译
核心配置
下载解压核心源码,在核心源码目录下,有两个命令可以配置核心
1. make config: 基于文本模式的互动式配置
2. make menuconfig: 基于文本模式的选单型配置(这个配置方法更直观、简单、高效)
三个选项所代表的意义:
<*>选择该功能,该功能会被编译进核心,运行在记忆体中
<M>选中该功能,核心模组,不编译进核心,会将相应的模组编译成.O档案,然后放到相应的目录下存放在硬碟里面,当要用到该功能时,核心会把该功能载入到记忆体中,不用的时候从记忆体中删除,这样可以节省记忆体,提高记忆体利用率
< >本次编译不选中该功能
核心配置的结果:核心配置通常是在一个已有的配置档案基础上,通过修改得到新的配置档案,linux核心提供了一系列可供参考的核心配置档案,位于Arch/$cpu/configs
核心编译
X86: make bzImage
arm: make uImage ARCH=arm CROSS_COMPILE=arm-linux-
安装核心
核心清理
未来发展
嵌入式核心是集成的下一步发展。通常,集成是工业三大要素--更高性能、更短面试时间和更低製造成本的主要策略。在不断面向更高集成度的前进道路上,微处理器和可程式逻辑器件沿着相同的道路在各自发展。在更高性能的推动下,微处理器的数据通道变得更宽更远,能处理更长的指令。板上高速缓冲,更长的时钟速率和更高效地逻辑操作提高了工作速度。