02基于ARM9的Linux26内核移植.docx

上传人:b****5 文档编号:4955323 上传时间:2022-12-12 格式:DOCX 页数:34 大小:1.12MB
下载 相关 举报
02基于ARM9的Linux26内核移植.docx_第1页
第1页 / 共34页
02基于ARM9的Linux26内核移植.docx_第2页
第2页 / 共34页
02基于ARM9的Linux26内核移植.docx_第3页
第3页 / 共34页
02基于ARM9的Linux26内核移植.docx_第4页
第4页 / 共34页
02基于ARM9的Linux26内核移植.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

02基于ARM9的Linux26内核移植.docx

《02基于ARM9的Linux26内核移植.docx》由会员分享,可在线阅读,更多相关《02基于ARM9的Linux26内核移植.docx(34页珍藏版)》请在冰豆网上搜索。

02基于ARM9的Linux26内核移植.docx

02基于ARM9的Linux26内核移植

 

基于ARM9的Linux2.6内核移植

 

姓名

系别、专业

导师姓名、职称

完成时间

目录

摘要I

ABSTARCTII

1绪论1

1.1课题研究的背景、目的和意义1

1.2嵌入式系统现状及发展趋势1

1.3论文的主要工作4

2嵌入式Linux系统构成和软件开发环境5

2.1嵌入式Linux系统的体系结构5

2.2嵌入式Linux系统硬件平台5

2.3嵌入式Linux开发软件平台建立7

2.4本章小结11

3嵌入式Linux的引导BootLoader程序12

3.1BootLoader概述12

3.2NANDFlash和NORFlash的区别13

3.3本章小结19

4Linux内核的编译、移植20

4.1Linux2.6内核的新特性简介20

4.2Linux内核启动流程20

4.3内核移植的实现21

4.4MTD内核分区23

4.5配置、编译内核24

4.6本章小结26

5文件系统制作27

5.1yaffs文件系统简介27

5.2内核支持YAFFS文件系统27

5.3本章小结30

6测试31

6.1简单测试方法的介绍31

6.2编写简单C程序测试移植的系统31

6.3在开发板执行测试程序32

7结论33

参考文献34

致谢35

摘要

研究目的是在以S3C2410A(ARM920T核)微处理器为核心的硬件平台上,构建嵌入式Linux软件开发平台,以便在此基础上进行二次开发。

该移植研究并没有使用开发板附带的软件包,其所有源码都来自Internet,并且采用了较新的版本。

主要做了以下工作:

下载、配置、编译了交叉编译工具链,建立了嵌入式Linux交叉开发环境;详细分析了BootLoader的启动过程,深入地研究了BootLoader从NORFlash启动的原理,在此基础上,对BootLoader进行了移植研究并实现了从NORFlash启动;综述了Linux2.6的新特性,详细分析了Linux内核移植要点,并移植、配置、编译了2.6版Linux内核。

关键词:

系统移植;BootLoader;S3C2410;Linux2.6

 

ABSTARCT

ThepurposeofthispaperistobuildanembeddedlinuxsoftwareplatformonthehardwareplarformwiththekernelofS3C2410(ARM920Tcore)microprocessor.

Sothefollowingapplicationscanbedevelopedbasedonit.ThesoftwarepackagethatthedevelopmentboardattatchedhasnotbeusedandallnewversioncodesusedherecomefromInternet.Thedetailworkareasfollowing:

Firstly,thetheCross-compiletoolswasdownloaded,configuredandcompiledandtheembeddedsoftwaredevelopmentenvironmentwasbuilt.Secondly,therunningprocessoftheBootLoaderwasanalyzedandtheprincipleofBootLoaderrunningonNORFlashwasstudiedandBootLoaderwastransplanted.ThekeypointsofLinuxkerneltransplantationweredetailedandLinux2.6kernelwastransplanted,configuredandcompiled.

Keywords:

systemtransplantation;BootLoader;S3C2410;Linux2.6

 

1绪论

1.1课题研究的背景、目的和意义

嵌入式系统是当今最热门的计算机应用领域之一,成为当今的最热门发展方向被广泛地应用到工业控制系统、仿真系统、医疗仪器、信息家电、通信设备等众多领域中。

嵌入式产品的巨大需求不仅为嵌入式市场展现了美好前景,注入了新的生命,同时也对嵌入式系统技术,特别是软件技术提出新的挑战,这主要包括:

支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理。

论文课题的主要研究目的是:

在以S3C2410A(920T核)微处理器为核心的硬件平台上,搭建通用的嵌入式Linux(使用的内核是2.6版本的)软件开发平台,以便在其上做二次开发。

系统地研究嵌入式Linux系统的移植有很大的现实意义。

首先,可以增加对S3C2410A以微处理器、内置外设以及系统扩展的了解,有助于将来的嵌入式学习。

其次,可以熟悉嵌入式软件系统移植的整个过程,对该过程有整体上的把握,对后续的嵌入式系统开发有指导性意义。

最后,通过该研究过程可以构建较新版的软件系统,实现更好的系统性能,最重要的是可以在实践基础上增加对系统移植理论的理解并积累丰富的系统移植经验,为后续的嵌入式应用开发打下坚实的基础[1][5]。

1.2嵌入式系统现状及发展趋势

计算机、互联网技术的应用与普及,以及微电子技术的突破,正有力推动着二十一世纪工业生产、商业活动、科学实验和家庭生活等领域的自动化和信息化进程。

全过程自动化的产品制造、大范围的电子商务活动、高度协同的科学实验以及现代化家庭起居,为嵌入式产品造就了崭新而巨大的商机,市场前景非常广阔。

目前嵌入式系统每年全球的工业产值日益增加。

1.2.1嵌入式系统定义

从广义上地讲,凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计算机系统。

狭义上而言,嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

嵌入式系统是软件和硬件的综合体,整个综合体的设计目的在于满足某种特殊功能,并应用于各类具体的应用系统中,其范围和领域都十分广泛,几乎包括了我们周围的所有电器设备,如:

电视机顶盒、掌上PDA、移动计算设备、多媒体设备、医疗仪器乃至路由器、交换机等。

1.2.2嵌入式系统的特点及发展趋势

通常,嵌入式系统同通用型计算机系统相比具有以下特点[1][3]。

1)嵌入式系统通常是面向特定应用的

嵌入式CPU大多工作在为特定用户群设计的系统中,通常具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,与网络的祸合也越来越紧密。

2)嵌入式系统对软件有严格的要求

嵌入式产品一般不具有硬盘等大容量存储设备,而且由于成本的限制,嵌入式系统软件一般固化在容量较小的FLASH存储器中。

这就要求软件代码具有较高的质量和可靠性,所以必须对代码进行剪切和调整。

3)嵌入式系统必须具备开发环境和开发工具才能进行开发

受限于嵌入式系统自身资源与空间的不足,它不具备自主开发能力,所以嵌入式系统的开发模式采用宿主机一目标机相连构成交叉开发环境。

另外,还需要编译器、链接器等作为开发工具。

4)嵌入式系统的生命周期相当长。

当嵌入式系统应用到产品后,还可以进行软件升级,它的生命周期与产品的生命周期几乎一样长。

嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面、图形界面和灵活的控制方式。

这就要求嵌入式软件设计者要在图形界面、多媒体技术上多下功夫(这样可以使客户更轻松方便的使用嵌入式产品)。

我国国内的嵌入式软件市场已处于整体启动阶段。

国内嵌入式软件市场未来的发展重点在于对应用范围的拓展。

随着Internet的发展以及Internet技术在信息家电、工业控制技术等领域的应用,嵌入式系统与Internet的结合将代表着嵌入式技术的真正未来。

1.2.3嵌入式处理器简介

嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元,目前全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构包括MCU、MPU等30几个系列,速度越来越快,性能越来越强,价格也越来越低。

根据其现状,嵌入式处理器可分成下面几类。

1)嵌入式微处理器(EmbeddedMICroprocssorUnit,EMP)

2)嵌入式微控制器(MicrocontrollerUnit,MCU)

3)嵌入式DSP处理器(EmbeddedDigitalSignalProcessor)

4)嵌入式片上系统(SystemonChip,SOC)

1.2.4嵌入式操作系统介绍

嵌入式操作系统是嵌入式应用软件的基础和开发平台,用户的其它应用程序都建立在操作系统之上。

但嵌入式操作系统并不是简单嵌入的操作系统,它与通常意义的操作系统有所区别。

嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配和调度工作。

它必须体现所在系统的特征,能够通过装卸某些模块来达到系统所要的功能。

嵌入式系统一般具有下面的特征。

l)体积小

嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存作为存储介质。

这就要求嵌入式操作系统只能运行在有限的内存中,不能使用虚拟内存,中断的使用也受到限制。

因此,嵌入式操作系统必须结构紧凑,体积微小。

2)实时性

大多数嵌入式系统都是实时系统,而且多是强实时多任务系统,要求相应的嵌入式操作系统也必须是实时操作系统。

实时操作系统作为操作系统的一个重要分支已成为研究的一个热点,主要探讨实时多任务调度算法、死锁解除等问题。

3)特殊的开发调试环境

提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。

一个完整的嵌入式系统的集成开发环境一般需要提供的工具是编译/链接器、内核调试/跟踪器和集成图形界面开发平台。

其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。

嵌入式Linux操作系统的优点:

Linux是一套以UNIX为基础发展而来的操作系统。

自1991年诞生至今,以惊人的速度发展。

Linux在很多方面己经赶上甚至超过了很多商用的UNIX系统。

它充分利用了x86CPU的任务切换机制,实现了真正的多任务、多用户环境。

Linux对硬件配置的要求相当低,能够在4M内存的386机器上很好的运行。

而且可以支持多种处理器芯片。

在应用于嵌入式系统方面,Linux己经在许多典型的硬件平台上实现了移植,这些平台包括ARM、MIPS、ALPHA、PowerPC等。

随着Linux2.6内核的发布,Linux向现有主流的RTOS提供商在嵌入式系统市场提出了巨大挑战,将成为更优秀的嵌入式操作系统。

Linux2.6在内核主体中加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:

采用可抢占内核、更加有效的调度算法以及同步性的提高。

1.3论文的主要工作

本课题以北京革新(GX)公司的以S3C2410A为核心的ARM9开发板为硬件开发平台,在此基础上,实现嵌入式Linux系统的移植。

其源码全部来自Internet,在了解了系统移植方法并做了大量的工程实践的基础上,从无到有的建立了一个可用的嵌入式Linux系统,包括移植了功能较强的BootLoader、性能更好的Linux2.6版本内核。

其移植过程不脱离一般性,但因具体开发环境的不同,移植过程中会涉及到很多具体问题[5]。

论文的主要工作:

l)建立嵌入式Linux交叉开发环境

对于嵌入式系统,目标板一般只有很小的存储空间,处理器频率也较低。

直接在这样的硬件上建立Linux系统非常困难。

嵌入式Linux交叉开发环境可以很好地解决这个难题,即实现在PC机上编译嵌入式系统要运行的程序。

2)移植BootLoader引导程序

嵌入式Linux内核通常需要目标板上的引导程序引导来引导内核的启动。

这些引导程序就是BootLoader。

BootLoader在目标板上电的时候运行,主要完成板级初始化和Linux内核引导的任务。

由于BootLoder和CPU及电路板的配置相关,不可能有通用的BootLoader,开发时需要根据具体情况进行移植。

U-boot是一种通用的BootLoader,本文就是通过U-boot来引导的。

3)配置、编译、移植Linux内核

详细分析了Linux移植的要点,并对目前较新的2.6版Linux内核源码进行了移植、配置和编译。

4)制作文件系统并对文件系统进行移植到开发板。

我们可以根据内核所支持的文件系统类型制作文件系统本论文选择制作yaffs文件系统并移植。

 

2嵌入式Linux系统构成和软件开发环境

进行嵌入式操作系统以及驱动程序的移植,需要对目标硬件平台和软件结构有深入的理解。

本章介绍嵌入式Linux系统的体系结构、硬件平台构成和嵌入式软件开发环境。

2.1嵌入式Linux系统的体系结构

除了硬件系统外,嵌入式Linux系统需要有下面三个基本元素:

系统引导程序BootLoader(用于设备加电后的系统定位引导)、Linux微内核(内存管理、程序管理)、初始化进程。

但如果要它成为完整的操作系统并继续保持小型化还必须加上硬件驱动程序、硬件接口程序和应用程序组。

最终可用的嵌入式Linux系统体系结构如表所示:

表2-1嵌入式Linux系统体系结构

应用软件

应用层

嵌入式GUI图形支持

支持层

BOOTLOADER、LINUXKERNEL、DRIVERS

系统层

嵌入式开发板实验板

(本论文使用SAMSUNGS3C2410)

硬件层

硬件层是系统的基础,所有软件都建立在它的基础上,系统层的BootLoader是嵌入式系统软件的最底层,是上电后运行的第一个程序,类似于PC机上的BIOS,完成对硬件的初始化和内核加载,驱动程序作为系统内核的一部分,实现操作系统内核和硬件设备之间的接口,为应用程序屏蔽硬件的细节,系统内核主要完成任务管理,调度算法等,GUI图形支持库实现对硬件的抽象、提供基本的图形接口函数和与用户实现交互,而应用软件用来实现某一具体功能。

2.2嵌入式Linux系统硬件平台

2.2.1S3C2410A处理器简介[1][6]

Samsung公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般应用提供了低价格、低功耗、高性能的小型微控制器解决方案。

为了降低整个系统的成本,S3C241OA提供了以下的内部设备:

分开的16KBI-Cache和16KBD-Cache,具有虚拟存储器管理单元MMU,LCD控制器(支持STN&TFT),8通道10位ADC和触摸屏接口,支持NANDFlash系统引导,3通道UART,4通道DMA,4通道PWM定时器,I/0端口,RTC,IIS-BUS接口,USB主机,USB设备,SD主卡&MMC卡接口,2通道的SPI以及内部PLL时钟倍频器等等。

存储控制器

S3C2410A以处理器内部集成了存储控制器,它可以为片外存储器访问提供必要的控制信号,它主要包括以下特点:

1)支持大、小端模式(通过软件选择);

2)地址空间:

包含8个地址空间,每个地址空间的大小为128M字节,总共有lG字节的地址空间;

3)除BANKO以外的所有地址空间都可以通过编程设置为8位、16位或32位访问。

BANKO可以设置为16位、32位访问;

4)8个地址空间中,6个地址空间可以用于ROM、SRAM等存储器,2个用于ROM、SRAM、SDRAM等存储器;

5)7个地址空间的起始地址及空间大小是固定的;

6)1个地址空间的起始地址和空间大小是可变的;

7)所有存储器空间的访问周期都可以通过编程配置;

8)提供外部扩展总线的等待周期;

9)SDRAM支持自动刷新和掉电模式。

LCD控制器

S3C2410A内部集成了LCD控制器,可以很方便地去控制各种类型的LCD屏,如STN和TFT屏。

NANDFlash控制器

为了支持NANDFlash启动,S3C2410A内建了4K的SRAM缓存“Steppingstone”。

当启动时,NANDFlash最初的4K字节将被读入“Steppingstone”,然后开始执行启动代码。

通常启动代码会把NANDFlash中的内容复制到SDRAM中以便执行主代码。

使用硬件的ECC,NANDFlash中的数据的有效性将会得到检测。

I/O端口

S3C2410A有117个多功能I/0端口,可软件配置其特殊功能。

USB主控制器

S3C241OA内嵌2个USB主控制器,有以下特点:

1)兼容OHCIRev1.0

2)兼容USBRevl.1

3)两个Twodownstreamports

4)支持低速和全速USB设备

2.2.2硬件系统整体结构

本论文采用的硬件平台由底板和核心板组成,核心板上使用了SAMSUNG公司的S3C2410A处理器,并集成了64MB的SDRAM,64MBNANDFlash存储设备以及核心电压模块、实时时钟、系统跳线、系统时钟、核心板接口等;底板上提供了丰富的外设接口:

CS890OA以太网卡接口、2个与PC机通信的UART(10M/100M)、l个LCD接口、触摸屏接口、128KB的NORFlash存储芯片、SD接口、IDE接口及USB接口等。

核心板和底板配合即构成了一个完整的硬件系统,它能够装载和运行嵌入式Linux操作系统。

也可以运行基于ARM核的其它操作系统。

图2-1S3C2410硬件平台体系结构图

2.3嵌入式Linux开发软件平台建立

软件开发平台是嵌入式开发的关键,嵌入式软件开发平台建立的目的是为了进行BootLoader移植、Linux内核移植以及GUI系统开发。

由于嵌入式硬件平台的存储空间有限、处理器频率较低,很难直接在嵌入式硬件式平台上建立Linux系统、安装嵌入式开发软件,因此只能采用嵌入式交叉开发环境来解决这个问题。

2.3.1软件开发平台的二种平台的介绍

嵌入式Linux系统开发需要一台装有Linux操作系统的PC机,在此机器上运行交叉编译工具,Linux系统采用FC5,具体有以下几种方案:

l)采用VMWare。

VMWare是一个可运行在Windows平台的“虚拟PC”软件,它可以在一台机器上同时运行二个或更多个Windows、DOS、Linux系统。

VMWare主要的功能有:

不需要分区或重开机就能在同一台PC上使用两种以上的操作系统;完全隔离并且保护不同0S的操作环境以及所有安装在0S上面的应用软件和资料;不同的0S之间还能互动操作,包括网络、外设、文件分享以及复制粘贴功能;有复原功能;能够设定并且随时修改操作系统的操作环境,如:

内存、磁盘空间、外设等。

2)按通常的方法,在独立的分区上安装Linux操作系统。

但是安装2个系统需要用的grub,需要配置修改启动项,而且删除此Linux操作系统很麻烦。

对以上二种方案进行了尝试,得出以下结论:

对于内存不小于512M和主频较高的PC机适合使用VMWare,VMWare默认使用PC机一半的内存,内存较小PC机将会运行很慢,所以配置相对较低的PC机不适合采用此方案。

Cygwin虽运行在Windows平台,但其操作界面是一个控制台,没有实现图形操作界面,所以用起来不是很方便。

移植资料的编译是在本人电脑上完成的,编译的所用的是第1种方案,移植内容因使用的开发主机是机房已经装好的第2种系统方案,所以最后采用了方案2,即在新的分区上安装了Linux操作系统。

2.2.3准备交叉编译工具[6]

由于开发主机的x86体系结构和目标机的ARM体系结构的差别,在开发主机上能运行的程序不能在目标机上运行,为了使在开发主机上编译通过的程序能够在目标机上运行,必须使用交叉编译工具链来编译程序。

构建交叉编译环境有很多个版本的交叉编译器可供选择,如2.95.3、3.3.2、4.3.2等等,最终选用了4.3.2版编译器编译内核而使用的3.3.2编译的U-Boot,因为很多商用软件都是在该环境下编译的,采用其它版本编译工具,有可能编译不通,会出现错误。

将obsolete-gcc-3.3.2.tar.gz解压并安装到/home/wyx/usr/1ocal/arm/目录下。

命令如下:

#tar-jxvfobsolete-gcc-3.3.2.tar.bz2

图2-2配置交叉编译器PATH环境

在/root/.bashrc文件中修改PATH环境变量,添加工具链的路径。

执行#vim/root/.bashrc

PATH=$PATH:

/home/wyx/usr/local/arm/3.3.2/bin

如果编译内核则可以把PATH修改为:

PATH=$PATH:

/home/wyx/usr/local/arm/4.3.2/bin

如果出现在终端下输入:

arm-按tab键会出现arm-linux-就表示交叉编译环境搭建成功。

2.3.3串口控制台工具

Windows操作系统下有超级终端(Hyperterminal)工具,Linux操作系统下可以使用minicom工具。

由于Linux系统下的minicom不是图形窗口的界面,相较于windows下的超级终端,其配置操作稍麻烦一些,运行前需要对其进行如下配置。

以root身份登录操作系统,在Shell下执行“minicom-s”命令。

出现如图所示的配置菜单。

图2-3Minicon设置菜单

选择“Serialportsetup”菜单项,根据开发板的串口通讯设置,将

SerialDevice设置为/dev/ttyS0,默认为/dev/ttyS1;

Bps/Par/Bits设置为1152008N1;

HardwareFlowControl设置为NO。

如下图所:

图2-4Minicom参数设置

 

2.3.4配置主机的TFTP服务

TFTP(全称为TrivialFileTransferProtocol,中文名叫简单文件传输协议)。

它非常适合传送小型文件而且实现起来比较简单。

主机端TFTP服务配置,首先要获得root权限,这里把/tftpboot目录作为输出文件的目录,进入root模式修改才能生效。

也可以手工修改TFTP配置文件/etc/xinetd/tftp的内容如下,也可以达到这种效果。

#vim/etc/xinetd.d/tftp

进行如下修改:

#default:

off

servicetftp

{

disable=no

socket_type=dgram

protocol=udp

wait=yes

user=root

service=/usr/sbin/in.tftpd

service_args=-s/tftpboot

server_source=11

cps=1002

flags=Ipv4

}

配置修改保存后,需执行下列命令使xinetd重新启动TFTP服务。

#servicexinetdrestart

配置完成后,建议简单测试一下TFTP服务是否可用,即自己TFTP自己,例如在宿主机上执行如下命令:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1