yaffs文件系统制作

上传人:jiups****uk12 文档编号:40001286 上传时间:2018-05-22 格式:DOC 页数:34 大小:205.50KB
返回 下载 相关 举报
yaffs文件系统制作_第1页
第1页 / 共34页
yaffs文件系统制作_第2页
第2页 / 共34页
yaffs文件系统制作_第3页
第3页 / 共34页
yaffs文件系统制作_第4页
第4页 / 共34页
yaffs文件系统制作_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《yaffs文件系统制作》由会员分享,可在线阅读,更多相关《yaffs文件系统制作(34页珍藏版)》请在金锄头文库上搜索。

1、第一章 移植内核1.1 Linux 内核基础知识在动手进行 Linux 内核移植之前,非常有必要对 Linux 内核进行一定的了解,下面从 Linux 内核的版本和分类说起。1.1.1 Linux 版本Linux 内核的版本号可以从源代码的顶层目录下的 Makefile 中看到,比如2.6.29.1 内核的 Makefile 中:VERSION = 2PATCHLEVEL = 6SUBLEVEL = 29EXTRAVERSION = .1其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如 2.4、2.5、2.6等,稳定版本的德主版本号用偶数表示(比如 2.6 的内核),开发中

2、的版本号用奇数表示(比如 2.5),它是下一个稳定版本内核的前身。“SUBLEVEL”称为次版本号,它不分奇偶,顺序递增,每隔 12 个月发布一个稳定版本。“EXTRAVERSION”称为扩展版本号,它不分奇偶,顺序递增,每周发布几次扩展本版号。1.1.2 什么是标准内核按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在 http:/www.kernel.org/维护和获取的内核,实际上它也有平台属性的。这些 linux 内核并不总是适用于所有 linux 支持的体系结构。实际上,这些内核版本很多时候并不是为一些流行的嵌入式 linux 系统开发的,也很少运行于这些嵌入式 linux

3、系统上,这个站点上的内核首先确保的是在 Intel X86 体系结构上可以正常运行,它是基于 X86 处理器的内核,如对 linux-2.4.18.tar.bz2 的配置 make menuconfig 时就可以看到,Processor type and features-中只有 386、486、586/K5/5x86/6x86/6x86MX、Pentium-Classic、Pentium-MMX、Pentium-Pro/Celeron/Pentium-II、Pentium-III/Celeron(Coppermine)、Pentium-4、K6/K6-II/K6-III 、Athlon/Du

4、ron/K7 、Elan 、Crusoe、Winchip-C6 、Winchip-2 、Winchip-2A/Winchip-3 、CyrixIII/C3 选项,而没有类似 Samsun 2410等其他芯片的选择。如果需要用在其他特定的处理器平台上就需要对内核进行打补丁,形成不同的嵌入式内核。实际上,不同处理器系统的内核下载站点中提供的也往往是补丁 patch 而已,故原 x86 平台上的内核变成了基础内核,也被称为标准内核了。1.1.3 Linux 操作系统的分类第一层次分类:以主要功能差异和发行组织区分(基础 linux 系统/内核)。1、标准 linux2、Clinux无 MMU 支持的

5、 linux 系统,运行在无 MMU 的 CPU 上。3、Linux-RT是最早在 linux 上实现硬实时支持的 linux 发行版本。4、Linux/RTAI支持硬实时的 linux,于 RT-linux 最大的不同之处在于 RTAI 定义了 RTHAL,它将 RTAI 需要在 linux 中修改的部分定义成一组 API 接口,RTAI 只使用 API接口与 linux 交互。5、Embedix由 Lineo 公司开发,基于 PowerPC 和 x86 平台开发的。6、Blue Cat Linux7、Hard Hat Linux8、其他第二层分类:以应用的嵌入式平台区分(嵌入式 linux

6、 系统/内核,使上面第一类中的各种 linux 系统扩展为对特定目标硬件的支持,成为一种具体的嵌入式linux 系统)由于嵌入式系统的发展与 linux 内核的发展是不同步的,所以为了要找一个能够运行于目标系统上的内核,需要对内核进行选择、配置和定制。因为每一种系统都是国际上不同的内核开发小组维护的,因此选择 linux 内核源码的站点也不尽相同。第二层分类中的 linux 系统/内核相对于第一层分类的标准内核来说,也可以称为嵌入式 linxu 系统/内核。如应用在 ARM 平台上的嵌入式 Linux 系统通常有 arm-linux(常运行在 arm9 平台上),Clinux(常用在 arm7

7、 平台上),在标准 linux 基础上扩展对其他的平台的支持往往通过安装 patch 实现,如 armlinux 就是对 linux 安装 rmk 补丁(如 patch-2.4.18-rmk7.bz2)形成的,只有安装了这些补丁,内核才能顺利地移植到 ARM Linux 上。也有些是已经安装好补丁的内核源码包,如 linux-2.4.18-rmk7.tar.bz2。不同处理器系统的内核/内核补丁下载站点:处理器系统 适合的内核站点 下载方式x86 http:/www.kernel.org/ ftp, http, rsyncARM http:/www.arm.linux.org.uk/devel

8、oper/ ftp, rsyncPowerPC http:/penguinppc.org/ ftp, http, rsync, BitKeeperMIPS http:/www.linux-mips.org/ ftp, cvsSuperH http:/ cvs, BitKeeperM68K http:/linux-m68k.org/ ftp, httpnon-MMU CPUs http:/www.uclinux.org/ ftp, http这些站点不仅仅是 linux 内核站点,它们可能直接提供了针对你的目标硬件系统的 linux 内核版本。1.1.4 linux 内核的选择选择内核版本是很困难

9、的,应该与负责维护该内核的小组保持联系,方法是通过订阅一些合适的邮件列表(maillist)并查看邮件中相关的重要新闻,以及浏览一些主要站点,可以得到该内核的最新发展动态。如针对 ARM 的 Linux 内核,可以访问 http:/www.arm.linux.org.uk/ 并订阅该网站上提供的 maillist 就可以了。如果觉得查阅邮箱中的邮件列表耗费太多时间,那么至少每周访问所关心的内核网站,并阅读 Kernel Traffic 提供的过去一周中在内核邮件清单中发生的重要的摘要,网址为 http:/ 这样就可以得到相关 Linux 内核的最新信息。 并不是 Linux 的每个版本都适合

10、ARM-Linux 的移植,可以加入其邮件列表(maillist)以获得内核版本所支持硬件的相关信息,表中列出的资源可以帮助你找到哪些没有列出的功能可以被你的系统支持。ARM Linux 的移植,建议使用 2.4.x 或 2.6.x 版本。Linux 内核补丁可以到 ARM Linux 的 ftp(ftp:/ftp.arm.linux.org.uk )下载。1.2 Linux 内核启动过程概述一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序。其中 Bootloader 是系统启动或复位以后执行的第一段代码,它主

11、要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。根文件系统是 Linux 系统的核心组成部分,它可以做为 Linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。1.2.1 Bootloader 启动过程Bootloader 在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最

12、根本的功能就是为了启动 Linux 内核。1 、Bootloader 的概念和作用 Bootloader 是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于 PC 机上的 BIOS。在完成对系统的初始化任务之后,它会将非易失性存储器(通常是 Flash 或 DOC 等)中的 Linux 内核拷贝到 RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。由此可见,Bootloader 和 Linux 内核有着密不可分的联系,要想清楚的了解 Linux内核的启动过程,我们必须先得认识 Bootloader 的执行过程,这样才能对嵌入式系统的整个启动过

13、程有清晰的掌握。 2 、Bootloader 的执行过程 不同的处理器上电或复位后执行的第一条指令地址并不相同,对于 ARM 处理器来说,该地址为 0x00000000。对于一般的嵌入式系统,通常把 Flash 等非易失性存储器映射到这个地址处,而 Bootloader 就位于该存储器的最前端,所以系统上电或复位后执行的第一段程序便是 Bootloader。而因为存储 Bootloader 的存储器不同,Bootloader 的执行过程也并不相同,下面将具体分析。 嵌入式系统中广泛采用的非易失性存储器通常是 Flash,而 Flash 又分为 Nor Flash 和 Nand Flash 两种

14、。 它们之间的不同在于:Nor Flash 支持芯片内执行(XIP, eXecute In Place),这样代码可以在 Flash 上直接执行而不必拷贝到 RAM 中去执行。而 Nand Flash 并不支持 XIP,所以要想执行 Nand Flash 上的代码,必须先将其拷贝到 RAM 中去,然后跳到 RAM 中去执行。 3、Bootloader 的功能实际应用中的 Bootloader 根据所需功能的不同可以设计得很复杂,除完成基本的初始化系统和调用 Linux 内核等基本任务外,还可以执行很多用户输入的命令,比如设置 Linux 启动参数,给 Flash 分区等;也可以设计得很简单,只

15、完成最基本的功能。但为了能达到启动 Linux 内核的目的,所有的 Bootloader 都必须具备以下功能: (1)、初始化 RAM 因为 Linux 内核一般都会在 RAM 中运行,所以在调用 Linux 内核之前 bootloader 必须设置和初始化 RAM,为调用 Linux 内核做好准备。初始化 RAM 的任务包括设置 CPU 的控制寄存器参数,以便能正常使用 RAM 以及检测 RAM 大小等。 (2)、初始化串口 串口在 Linux 的启动过程中有着非常重要的作用,它是 Linux 内核和用户交互的方式之一。Linux 在启动过程中可以将信息通过串口输出,这样便可清楚的了解 Li

16、nux 的启动过程。虽然它并不是 Bootloader 必须要完成的工作,但是通过串口输出信息是调试 Bootloader 和 Linux 内核的强有力的工具,所以一般的 Bootloader 都会在执行过程中初始化一个串口做为调试端口。 (3)、检测处理器类型 Bootloader 在调用 Linux 内核前必须检测系统的处理器类型,并将其保存到某个常量中提供给 Linux 内核。Linux 内核在启动过程中会根据该处理器类型调用相应的初始化程序。 (4)、设置 Linux 启动参数 Bootloader 在执行过程中必须设置和初始化 Linux 的内核启动参数。目前传递启动参数主要采用两种方式:即

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号