嵌入式Linux操作系统移植.ppt
《嵌入式Linux操作系统移植.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux操作系统移植.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、最新的最新的LinuxLinux内核版本可以从官方站点获取。内核版本可以从官方站点获取。因为嵌入式因为嵌入式LinuxLinux系统在开发过程中需要对系统在开发过程中需要对LinuxLinux内核进行重新定制,所以熟悉内内核进行重新定制,所以熟悉内核配置、编译和移植是非常重要的。核配置、编译和移植是非常重要的。1.Linux1.Linux内核的版本内核的版本 Linux Linux内核的版本号分为主版本号、次版本号和扩展版本号等。根据稳定版内核的版本号分为主版本号、次版本号和扩展版本号等。根据稳定版本、测试版本和开发版本定义不同版本序列。本、测试版本和开发版本定义不同版本序列。9.1 9.1
2、嵌入式嵌入式LinuxLinux基本概念基本概念 2.Linux系统的分类 (1)以功能差异和发行组织分类l标准标准linuxlinux。lClinuxClinux。无。无MMUMMU支持的支持的linuxlinux系统,运行在无系统,运行在无MMUMMU的的CPUCPU上。上。Linux-RTLinux-RT。是最早在。是最早在linuxlinux上实现硬实时支持上实现硬实时支持的的linuxlinux发行版本。发行版本。lLinux/RTAILinux/RTAI。lEmbedixEmbedix。由。由LineoLineo公司开发,基于公司开发,基于PowerPCPowerPC和和x86x8
3、6平台平台开发的。开发的。Red Hat LinuxRed Hat Linux。l红旗红旗LinuxLinux等。等。(2 2)以应用的嵌入式平台分类)以应用的嵌入式平台分类 在嵌入式在嵌入式LinuxLinux系统开发过程中,内核移植是将系统适系统开发过程中,内核移植是将系统适合于自己特定的硬件平台系统的重要步骤,只有引导合于自己特定的硬件平台系统的重要步骤,只有引导内核完毕,才能运行用户应用程序。内核完毕,才能运行用户应用程序。9.1 9.1 嵌入式嵌入式LinuxLinux基本概念基本概念3.Linux内核组成:内存管理、进程调度、虚拟文件系统、网络接口、进程间通信.Linux内核由进程
4、管理、内存管理、虚拟文件系统、网络接口和进程间通信五大子系统组成,各个子系统之间的依赖关系如下图所示。9.1 9.1 嵌入式嵌入式LinuxLinux基本概念基本概念内存管理内存管理虚拟文件系统虚拟文件系统进程调度进程调度网络接口网络接口进程间通信进程间通信9.1 9.1 嵌入式嵌入式LinuxLinux基本概念基本概念LinuxLinux系统结构层次系统结构层次可以发现Linux内核中各个系统之间有如下关系:(1)进程调度处于中间。(2)进程调度与内存管理的依赖关系(3)进程间通信依赖于内存管理。(4)虚拟文件系统与网络接口之间的关系。(5)内存管理与虚拟文件系统之间的关系。9.1 9.1
5、嵌入式嵌入式LinuxLinux基本概念基本概念Linux内核源码非常庞大,采用C语言和少量汇编实现,并且随着版本的发展不断增加。源码的工程管理采用目录树结构,并使用Makefile组织配置编译。获得新的Linux2.6内核源码之后,一般首先仔细阅读顶层目录的README文件,了解对内核的概述和编译命令说明。顶层目录中另一个比较重要的文件是Makefile,它是整个内核配置编译的核心文件,负责组织目录树中的子目录的配置编译管理,还决定了体系结构和内核版本号等。9.2 Linux9.2 Linux内核源码结构内核源码结构 Linux内核源码非常庞大,采用C语言和少量汇编实现,并且随着版本的发展不
6、断增加。源码的工程管理采用目录树结构,并使用Makefile组织配置编译。获得新的Linux2.6内核源码之后,一般首先仔细阅读顶层目录的README文件,了解对内核的概述和编译命令说明。顶层目录中另一个比较重要的文件是Makefile,它是整个内核配置编译的核心文件,负责组织目录树中的子目录的配置编译管理,还决定了体系结构和内核版本号等。9.2 Linux9.2 Linux内核源码结构内核源码结构9.2 Linux9.2 Linux内核源码结构内核源码结构1 1 LinuxLinux内核源代码目录结构内核源代码目录结构arch包含和硬件体系结构相关的代码,每种平台占一个相应的目录。如arm、
7、avr32、blackfin、mips等。block块设备驱动程序的IO调度。crypto常用的加密和离散算法,还有一些压缩和CRC校验算法9.2 Linux9.2 Linux内核源码结构内核源码结构Documentation内核的说明文档。drivers设备驱动程序,其下细分为不同种类的设备。如block、char、mtd、net、usb、video等等。fs内核支持的文件系统的实现,如ext2、ext3、cramfs、jffs2、nfs等。LinuxLinux内核源代码目录结构内核源代码目录结构9.2 Linux9.2 Linux内核源码结构内核源码结构LinuxLinux内核源代码目录结
8、构内核源代码目录结构include头文件。与系统相关的头文件放在include/linux下,与ARM体系结构相关的头文件放在include/asm-arm下。init内核初始化代码。ipc进程间通信代码。9.2 Linux9.2 Linux内核源码结构内核源码结构LinuxLinux内核源代码目录结构内核源代码目录结构kernel内核的核心代码,包括进程调度、定时器等。和arm平台相关的核心代码在arch/arm/kernel目录下。lib库文件代码mm内存管理代码,和arm平台相关的内核管理代码在arch/arm/mm目录下。9.2 Linux9.2 Linux内核源码结构内核源码结构Li
9、nuxLinux内核源代码目录结构内核源代码目录结构net网络相关的代码,实现了各种常见的网络协议。scripts包含用于配置内核的各种脚本文件。只在配置时是有意义的。sound音频设备驱动的通用代码和硬件驱动代码都在这个文件件下面。Linux内核有两种映像:非压缩内核Image压缩内核zImage嵌入式系统存储容量有限,因此通常选择压缩内核zImage.要使用压缩内核zImage,需要在映像开头加入解压缩代码,将zImage解压后,才可以执行。9.2 Linux9.2 Linux内核源码结构内核源码结构2 2 LinuxLinux内核启动方案内核启动方案内核编译完成后,会在arch/arm/
10、boot目录下生成zImage文件。zImage文件的组成:pggy.o:压缩后的内核文件head.o:系统初级初始化代码文件misc.o:解压缩代码文件9.2 Linux9.2 Linux内核源码结构内核源码结构3 3 zImagezImage的构成的构成对于ARM处理器来讲,Linux内核zImage第一段代码入口位于arch/arm/boot/compressed/head.S文件中。它依次完成如下功能:初始化Cache、Mmu等设置跳转到C语言内核解压函数中 bl decompress_kernel跳转到非压缩内核启动汇编段b call_kernel9.2 Linux9.2 Linux
11、内核源码结构内核源码结构汇编部分汇编部分9.3.1 9.3.1 内核修改内核修改1.1.解压内核源码解压内核源码 使用如下命令进行加压:使用如下命令进行加压:tar jxvf tar jxvf2.2.修改修改MakefileMakefile 整个整个LinuxLinux内核工程是以内核工程是以MakefileMakefile为核心完成编译和连接的。为核心完成编译和连接的。进入内核源码目录,使用编辑工具打开一级目录下的进入内核源码目录,使用编辑工具打开一级目录下的MakefileMakefile文件,找到相文件,找到相关变量进行修改:关变量进行修改:ARCHARCH?=arm?=armCROSS
12、_COMPILECROSS_COMPILE?=arm-linux-?=arm-linux-9.3 9.3 内核移植的一般步骤内核移植的一般步骤3.修改目标板输入时钟使用编辑工具打开内核源码目录中arch/arm/mach-s3c2440/mach-smdk2440.c文件,找到函数mini2440_map_io(void)的实现代码,如下:s3c24xx_init_clocks(12000000);4修改MTD分区Linux下的MTD驱动程序接口被划分为两类模块:用户模块和硬件模块。内核MTD分区必须与Bootloader分区相一致。最后去掉ECC校验:将driver/mtd/nand/s3c
13、2410.c文件中的“NAND_ECC_SOFT,”语句将其改为“NAND_ECC_NONE;”。9.3 9.3 内核移植的一般步骤内核移植的一般步骤9.3 9.3 内核移植的一般步骤内核移植的一般步骤5.配置yaffs2文件系统的补丁YAFFS意义为yet another flash file system,也是一个开源的文件系统。YAFFS文件系统则是专门针对NAND flash的,源代码可以到上下载。使用如下命令解压补丁包:进入补丁所在目录,使用如下命令打补丁:./patch-ker.sh c 其中为linux内核源码所在目录。上面命令执行过程中相当于完成以下三项操作:(1)修改内核fs
14、/Kconfig:增加了一行:source fs/yaffs2/Kconfig(2)修改内核fs/Kconfig增加一行:ojb-$(CONFIG_YAFFS_FS)+=yaffs2/(3)在内核fs/目录下创建yaffs2目录9.3.2 内核配置 Linux内核版本不断更新,新的内核修订了旧内核的bug,并增加了许多新的特性。为了正确、合理、有选择地使用内核提供的模块,设置内核编译配置选项,一般主要有下面几个考虑。.节省存储空间。.节省运行空间。.减少漏洞。针对于一个新的目标系统按照上一节进行了内核的修改之后,就可以对内核进行进一步的配置工作。9.3 9.3 内核移植的一般步骤内核移植的一般
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 操作系统 移植
限制150内