1Linux内核移植要点

发布 2022-09-20 18:34:28 阅读 2622

第20章 linux内核移植。

软件移植的概念简单地说就是让一套软件在指定的硬件平台上正常运行。移植至少包括了两个不同的硬件或者软件平台。对于应用软件来说,移植主要考虑操作系统的差异,重点在修改系统调用。

本章的重点是linux内核移植,需要考虑硬件平台的差异,涉及较多知识。主要内容如下:

linux内核移植要点;

内核体系结构框架;

从现有**移植内核。

20.1 linux内核移植要点。

linux的**完全开放以及其良好的结构设计非常适于嵌入式系统。移植linux系统包括内核、程序库和应用程序,其中最主要的就是内核移植。由于linux内核的开放性,出现了许多针对嵌入式硬件系统的内核版本,其中著名的包括μclinux、rt-linux等。

linux本身对内存管理(mmu)有很好的支持。因此,在移植的时候首先要考虑到目标硬件平台是否支持mmu。以arm平台为例,arm7内核的cpu不支持mmu,无法直接把linux内核**移植到arm7核的硬件平台上。

μclinux是专门针对arm7这类没有mmu的硬件平台上设计的,它精简了mmu部分**。本书的目标平台是s3c2440a,该处理器基于arm9核,支持mmu,可以直接移植linux 2.6版本的内核**。

一个硬件平台最主要的是处理器,因此在移植之前需要了解目标平台的处理器。arm处理器内部采用32位的精简指令架构(risc),核心结构设计相对简单,有低耗电量的优势,被广泛应用到各种领域。下面介绍一下移植linux内核对硬件平台需要考虑的几个问题。

1.目标平台。

目标平台包括了嵌入式处理器和周围器件,处理器可能整合了一些周围器件,如中断控制器、定时器、总线控制器等。在移植之前需要确定被移植系统对外部设备和总线的支持情况。本书的arm开发板采用mini2440平台,在s3c2440a外围连接了许多外围设备,包括nor flash存储器、nand flash存储器、网络接口芯片、usb控制器等。

在s3c2440a处理器内部集成了许多常用的控制器以及嵌入式领域常用的总线控制器。对于移植linux内核来说,操作处理器内部的控制器要比外部的设备容易得多。

2.内存管理单元(mmu)

前面提到过mmu,对于现代计算机来说,mmu负责内存地址保护、虚拟地址和物理地址相互转换工作。在使用mmu的硬件平台上,操作系统通过mmu可以向应用程序提供大于实际物理内存的地址空间,使应用程序获得更高性能。linux的虚拟内存管理功能就是借助mmu实现的。

在移植的时候要考虑目标平台的mmu操作机制,这部分**是较难理解的,最好能在相似**基础上修改,降低开发难度。

3.内存映射。

嵌入式系统大多都没有配备硬盘,外部存储器只有flash,并且系统内存也非常有限。内存控制器(memory controller)负责内部和外部存储器在处理器地址空间的映射,由于硬件预设的地址不同导致每种平台内存映射的地址也不同。在移植时需要参考硬件的用户手册,得到内存地址的映射方法。

4.存储器。

由于嵌入式系统多用flash存储器作为存储装置。对于文件系统来说,在pc流行的ext2、ext3文件系统在嵌入式系统无法发挥作用。幸好linux支持许多文件系统,针对flash存储器可以使用jffs2文件系统。

在移植的时候,不必要的文件系统都可以裁剪掉。

实验1Linux系统的移植

1.开发前软硬件连接设置。在开发之前可能需要进行一些硬件的连接。1 跳线设置 默认出厂跳线,boot 跳线 nand flash 启动模式 2 电源连接 可通过实验箱配件提供电源线接到220v 交流电源插座上 接口为箱体左侧电源插口 3 usb线连接 将实验箱配件提供的 mini usb线插到emb...

Linux可移植 1

linux与windows起步阶段。说明一点,下面关于windows小知识,是在查询可移植性问题时,顺便了解的。现给出可移植性方面的知识。1.可移植性是 从一种体系结构移植到另一种不同的体系结构。可移植性一般分为两种 软件可移植性硬件可移植性。软件可移植性是指 可以在不同平台间移植,硬件移植性是指在...

实验1Linux入门

实验类型 验证性实验。1 了解linux运行环境。2 熟悉linux的常用基本命令。3 熟悉和掌握linux下常用编辑工具vi。1 登录linux。2 熟悉linux的常用基本命令如ls who pwd ps等。3 通过windows操作系统中的ftp程序,练习windows和linux之间的文件交...