《本科毕业设计--基于arm9的linux操作系统移植.doc》由会员分享,可在线阅读,更多相关《本科毕业设计--基于arm9的linux操作系统移植.doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于ARM9的LINUX操作系统移植Transplantation of Linux Operation System Based on ARM9摘 要随着电子技术的不断更新,嵌入式已经涉及到各行各业了,在智能家电,数字移动终端等这些行业嵌入式软件开发的需求下,嵌入式集成开发环境已经成为目前嵌入式系统发展的趋势。Linux作为优秀的开源操作系统软件被广泛应用到嵌入式操作系统中,它的实用性,可移植性,支持大容量的内存,MMU(微控制器)和I/O系统等得到了体现。本次设计主要研究了嵌入式Linux系统从PC机向开发板上移植的过程,硬件平台是基于CPU:三星S3C2440A,采用ARM920T 内核
2、,主频400MHZ。本文介绍了嵌入式系统的概念和现状以及嵌入式系统的开发模式,介绍了内核启动流程,对Bootloader启动进行了分析,移植了Linux内核,移植了文件系统yaffs以及自己的LED程序移植。以上烧写的文件均是官网下载的,这样可以使得Linux在开发板上更流畅的运行。本次设计成功的将嵌入式Linux系统移植到了FL2440开发板,文件系统运行正常,可通过触摸屏进行操作,LED程序调试成功,并在开发板上得到了运行结果。对以后Linux开发打下了很好的基础。关键词:嵌入式系统 Linux Bootloader 文件系统AbstractAlong with the continuou
3、s renewal of electronic technology, the development of embedded system has become the mainstream of science and technology, under the requirements of embedded software development in the intelligent home appliance, digital mobile industry, the embedded integrated development environment has become t
4、he trend of the development of the embedded system at present. Linux as excellent open source operating system software has been widely applied to embedded operating system,whose featares such of practical applicability, portability, supporting large capacity memory, MMU (microcontroller) and I/O sy
5、stem have been reflected.Mainly from the PC to transplant process the embedded Linux system are studied on the development board, hardware platform is based on CPU: samsung S3C2440A, adopted ARM920T kernel, dominant frequency 400 MHZ. This paper introduces the concept of embedded system and the stat
6、us quo and development mode of the embedded system, the kernel boot process is introduced, the Bootloader startup was analyzed, and the transplantation of the Linux kernel, transplant yaffs file system as well as their own LED transplant program. The above writing files are the official website to d
7、ownload, so you can make the Linux more smoothly in the development board to run.The design successful porting embedded Linux system to FL2440 development board, file system running normal, can be operated by touch screen, LED program debugging is successful, and gets the results on the development
8、board. For future study Linux development laid a good foundation.Key words: embedded system Linux Bootloader file system目 录摘要IAbstractII绪论11 嵌入式Linux系统构成和软件开发环境51.1嵌入式Linux系统的体系结构51.2 嵌入式Linux系统硬件平台51.2.1 S3C2440A处理器简介51.2.2 硬件系统整体结构71.3 嵌入式Linux开发软件平台建立121.3.1 ADS1.2 集成开发环境121.3.2 DNW串口调试软件122 嵌入式L
9、inux的引导BootLoader程序142.1 BootLoader概述142.2 NAND Flash和NOR Flash的区别142.3 BootLoader移植153 Linux内核的编译、移植213.1 Linux2.6内核的新特性简介213.2 Linux内核启动流程213.3 内核移植的实现224 移植文件系统yaffs244.1 yaffs文件系统简介244.2 yaffs文件系统移植的实现245 移植自己的程序305.1 移植开机画面305.2 移植LED程序31结论33致谢34参考文献35绪 论研究的背景及意义随着计算机技术、通信技术以及Internet的飞速发展。嵌入式系
10、统已得到越来越广泛的应用。以此同时,嵌入式系统也变得更加的复杂多样,嵌入式操作系统已经成为其中最重要的组成部分。根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助机器和设备运行的装置”(原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants )。这主要是从应用上加以定义的,从定义之中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。从历史性、本质性、普遍性出发,嵌入式系统可以定义为:“嵌入到对象体系中的专用计算机系统”。“嵌入
11、性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素,对象系统则是指嵌入式系统所嵌入的宿主系统。不过上述定义并不能充分体现出嵌入式系统的精髓,目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序。应用程序控制着系统的运作
12、和行为,而操作系统控制着应用程序与硬件的交互作用。嵌入式系统是将先进的半导体技术、计算机技、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统同PC系统相比具有以下特点:(1) 嵌入式系统功耗低、体积小、专用性强。嵌入式系统与PC的最大不同就是CPU大多工作在特定用户群设计的系统中。能够把PC中许多由电路板完成的任务集成在芯片内部,从而有利于嵌入式系统趋于小型化系统设计。(2) 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储芯片或单片机本身中,而不是存储与磁盘等载体中。(3) 嵌入式系统的硬件
13、和软件都必须高效率地设计,系统要精简。操作系统一般和应用软件集成在一起。(4) 对软件代码质量要求很高,应该尽最大可能避免“死机”的发生。(5) 嵌入式系统开发需要专门的开发工具和开发环境。嵌入式设备能得到用户的喜爱,最重要的原因就是它能提供非常友好的用户界面、图形界面和灵活的控制方式。这就要求嵌入式软件设计者要在图形界面、多媒体技术上多下功夫(这样可以使客户更轻松方便的使用嵌入式产品)。目前,市场上存在的众多的嵌入式操作系统,而在这些系统之中,兼有Linux和嵌入式优点的嵌入式Linux操作系统,凭借其在结构清晰、源代码开放性、裁剪性好,开发与使用均易实现等方面的优势,拥有巨大的市场前景和商
14、业机会。当前嵌入式Linux的一个热点应用就是将Linux内核移植到一些典型的微控制器和微处理器上,提供操作系统层面支持,以实现嵌入式系统用软件的开发。系统地研究嵌入式Linux系统的移植有很大的现实意义。首先,可以增加对S3C2440A以微处理器、内置外设以及系统扩展的了解,有助于将来的嵌入式学习。其次,可以熟悉嵌入式软件系统移植的整个过程,对该过程有整体上的把握,对后续的嵌入式系统开发有指导性意义。最后,通过该研究过程可以构建较新版的软件系统,实现更好的系统性能,最重要的是可以在实践基础上增加对系统移植理论的理解并积累丰富的系统移植经验,为后续的嵌入式应用开发打下坚实的基础。国内外嵌入式系
15、统的发展概况我国国内的嵌入式软件市场已处于整体启动阶段。国内嵌入式软件市场未来的发展重点在于对应用范围的拓展。随着Internet的发展以及Internet技术在信息家电、工业控制技术等领域的应用,嵌入式系统与Internet的结合将代表着嵌入式技术的真正未来。嵌入式处理器是嵌入式系统的核心,是辅助、控制系统运行的硬件单元,目前全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构包括MPU、MCU等三十几个系列,速度越来越快,性能越来越强,价格也越来越低。根据其现状,嵌入式处理器可分成下面几类。(1) 嵌入式微处理器 (Embedded MICroprocssor Unit,EMP)
16、(2) 嵌入式微控制器 (Microcontroller Unit,MCU)(3) 嵌入式DSP处理器(Embedded Digital Signal Processor)(4) 嵌入式片上系统 (System on Chip,SOC)嵌入式操作系统是嵌入式应用软件的基础和开发平台,用户的其它应用程序都建立在操作系统之上。但嵌入式操作系统并不是简单嵌入的操作系统,它与通常意义的操作系统有所区别。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配和调度工作。Linux是一套以UNIX为基础发展而来的操作系统。自1991年诞生至今,以惊人的速度发展。Linux在很多方面己经赶上甚至超过了很多商用
17、的UNIX系统。它充分利用了x86 CPU的任务切换机制,实现了真正的多任务、多用户环境。Linux对硬件配置的要求相当低,能够在4M内存的386机器上很好的运行。而且可以支持多种处理器芯片。在应用于嵌入式系统方面,Linux己经在许多典型的硬件平台上实现了移植,这些平台包括ARM、MIPS、PowerPC等。随着Linux2.6内核的发布,Linux向现有主流的RTOS提供商在嵌入式系统市场提出了巨大挑战,将成为更优秀的嵌入式操作系统。Linux2.6在内核主体中加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高。本课题以飞凌嵌
18、入式技术有限公司的以S3C2440A为核心的ARM9开发板FL2440为硬件开发平台,在此基础上,实现嵌入式Linux系统的移植。在了解了系统移植方法并做了大量的工程实践的基础上,从无到有的建立了一个可用的嵌入式Linux系统,包括移植了功能较强的BootLoader、性能更好的Linux2.6.28版本内核。其移植过程不脱离一般性,但因具体开发环境的不同,移植过程中会涉及到很多具体问题。主要研究内容(1) 建立嵌入式Linux交叉开发环境对于嵌入式系统,目标板一般只有很小的存储空间,处理器频率也较低。直接在这样的硬件上建立Linux系统非常困难。嵌入式Linux交叉开发环境可以很好地解决这个
19、难题,即实现在PC机上编译嵌入式系统要运行的程序。(2) 移植BootLoader引导程序嵌入式Linux内核通常需要目标板上的引导程序引导来引导内核的启动,这些引导程序就是BootLoader。BootLoder所处层次位置如下图1所示。BootLoader在目标板上电的时候运行,主要完成开发板初始化和Linux内核引导的任务。由于BootLoder和CPU及电路板的配置相关,不可能有通用的BootLoader,开发时需要根据具体情况进行移植。本次毕业设计所用的BootLoader是开发板官网上下载的,所以可以更加稳定的在开发板上运行Linux系统。图1 BootLoader所处层次(3)
20、配置、编译、移植Linux内核详细分析了Linux移植的要点,并对目前较新的2.6版Linux内核源码进行了移植、配置和编译。(4) 对文件系统进行移植到开发板。根据内核所支持的文件系统类型选择文件系统,本论文选择触屏yaffs文件系统并移植。1 嵌入式Linux系统构成和软件开发环境1.1 嵌入式Linux系统的体系结构除了硬件系统外,嵌入式Linux系统需要有下面三个基本元素:系统引导程序BootLoader(用于设备加电后的系统定位引导)、Linux内核(内存管理、程序管理)、初始化进程。但如果要它成为完整的操作系统并继续保持小型化还必须加上硬件驱动程序、硬件接口程序和应用程序组。最终可
21、用的嵌入式Linux系统体系结构如表1-1所示:表1-1 嵌入式Linux系统体系结构应用软件应用层嵌入式GUI图形支持支持层BOOTLOADER、LINUX KERNEL、DRIVERS系统层嵌入式开发板实验板(本论文使用SAMSUNG S3C2440A)硬件层硬件层是操作系统的基础,所有软件都建立在它的基础上,系统层的BootLoader是嵌入式系统软件的最底层,是上电后运行的第一个程序,类似于PC机上的BIOS,完成对硬件的初始化和内核加载,驱动程序作为系统内核的一部分,实现操作系统内核和硬件设备之间的接口,为应用程序屏蔽硬件的细节,系统内核主要完成任务管理,调度算法等,GUI图形支持库
22、实现对硬件的抽象、提供基本的图形接口函数和与用户实现交互,而应用软件用来实现某一具体功能。1.2 嵌入式Linux系统硬件平台1.2.1 S3C2440A处理器简介三星公司推出的这款16/32 位RISC 处理器S3C2440A,是面向高端手持设备或其它一般应用而设计的芯片。采用ARM920T 内核,低功耗, 具有高速的处理计算能力。整体设计融合了MMU、AMBA BUS 和Harvard(哈佛)结构。具有独立的16KB 指令Cache 和16KB 数据Cache。其内部结构框图见图1-1:图1-1 S3C2440A结构框图1.2.2 硬件系统整体结构体系结构:(1) 为手持设备和通用嵌入式应
23、用提供片上集成系统解决方案。(2) 16或者32 位RISC 体系结构和ARM920T 内核指令集。(3) 增强的ARM 体系结构MMU 用于支持WinCE,EPOC32 和Linux。(4) 指令高速存储缓冲器(ICache),数据高速存储缓冲器(DCache),写缓冲器和物理地址TAG RAM 减少主存带宽和响应性带来的影响。(5) 采用ARM920T CPU 内核支持ARM 调试体系结构。(6) 内部高级微控制总线(AMBA)体系结构(AMBA2.0,AHB/APB)。系统管理器:(1) 支持大/小端模式。(2) 支持快速总线模式和同步总线模式(3) 寻址空间:每bank 128M 字节
24、(总共1G 字节)。(4) 支持可编程的每bank 8/16/32 位数据总线带宽。(5) 从bank0 到bank6 都采用固定的bank 起始寻址。(6) bank7 具有可编程的bank 的起始地址和大小。(7) 8 个存储器bank,其中6 个适用于ROM、SRAM 和其它,另外两个适用于ROM/SRAM和同步DRAM。(8) 所有的存储器bank 都具有可编程的操作周期。(9) 支持外部等待信号延长总线周期。(10) 支持掉电时的SDRAM 自刷新模式。(11) 支持各种型号的ROM 引导(NOR/NAND FLASH、EEPROM,或其它)。NAND FLASH 启动引导:(1)
25、支持从NAND FLASH 存储器直接启动。(2) 采用4KB 内部缓冲器进行启动引导。(3) 启动之后NAND 存储器仍然可作为外部存储器使用Cache 存储器:(1) 64 项全相连模式,采用ICache(16KB)和DCache(16KB)。(2) 每行8 字长度,其中每行带有一个有效位和两个dirty 位。(3) 伪随机数或轮转循环替代法。(4) 采用写穿式(writethrough)或写回式(writeback)Cache 操作来更新主存储器。(5) 写缓冲器可以保存16 个字的数据和4 个地址。时钟电源管理:在S3C2440 中集成了两个锁相环:MPLL 和UPLL。UPLL 将产
26、生USB 主机/设备的时钟,MPLL 产生处理器所需要的时钟,最大400MHZ(在1.3V 内核电压下)。(1) 通过设置相应寄存器,可以有选择的为每个功能模块提供需要的时钟。(2) 电源模式,包括正常、慢速、空闲和休眠模式。正常模式指正常运行模式;慢速模式指不加锁相环的低时钟频率模式;空闲模式指停止CPU 的时钟;休眠模式指所有外设和内核的电源都被切断。(3) 可以通过EINT15:0或RTC 报警中断来从休眠模式中唤醒处理器。中断控制器: 60 个中断源(1 个看门狗定时器,5 个定时器,9 个UARTs,24 个外部中断,4 个DMA,2 个RTC,2 个ADC,1 个IIC,2 个SP
27、I,1 个SDI,2 个USB,1 个LCD,1 个电池故障,1 个NAND 和2 个摄像头)1 个AC97。(1) 支持电平或者边沿触发模式的外部中断源。(2) 可编程的边沿或者电平触发模式选择。(3) 支持为紧急中断请求提供快速中断(FIQ)服务。具有脉冲带宽调制功能的定时器(PMW)(4) 4 通道16 位具有PWM 功能的定时器,1 通道16 位内部定时器,可基于DMA 或中断进行工作。(5) 可编程的占空比周期,频率和极性。(6) 能产生死区。(7) 支持外部中断源。RTC(实时时钟):(1) 全面的时钟特性:秒、分、时、日期、星期、月和年。(2) 32.768KHz 工作频率。(3
28、) 具有报警中断。(4) 具有节拍(TICK)中断。通用I/O 端口:(1) 24 个外部中断端口。(2) 多功能输入/输出端口。DMA 控制器(1) 4 通道的DMA 控制器。(2) 支持存储器到存储器,I/O 到存储器,存储器到I/O 和I/O 到I/O 的传输。(3) 采用脉冲传输模式加快传输速率。LCD 控制器:STN LCD 显示特性:(1) 支持3 种类型的STN LCD 显示屏:4 位双扫描,4 位单扫描,8 位单扫描显示类型。(2) 支持单色模式、4 级、16 级灰度STN LCD、256 色和4096 色STN LCD。(3) 支持多种不同尺寸的液晶屏。(4) LCD 实际尺
29、寸的典型值是:640480,320240,160160 及其它。(5) 最大帧缓冲器大小是4M 字节。(6) 256 色模式下支持的最大虚拟屏是:40961024,20482048,10244096 等。TFT 彩色显示屏:(1) 支持彩色TFT 的1,2,4 或8bbp(象素每位)调色显示。(2) 支持16bbp 无调色真彩显示。(3) 在24bbp 模式下支持最大16M 色TFT。(4) 支持多种不同尺寸的液晶屏。(5) 典型实屏尺寸:640480,320240,160160 等。(6) 最大帧缓冲器大小是4M 字节。(7) 64K 色彩模式下最大的虚拟屏尺寸为20481024。UART:
30、(1) 3 通道UART,可以基于DMA 模式或中断模式工作。(2) 支持5 位、6 位、7 位或者8 位串行数据发送/接收。(3) 支持外部时钟作为UART 的运行时钟(UEXTCLK)。(4) 可编程的波特率。(5) 支持IrDA 1.0。(6) 具有测试用的回还模式。(7) 每个通道都具有内部64 字节的发送FIFO 和64 字节的接收FIFO。A/D 转换和触摸屏接口:(1) 8 通道多路复用ADC。(2) 最大500KSPS/10 位精度。(3) 内置场效应管可直接连接触摸屏。看门狗定时器:(1) 16 位看门狗定时器。(2) 在定时器溢出时发生中断请求或系统复位。IIC 总线接口:
31、(1) 1 通道多主IIC 总线。(2) 可进行串行、8 位、双向数据传输,标准模式下数据传输速度可达100kbit/s,快速模式下可达到400kbit/s。IIS 总线接口:(1) 1 通道音频IIS 总线接口,可基于DMA 方式工作。(2) 串行,每通道8/16 位数据传输。(3) 发送和接收具备128 字节(64 字节加64 字节)FIFO。(4) 支持IIS 格式和MSBjustified 数据格式。AC97 音频接口:(1) 支持16 位取样。(2) 1 路立体声PCM(脉冲编码调制)输入、1 路立体声PCM 输出、l 路MIC 输入。USB 主设备:(1) 2 个USB 主设备接口
32、。(2) 遵从OHCI Rev1.0 标准。(3) 兼容USB ver1.1 标准。USB 从设备:(1) 1 个USB 从设备接口。(2) 具备5 个Endpoint。(3) 兼容USB ver1.1 标准。SD 主机接口:(1) 基于普通、DMA 或中断传输模式(字节、半字、字)。(2) 支持DMA 脉冲访问(只是字传输)。(3) 兼容SD 存储卡协议1.0 版。(4) 兼容SDIO 卡协议1.0 版。(5) 64 字节发送和接收FIFO。(6) 兼容多媒体卡协议2.11 版。SPI 接口:(1) 兼容2 通道SPI 协议2.11 版。(2) 发送和接收具有28 位的移位寄存器。(3) 可
33、以基于DMA 或中断模式工作。摄像头接口:(1) 支持ITU-R BT 601/656 8 位模式。(2) 可以DZI(数码缩放)。(3) 可编程的视频同步信号极性。(4) 最大支持4096*4096 像素输入(2048*2048 像素输入比例)。(5) 摄像头输出格式(RGB 16/24 位和YCbCr4:2:0/4:2:2 格式)。工作电压:(1) 内核:1.2V,最高300MHz;1.3V,最高400MHz(2) 存储器:1.8V/2.5V/3.0V/3.3V。(3) IO 口: 3.3V。操作频率:(1) Fclk 最高达到400MHz。(2) Hclk 最高达到136MHz。(3)
34、Pclk 最高达到68MHz。封装: 289FBGA1.3 嵌入式Linux开发软件平台建立软件开发平台是嵌入式开发的关键,嵌入式软件开发平台建立的目的是为了进行BootLoader移植、Linux内核移植以及GUI系统开发。由于嵌入式硬件平台的存储空间有限、处理器频率较低,很难直接在嵌入式硬件式平台上建立Linux系统、安装嵌入式开发软件,因此只能采用嵌入式交叉开发环境来解决这个问题。1.3.1 ADS1.2 集成开发环境ADS 全称为ARM Developer Suite 。是ARM 公司推出的新一代ARM 集成开发工具。本课题所用ADS的版本是1.2 ,它取代了早期的ADS1.1 和AD
35、S1.0 。除了可以安装在WindowsNT4 、Windows 2000 、Windows 98 和Windows 95 操作系统之外,还支持Windows XP 和Windows Me 操作系统。ADS 由命令行开发工具、ARM 时实库、GUI 开发环境(Code Warrior 和AXD) 、实用程序和支持软件组成。有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己开发的应用程序了。1.3.2 DNW串口调试软件DNW 软件是三星公司为S3C2440A 芯片配置的一款专用串口软件,可以在Windows 系统下通过USB 烧写Flash。由于串口严禁热插拔,所以串口线转
36、USB连接线应该在开发板上电之前连接好。在此之前要装好串口转USB的驱动程序,装好后在设备管理器中有图1-2所示设备Prolific USB-to-Serial Comm Port(COM1)图1-2 设备管理器驱动在PC 上打开DNW(V0.50.A)在“Configuration”菜单中设置为:COM1,波特率为115200,“Download Address”设置为“0x30800000”( 此参数为下载到内存的地址:0x300000000x34000000,bootloader 用了0x30200000 之前的内存地址,用了0x30200000之前的内存地址会发生冲突事件)。具体配置如
37、图1-3所示:图1-3 DNW设置2 嵌入式Linux的引导BootLoader程序2.1 BootLoader概述在专用的嵌入式开发板上运行GNU/Linux 系统已经变得越来越流行。一个嵌入式Linux 系统从软件的角度看通常可以分为四个层次:(1) 引导加载程序。包括固化在固件(firmware)中的boot 代码,和BootLoader 两大部分。(2) Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。(3) 文件系统。包括根文件系统和建立于Flash 内存设备之上文件系统。通常用ramdisk 来作为rootfs。(4) 用户应用程序。特定于用户的应用程序。有时在用户
38、应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。引导加载程序是系统加电后运行的第一段软件代码。PC 机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR 中的OS BootLoader一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘MBR 中的BootLoader 读到系统的RAM 中,然后将控制权交给OS BootLoader。BootLoader 的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。而在嵌入式系统中,通常并没有像BIOS 那样的固件程序,所以整个系统的加载启动任务就完全由BootLoader
39、 来完成。比如在基于ARM920T core 的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000 处开始执行,而在这个地址处安排的通常就是系统的BootLoader 程序。简单地说,BootLoader 就是在操作系统内核启动之前运行的一段程序,功能类似BIOS。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境搭建在一个合适的工作状态下,以便为最终调用操作系统内核准备好正确的环境。2.2 NAND Flash和NOR Flash的区别NOR Flash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在Fla
40、sh闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1M-4M的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NAND FLASH结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除速度也很快。应用NAND的困难在于NAND Flash的管理需要特殊的系统接口。擦除NOR器件时是以64KB-128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8KB32KB的块进行的,执行相同的操作只需要4ms。NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易的存取其内部的每一个字节。NAND器件使用复
41、杂的I/0口来串行地存取数据,各个产品或厂商的方法可能不同。用8个引脚来传送控制、地址和数据信息。由以上的区别可以看出, NOR Flash适合于存储程序代码,而 NAND Flash适合于存储大量数据。但同样容量的存储芯片, NAND Flash的价格是NOR Flash的1/5。又因为S3C2440A芯片支持从 NAND Flash直接启动,所以很多开发板上 NOR Flash容量很小甚至没有,也有的开发板只有 NOR Flash而没有NAND Flash。因此本课题将文件烧写到NAND Flash中。2.3 BootLoader移植由于BootLoader 是严重地依赖于硬件而实现的,特
42、别是在嵌入式领域,因此,在嵌入式世界里建立一个通用的BootLoader 几乎是不可能的,所以本文将FL2440开发板官网上的BootLoader移植到硬件开发平台FL2440开发板上。这样可以使硬件平台上的FLASH、SRAM、串口控制芯片、网络控制芯片以及其他芯片可以正常工作。移植Bootloader之前需要装上J-link驱动和开发板USB驱动,装好后在设备管理器通用串行总线里面可以找到驱动J-link driver和驱动witech SEC SOC Test Board如图2-1,和2-2所示。图2-1 J-link驱动图2-2 开发板USB驱动装好驱动后将J-link另一头通过转接板
43、与开发板JTAG接口相连,再连好电源线,将串口线和USB线和电脑相连如图2-3所示。图2-3 开发板连线连好线后打开DNW并连接,打开ADS1.2的GUI编辑器AXD,配置AXD的设置。在AXD 的菜单:OperationsConfigure Target选择Multi-ICE用J-link来烧写Bootloader如图2-4所示。图2-4 AXD选择J-link接下来开始装载文件。在File 菜单下load image,装载2440Init.axf,如图2-5。2440Init.axf是内存初始化文件,主要用于在AXD环境下配合2440boot.axf烧写bootloader。图2-5 Lo
44、ad Image装载成功后点击运行,过一会儿会发现程序运行到图2-6所示位置。图2-6 装载2440init.axf然后暂停运行开始装载2440boot.axf并运行,2440boot.axf是axd仿真boot时的仿真映象文件,此时串口在DNW 上会有输出如图2-7,【USB:OK】表示USB 线已经连接好了。图2-7 装载2440boot.axf按任意键使其停在select menu下如图2-8。图2-8 Select Menu通过选择功能Download to flash来下载程序,选择下载分区为boot分区,在DNW 菜单栏USB PortTransmit 选择要烧写的FL_2440b
45、ootv5.1.bin,如图2-9。FL_2440bootv5.1.bin是开发板上bootloader分区的烧写文件。图2-9 烧写FL_2440bootV5.1.bin烧写完成后如图2-10。图2-10 烧写完成烧写完成后可以拔掉JTAG的J-link开始用USB烧写Linux内核和文件系统。3 Linux内核的编译、移植3.1 Linux2.6内核的新特性简介(1) 支持更多处理器,比如AMD64、一些大型机及嵌入式等,同时改进了对已有处理器的支持;(2) 采用抢占式内核,使交互式操作的响应速度大大提高;(3) 修改了I/0子系统部分,保证在各种工作负荷下I/0都有很好的响应速度;(4)
46、 增加了IDE/ATA、SCSI等存储总线,解决和改善了以前的一些问题。比如2.6版内核可以直接通过IDE驱动程序来支持 IDE CD/RW设备,而不必像以前一样要使用一个特别的SCSI模拟驱动程序;(5) 大量改进文件系统。比如支持Windows的逻辑卷管理器、重写对NTFS文件系统的支持、改进HPFS等;(6) 改进和部分重写了Modules功能,使之更稳定;(7) 改进对USB的支持,使之能够支持当前多数主流的USB设备;(8) 加强对无线设备的支持;(9) 增加了ALSA(Advanced Linux Sound Architecture)。ALSA是有希望取代旧式 0SS(Open
47、Sound System)的另一种声音系统,能支持全杜比录音及回放、无缝混音、支持声音合成设备、USB声卡等;(10) 支持更多种类和型号的多媒体设备;(11) 网络方面新增了对IPSec协议的支持,改进了对IPv6的支持。由于Linux2.6具有以上新特性,与Linux2.4相比更适合嵌入式应用,所以本文将对2.6版Linux内核进行移植。3.2 Linux内核启动流程在移植的调试阶段,在没有在线仿真器的情况下,可以通过板上LED的状态输出或串口输出的调试信息进行错误定位,所以有必要了解一下内核的启动流程,图3-1对此做来解释。 本文通过DNW软件在来观察内核的启动流程。内核在启动的过程中按下图步骤一步一步启动,了解启动的顺序,有利于掌握好内核移植的工作安排过程。