您的位置:首页 > 编程语言

20.2 平台相关代码结构

2009-12-18 08:40 239 查看

20.2 平台相关代码结构

移植Linux是一项复杂的工作,不仅对目标硬件平台的资源要充分了解,还需要了解Linux内核代码,尤其是与体系结构有关的部分。本节从内核的平台相关代码入手,先介绍内核的工作原理,然后讲解如何移植一个普通的Linux内核到S3C2440A为目标平台的开发板。
在第15章介绍过Linux内核代码结构,与平台相关的代码主要存放在arch目录下,对应的头文件在include目录下。以ARM平台为例,在arch目录下有一个arm子目录,存放所有与ARM体系有关的内核代码。
Linux内核代码目录基本是按照功能块划分的,每个功能块的代码存放在一个目录下。如mm目录存放内存管理单元相关代码;ipc存放了进程间通信相关的代码;kernel存放进程调度相关代码等。
arch目录下每个平台的代码都采用了与内核代码相同的目录结构。以arch/arm目录为例,该目录下mm、lib、kernel、boot目录与内核目录下对应目录的功能相同。此外,还有一些以字符串mach开头的目录,对应不同处理器特定的代码。从arch目录结构可以看出,平台相关的代码都存放到arch目录下,并且使用与内核目录相同的结构。使用SourceInsight工具可以看到许多的同名函数,原因就是内核代码调用的函数是平台相关的,每个平台都有自己的实现方法。对于内核来说,使用相同的名字调用,通过编译选项选择对应平台的代码。
移植内核到新的平台主要任务是修改arch目录下对应体系结构的代码。一般来说,已有的体系结构提供了完整的代码框架,移植只需要按照代码框架编写对应具体硬件平台的代码即可。在编写代码过程中,需要参考硬件的设计包括图纸、引脚连线、操作手册等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: