【ARM嵌入式Linux系统开发详解 弓雷】【第20章 Linux内核移植】20.1 Linux内核移植要点

转自:http://blog.csdn.net/linuxdianc/article/details/5029282

转此文只是为了留个链接,以后方便查阅。上面这个博客里的内容挺多,虽然只有书中的几章,但内容还是很有代表性的。路过的可以去看看,对搞嵌入式的很有帮助。

 另外,http://book.51cto.com/art/200912/169104.htm这个地址也可以找到此文。

 

 

[+]

  1.   Linux内核移植要点
    1. .目标平台
    2. .内存管理单元(MMU)
    3. .内存映射
    4. .存储器

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文件系统。在移植的时候,不必要的文件系统都可以裁剪掉。

 

你可能感兴趣的:(【ARM嵌入式Linux系统开发详解 弓雷】【第20章 Linux内核移植】20.1 Linux内核移植要点)