嵌入式Linux设计:内核分析

嵌入式技术

1330人已加入

描述

Linux 内核提供对内存管理、进程间通信机制、中断管理和 TCP/IP 网络的支持。目录结构将依赖于架构的代码分开,允许使用基本算法和特定平台的特定代码调用具有更高的可靠性。它允许以相当直接的方式添加对特定于设备的功能的支持。大多数桌面 Linux 供应商都将内核作为其发行版的一部分提供。此类内核包括对现代计算系统中可用的各种硬件设备的支持。许多这些功能都内置在运行时可加载模块中,这是用于检测硬件设备的各种自动化工具所必需的。这种方法允许 Linux 供应商使用单个预编译内核包来支持广泛的系统。与台式机、服务器或企业对应物不同,嵌入式 Linux 系统通常没有默认内核。造成这种情况的原因是多方面的,例如通用内核无法管理一些定制的嵌入式系统,以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。或企业同行,嵌入式 Linux 系统通常没有默认内核。造成这种情况的原因是多方面的,例如通用内核无法管理一些定制的嵌入式系统,以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。或企业同行,嵌入式 Linux 系统通常没有默认内核。造成这种情况的原因是多方面的,例如通用内核无法管理一些定制的嵌入式系统,以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。造成这种情况的原因是多方面的,例如通用内核无法管理一些定制的嵌入式系统,以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。造成这种情况的原因是多方面的,例如通用内核无法管理一些定制的嵌入式系统,以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。以及使内核配置尽可能简单。更简单的配置更容易定义,并且通常需要更小的资源占用。像任何开源项目一样,内核不断发展,新硬件的模块更新是主要变化。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。Linux 系统支持目前市场上的大部分 PC 硬件,其灵活的开放代码使其可编辑并适应各种定制系统。这种系统的灵活性非常适合工业管理和控制各个领域的嵌入式技术。

内核选择

嵌入式系统设计需要与所选操作系统兼容的硬件——在这种情况下是 Linux。分发的选择涉及各种修改和基本配置,以使其适应所需的功能。当您开始使用 Linux 时,可以从官方网站http://www.kernel.org/(内核上游)下载多个内核。有各种适当日期的版本旨在用于 Linux 系统的各种发行版。较旧的系列(例如 2.4 版本)仍在许多设备中使用,并且有时会使用维护版本进行更新。

嵌入式设备的 Linux 内核开发倾向于根据所讨论的处理器架构进行划分。例如,Russell King 带领一群开发人员积极为基于 ARM 的设备开发 Linux(通过网站 http://www.arm.linux.org.uk)。ARM 开发人员将他们的工作基于原始 Linux 内核并为 ARM 开发特定补丁。这些源代码补丁允许新的硬件支持并修复影响上游内核中 ARM 架构的现有错误。有时,这些补丁会通过自动化过程包含在各种内核中。
Linux 2.4 内核无疑不再与新的嵌入式项目相关,因为它早已被最新版本 2.6 所取代。虽然 2.6 系列内核以其对大型服务器的增强而闻名,但它还为资源受限的嵌入式设备添加了一组丰富的配置选项。

尽管使用 2.6 内核有很多好处,但它还是花了很长时间才成为新嵌入式系统的主要内容。目前使用的是2.6以后的新版本,内核版本的选择取决于应用、硬件和成本等诸多因素。新版本可能并不总是一个好的选择。

Linux 内核的主流 2.6 系列一般可从 kernel.org 获得。有两种方法可以获取此内核的源代码:

  • 作为存档,可以从中解压缩特定的内核版本。这些版本是独立的并发布用于开发。例如,您可以在名为 linux-2.6.20.tar.bz2 的文件中获取 2.6.20 内核版本。
  • 使用软件配置管理 (SCM) 工具,跟踪开发以及其他官方版本。您还可以使用各种工具查看内核更改,例如 gtik 图形变更集监控工具,可让您跟踪每天的开发。

对于新的嵌入式项目,通常首选官方内核版本;所有开发人员的总体目标是在更高版本的官方内核中进行更改,以便它们可以立即用于未来的项目。传统上,嵌入式开发人员会选择特定版本的 Linux 内核并坚持使用它,直到需要进行极端更改。
Linux 内核是抢占式多任务处理。这意味着内核会暂停一些任务,以确保每个应用程序都可以使用 CPU。例如,如果一个应用程序正在运行但正在等待一些数据,内核将暂停该应用程序以允许另一个程序使用 CPU 资源。否则,系统可能会在等待数据或其他程序运行的任务上浪费资源。然后内核将强制程序等待或停止使用 CPU。

Linux 内核是可移植的。可移植性是使 Linux 流行并适用于各种处理器和系统的最佳特性之一。一些受支持的处理器类型包括 AMD、ARM、Intel 等。

Linux 内核架构

尽管版本不同,Linux 内核的基本架构(图 1 和图 2)仍然保持不变。它基于两个级别的区别:内核空间和用户空间。程序驻留在用户空间中,而内核驻留在内核空间中。Kernel可以分为三个子层次:系统调用(读、写)、不依赖于架构的内核代码和依赖于系统架构的代码(Board Support Package,BSP)。其架构可分为以下子系统:

  • 硬件抽象层 (HAL)
  • 内存管理器
  • 调度器
  • 文件系统
  • I/O 子系统(输入/输出)
  • 网络子系统
  • 工业PC

硬件抽象层 (HAL) 将平台的硬件虚拟化,以便可以轻松地将不同的驱动程序移植到任何硬件上。HAL 等效于大多数实时操作系统 (RTOS) 上可用的 BSP,除了商业 RTOS 上的 BSP 通常具有允许轻松移植的标准 API。HAL 支持以下硬件组件:处理器、缓存和 MMU、内存映射设置、中断处理、DMA 支持、总线管理和电源管理。

嵌入式

图 1:系统中的 Linux 内核

嵌入式

图 2:Linux 内核,一般布局

在嵌入式系统中,板卡支持包 (BSP) 是用于为给定板卡实现特定功能的代码,符合给定操作系统。它通常使用引导加载程序构建,其中包含对加载板上所有设备的操作系统和设备驱动程序的最低支持。

内存管理器负责控制对硬件内存资源的访问,并为内核子系统(如驱动程序、文件系统和网络堆栈)提供动态内存。

Linux 调度程序提供多任务处理能力,并随着内核版本的发展而发展,目标是提供确定性的进程调度策略。在 Linux 上,各种文件系统由称为 VFS 或虚拟文件系统的层管理,它为存储在系统中各种设备上的数据提供一致的视图。

任何 Linux 设备,无论是嵌入式系统还是服务器,都需要至少一个文件系统。对文件系统的需求源于所有低级设备都可以作为文件访问的事实。

Linux I/O 子系统为设备提供了一个简单而统一的接口。支持三种类型的设备:

  • 字符设备
  • 网络设备
  • 块设备

Linux 最大的优势之一是它对各种网络协议的强大支持。Linux 上的进程间通信包括信号(用于异步通信)、管道、套接字以及 System V IPC 机制,例如共享内存和消息队列。

直接访问硬件通常非常复杂,内核实现硬件抽象,例如上述硬件抽象层。这些抽象的目标是提供统一的接口,以简化开发人员的工作。作为 HAL 的一个功能,内核可以分为三大类:

  • 单片内核:直接实现完整的硬件抽象。
  • 微内核:为更强大的功能提供一组狭窄的抽象和实现软件。
  • 混合内核:类似于微内核,增加了一些特性来提高性能。

请在此处找到该系列的第一集。 

 

   审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分