《基于ARM9的Linux系统移植设计说明.doc》由会员分享,可在线阅读,更多相关《基于ARM9的Linux系统移植设计说明.doc(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 哈 尔 滨 理 工 大 学毕 业 设 计 题 目: 基于ARM9的Linux系统移植 院、 系: 计算机科学与技术学院 计算机系 姓 名: 吴祥飞 指导教师: 妍 系 主 任: 林克正 2015年06月20日53 / 62理工大学毕业设计(论文)评语学生:吴祥飞 学号:1104010223学 院:计算机科学与技术学院 专业:计算机科学与技术任务起止时间:2015年 3 月1 日至 2015 年 6 月 20 日毕业设计(论文)题目: 基于ARM9的Linux系统移植指导教师对毕业设计(论文)的评语:指导教师签名: 指导教师职称:评阅教师对毕业设计(论文)的评语:评阅教师签名: 评阅教师职称:
2、答辩委员会对毕业设计(论文)的评语:答辩委员会评定,该生毕业设计(论文)成绩为:答辩委员会主席签名: 职称:年 月 日教务处制表理工大学毕业设计(论文)任务书学生:吴祥飞 学号:1104010223学 院:计算机科学与技术 专业:计算机科学与技术任务起止时间: 2015年 3 月1日至2015 年 6 月 20 日毕业设计(论文)题目:基于ARM9的linux系统移植毕业设计工作容: 1、确定论文的主题,搜集相关资料; 2015.3.53.18 2、熟悉开发板。 2015.3.193.293、对linux分析与修改。 2015.3.294.30 4、打包烧写与调试 。 2015.5.15.15
3、5、撰写论文、毕业答辩准备。 2015.5.166.20资料:1基于ARM嵌入式系统接口技术,:清华大学,20122汇编语言与接口技术,:机械工业大学,20133C语言程序设计,:清华大学,20114Linux嵌入式系统,:清华大学,2013指导教师意见:签名:年 月 日系主任意见:签名:年 月 日基于ARM9的linux系统移植摘 要物联网时代的到来即将再次迎来一次技术革命,而物联网的核心恰恰是嵌入式技术,嵌入式技术的意义无庸置疑。嵌入式系统是嵌入式技术的灵魂,对嵌入式系统的研究对于嵌入式的发展有着至关重要的作用。嵌入式最大的特点之一就是专用性,要想深入的学习和研究研究嵌入式系统必须具体到一
4、个详细的实施过程。本课题就是以嵌入式系统移植为代表来剖析嵌入式技术,嵌入式系统移植可大可小,大到可以是一个公司或者工厂的系统,小到可以是一块手表的系统。本课题是基于飞凌公司的FL2440ARM开发板重现对嵌入式Linux系统的移植过程。本课题首先对嵌入式技术的背景与现状做了简要的分析,介绍了开发板的硬件和需要的软件环境,对BootLoader的结构作简要的介绍,列出了BootLoader的移植过程的详细步骤,对Linux源码与目录文件进行了简要的分析,对特定于该开发板的Linux核编译作简要的解读,最后实现Linux核和文件系统移植到开发板上。本课题综合了大学的基本专业课程,理论和实践相结合由
5、浅入深的具体的研究了嵌入式系统移植,是本着不断学习和探索的精神对嵌入式系统进行学习和研究,基于知识水平有限,容浅显还有不足之处,还望谅解。关键词嵌入式系统;移植;Linux;BootLoaderArm9-based Linux System TransplantationAbstractThe advent of the era of Internet of things will once again usher in a technological revolution, and the core of the Internet of things is precisely embedde
6、d technology, embedded technology significance undoubtedly.Embedded system is the soul of embedded technology, the research of embedded systems have a vital role in the development of embedded.Embedded one of the biggest characteristics is the specificity, to in-depth study and research in embedded
7、system must be specific to a detailed implementation process.Undergraduate course topic is represented by an embedded system transplantation to analyze the embedded technology, embedded system transplantation but can small, big enough to is a company or factory system, is small enough to be a watch
8、system.This topic is based on the fly ling company FL2440ARM development board to reproduce the migration process of embedded Linux system.This topic first on the background of the embedded technology and the present situation of a brief analysis, this paper introduces the development board of the h
9、ardware and software environment, introduces briefly the structure of BootLoader, lists the detailed steps of migration process of BootLoader, the Linux source code file and directory is briefly analyzed, the specific to the development board a brief interpretation of the Linux kernel compilation, f
10、inally realize the Linux kernel and file system transplanted to the development board.This topic combines the universitys basic professional courses, the combination of theory and practice of unit 1 specific study of the embedded system transplantation, is in line with the spirit of continuous learn
11、ing and exploring study and research to the embedded system, based on the knowledge level is limited, content simple and deficiency, still hope understanding.Keywords Embedded system,Transplantation,Linux,BootLoader目 录摘要IAbstractII第1章 绪论11.1 课题背景11.2 研究意义11.3 国外研究现状分析21.3.1 国嵌入式系统现状21.3.2 国外嵌入式系统现状2
12、1.4 论文研究的主要容2第2章 硬件环境与软件开发环境42.1 开发板总体介绍42.1.1 开发板处理器芯片简介52.1.2 开发板时钟与主要控制器72.1.3 开发板接口与工作条件82.2 软件开发环境102.3 本章小结11第3章 BootLoader引导程序123.1 嵌入式系统BootLoader简介123.2 FL2440的BootLoader143.3 烧写BootLoader到开发板153.4 本章小结21第4章 Linux启动过程与编译224.1 Linux2.6核的新特性简介224.2 Linux核启动流程224.3 Linux目录文件234.4 核编译代码修改244.5
13、本章小结27第5章 Linux核与文件系统移植285.1 核移植285.2 文件系统移植315.3 本章小结35结论36致37参考文献38附录A40附录B45第1章 绪论1.1 课题背景物联网时代的到来即将再次迎来一次技术革命,而物联网的核心恰恰是嵌入式技术,嵌入式技术在其中有着无可替代作用。嵌入式系统是嵌入式技术的灵魂,对嵌入式系统的学习和探索对于嵌入式的发展有着至关重要的作用。嵌入式技术毫无疑问已经成为21世纪最具有动力和发展前景的革命性技术之一,目前已经广泛应用于社会的各个方面。随着国外嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活紧密相关,并且已经广泛应用于工程设计、军事技
14、术、医疗保健、消费电子、科学研究以与各类生活用品中。由于移动互联网的日益普与,使得嵌入式成为当前最热门、最具有发展前景的行业。1.2 研究意义关于什么是嵌入式系统众说纷纭,有一种官方的定义:嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统1。个人理解为除PC以外的一切电子产品都可以叫做是嵌入式设备,而在嵌入式硬件设备上定制的、专用的系统就是嵌入式系统,这里的嵌入式系统指的是硬件设备上软件部分。现在一般提到的嵌入式系统都是硬件与软件一体化的计算机系统,不单指软件系统。20世纪70年代是单片机为代表的嵌入式设备,无疑
15、为汽车、工业机器和通讯装置等成千上万中电子装置提供了更佳的使用性能。80年代革命性的嵌入式操作系统广泛用于工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事设备、消费产品等众多领域。发展到现在,嵌入式产品可以说深入到日常生活的方方面面,然而由于嵌入式产品的特性以至于还没有被充分的得到开发,还具有很大的空间提升,而嵌入式系统是每个完整的嵌入式设备所必备的,所以嵌入式系统移植的研究无疑是最基础而且最关键的部分,其意义也就无庸置疑的重要了。嵌入式系统对于当代的意义已经造福了如今的我们现在的生活,然而嵌入式更深远的价值在于它还没有被完全开发利用。如今我们对嵌入式技术的认识和应用仅仅只是
16、嵌入式系统技术的一点皮毛而已。试想在身边的每一个物体都嵌入操作系统也就是物联网,也许在商场想要买东西只需要一个眼神就能虚拟试穿,也或者根本不用亲自去商场在家就能试穿想要的衣服,足不出户就能完成生活所需。当然由于硬件更确切的说是成本等问题一直制约着嵌入式的发展,嵌入式的发展还需要一段时间的缓冲,相信嵌入式在未来十年肯定会有大的发展。所以不管是对于现在还是未来对于嵌入式技术的研究都具有深远的意义。1.3 国外研究现状分析1.3.1 国嵌入式系统现状国的实时操作系统可以分为两种类型:一类是中国自主开发的实时操作系统,如电子科技大学嵌入式实时教研室和克银公司联合研制开发的实时操作系统Delta OS(
17、道系统)、凯思公司的Hopen OS(女娲计划)、中科院软件工程研制中心开发的CASSPDA以与大学自行研制开发的嵌入式系统HBOS等;另一类是基于国外操作系统二次开发完成的,这类大多是专用系统。1.3.2 国外嵌入式系统现状国外实时操作系统相比于国已经从简单着步走向成熟,自20世纪80年代其就有一些国际上的IT组织和公司开始进行商用嵌入式系统和专用操作系统的研发。有代表的操作系统有VxWorks、QNX、Palm OS、Windows CE和嵌入式linux等2。Vxworks操作系统是美国WindRiver公司开发的实时操作系统。它具有良好的持续发展能力,高性能的核以与良好的可靠性和卓越的
18、实时性。QNX是一个实时的、可扩充的操作系统。它部分遵循POSIX相关标准。Palm OS是3Com公司的,它已经在掌上电脑和PDA市场上占据和大的市场价额。它有开放的操作系统应用程序接口,开发商可以根据需求自行开发所需的应用程序。Microsoft Windows CE是从整体上为资源有限平台设计的多线程、完整优先权和多任务的操作系统3。Lynx Rral-time Systems的Lynx OS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。嵌入式linux有很多版本,像RT-linux和KURT-linux的强实时操作系统也
19、有uCLinux和Pocket Linux等一般的嵌入式Linux版本4。1.4 论文研究的主要容嵌入式最大的特点之一就是专用性,要想深入的学习和研究研究嵌入式系统必须具体到一个详细的实施过程。本科题就是以嵌入式系统移植为代表来剖析嵌入式技术,嵌入式系统移植可大可小,大到可以是一个公司或者工厂的系统,小到可以是一块手表的系统。本课题是基于飞凌公司的FL2440ARM开发板重现对嵌入式Linux系统的移植过程。本课题是以FL2440开发本为基础,重现Linux的移植。首先对FL2440开发板的硬件条件以与软件环境的构建做简单的介绍,然后移植Bootloader,限于知识水平和阅历只能对Bootl
20、oader有一个较为模糊的概念,对其源码与编译只有简单的了解,因此从官网下载了编译好的Bootloader文件进行移植,最后介绍了一下Linux核目录,Linux核基于FL2440的主要编译过程以与核和文件系统移植的详细步骤。本课题综合了大学的基本专业课程,理论和实践相结合由浅入深的具体的研究了嵌入式系统移植,是本着不断学习和探索的精神对嵌入式系统进行学习和研究,基于知识水平有限,容浅显还有不足之处,还望谅解。第2章 硬件环境与软件开发环境2.1 开发板总体介绍FL2440是由飞凌嵌入式技术设计生产的一款嵌入式开发平台,它基于三星公司的ARM9处理器S3C2440A,部带有全性能的MMU(存处
21、理单元) ,适用于设计移动手持设备类产品。FL2440开发板采用核心板+底板设计,性能稳定可靠,具有高性能、低功耗、接口丰富和体积小等优良特性。开发板采用核心板+底板结构,核心板为6 层,底板为2 层。开发板的布局和走线经过精心设计,可稳定运行在400MHz。接口丰富,功能强大,适用于各种手持设备,消费电子和工业控制设备的开发5。FL2440 开发板上取消原有的norflash 芯片,只提供nandflash 一种烧写方式。降低了原有的功耗。对于bootloader 和操作系统没有任何影响。图2-1 开发板底板图如图2-1所示FL2440 开发板上存储器包括SDRAM 和FLASH,系统配置了
22、两片32M 的三星SDRAM,一片NandFlash (128M 或256M),开发板采用两片半字(half-word)SDRAM 器件共同组成一个32 位数据宽度的SDRAM 系统,提高了其与CPU 的通信效率。更好的发挥S3C2440A 芯片的潜能。考虑到用户的实际需要,SDRAM 电路采用了兼容设计的方案,支持32M字节或64M 字节的单片SDRAM,由如图中的两个电阻进行选择。如果是32M 的SDRAM则将R32 的1,3 脚用22电阻连接,R33 的2,3 脚用22电阻连接。如果焊的是64M 的SDRAM则将R32的3,2脚用22电阻连接,R33的1,2脚用22电阻连接6。 2.1.
23、1 开发板处理器芯片简介本课题所用开发板采用的是三星公司推出的16/32 位RISC 处理器,该处理器是面向高端手持设备或其它一般应用而设计的芯片7。采用ARM920T 核,低功耗, 具有高速的处理计算能力。整体设计融合了MMU、AMBA BUS 和Harvard(哈佛)结构。具有独立的16KB 指令Cache 和16KB 数据Cache。其部结构框图见下图2-2所示。其体系结构为:1为手持设备和通用嵌入式应用提供片上集成系统解决方案。216/32 位RISC 体系结构和ARM920T 核指令集。3增强的ARM 体系结构MMU 用于支持WinCE,EPOC32 和Linux。4指令高速存储缓冲
24、器(ICache),数据高速存储缓冲器(DCache),写缓冲器和物5理地址TAG RAM 减少主存带宽和响应性带来的影响。6采用ARM920T CPU 核支持ARM 调试体系结构。7部高级微控制总线(AMBA)体系结构(AMBA2.0,AHB/APB)。其系统管理器为:1支持大/小端模式。2支持快速总线模式和同步总线模式3寻址空间:每bank 128M 字节(总共1G 字节)。4支持可编程的每bank 8/16/32 位数据总线带宽。5从bank0 到bank6 都采用固定的bank 起始寻址。6bank7 具有可编程的bank 的起始地址和大小。78 个存储器bank,其中6 个适用于RO
25、M、SRAM 和其它,另外两个适用于ROM/SRAM和同步DRAM。8所有的存储器bank 都具有可编程的操作周期。9支持外部等待信号延长总线周期。10支持掉电时的SDRAM 自刷新模式。11支持各种型号的ROM 引导(NOR/NAND FLASH、EEPROM,或其它)。图2-2 S3C2440 结构框图其NAND FLASH 启动引导介绍:1支持从NAND FLASH 存储器直接启动。2采用4KB 部缓冲器进行启动引导。3启动之后NAND 存储器仍然可作为外部存储器使用其Cache 存储器为:164 项全相连模式,采用ICache(16KB)和DCache(16KB)。2每行8 字长度,其
26、中每行带有一个有效位和两个dirty 位。3伪随机数或轮转循环替代法。4采用写穿式(writethrough)或写回式(writeback)Cache 操作来更新主存储器。5写缓冲器可以保存16 个字的数据和4 个地址。2.1.2 开发板时钟与主要控制器时钟电源管理:1在S3C2440 中集成了两个锁相环:MPLL 和UPLL。UPLL 将产生USB 主机/设备的时钟,MPLL 产生处理器所需要的时钟,最大400MHZ(在1.3V 核电压下)。2通过设置相应寄存器,可以有选择的为每个功能模块提供需要的时钟。3电源模式,包括正常、慢速、空闲和休眠模式。正常模式指正常运行模式;慢速模式指不加锁相环
27、的低时钟频率模式;空闲模式指停止CPU 的时钟;休眠模式指所有外设和核的电源都被切断。4可以通过EINT15:0或RTC 报警中断来从休眠模式中唤醒处理器。中断控制器:160 个中断源(1 个看门狗定时器,5 个定时器,9 个UARTs,24 个外部中断,4 个DMA,2 个RTC,2 个ADC,1 个IIC,2 个SPI,1 个SDI,2 个USB,1 个LCD,1 个电池故障,1 个NAND 和2 个摄像头)1 个AC97。2支持电平/边沿触发模式的外部中断源。3可编程的边沿/电平触发模式选择。4支持为紧急中断请求提供快速中断(FIQ)服务。具有脉冲带宽调制功能的定时器(PMW):14 通
28、道16 位具有PWM 功能的定时器,1 通道16 位部定时器,可基于DMA 或中断进行工作。2可编程的占空比周期,频率和极性。3能产生死区。4支持外部中断源。RTC(实时时钟):1全面的时钟特性:秒、分、时、日期、星期、月和年32.768KHz 工作频率。2具有报警中断。3具有节拍(TICK)中断。看门狗定时器:116 位看门狗定时器。2在定时器溢出时发生中断请求或系统复位。LCD 控制器:1支持3 种类型的STN LCD 显示屏:4 位双扫描,4 位单扫描,8 位单扫描显示类型。2支持单色模式、4 级、16 级灰度STN LCD、256 色和4096 色STN LCD。3支持多种不同尺寸的液
29、晶屏。4LCD 实际尺寸的典型值是:640480,320240,160160 与其它。5最大帧缓冲器大小是4M 字节。6256 色模式下支持的最大虚拟屏是:40961024,20482048,10244096 等。DMA 控制器:14 通道的DMA 控制器。2支持存储器到存储器,I/O 到存储器,存储器到I/O 和I/O 到I/O 的传输。3采用脉冲传输模式加快传输速率。2.1.3 开发板接口与工作条件通用I/O 端口:124 个外部中断端口。2多功能输入/输出端口。A/D 转换和触摸屏接口:18 通道多路复用ADC。2最大500KSPS/10 位精度。3置场效应管可直接连接触摸屏。IIC 总
30、线接口:11 通道多主IIC 总线。2。可进行串行、8 位、双向数据传输,标准模式下数据传输速度可达100kbit/s,快速模式下可达到400kbit/s。IIS 总线接口:11 通道音频IIS 总线接口,可基于DMA 方式工作。2串行,每通道8/16 位数据传输。3发送和接收具备128 字节(64 字节加64 字节)FIFO。4支持IIS 格式和MSBjustified 数据格式。AC97 音频接口:1支持16 位取样。21 路立体声PCM(脉冲编码调制)输入、1 路立体声PCM 输出、l 路MIC 输入。USB 主设备:12 个USB 主设备接口。2遵从OHCI Rev1.0 标准。3兼容
31、USB ver1.1 标准。USB 从设备:11 个USB 从设备接口。2具备5 个Endpoint。3兼容USB ver1.1 标准。SD 主机接口:1基于普通、DMA 或中断传输模式(字节、半字、字)。2支持DMA 脉冲访问(只是字传输)。3兼容SD 存储卡协议1.0 版。4兼容SDIO 卡协议1.0 版。564 字节发送和接收FIFO。6兼容多媒体卡协议2.11 版。SPI 接口:1兼容2 通道SPI 协议2.11 版。2发送和接收具有28 位的移位寄存器。3可以基于DMA 或中断模式工作。摄像头接口:1支持ITU-R BT 601/656 8 位模式。2可以DZI(数码缩放)。3可编程
32、的视频同步信号极性。4最大支持4096*4096 像素输入(2048*2048 像素输入比例)。5摄像头输出格式(RGB 16/24 位和YCbCr4:2:0/4:2:2 格式)。工作电压:1核:1.2V,最高300MHz;1.3V,最高400MHz2存储器:1.8V/2.5V/3.0V/3.3V。3IO 口: 3.3V。操作频率:1Fclk 最高达到400MHz。2Hclk 最高达到136MHz。3Pclk 最高达到68MHz。封装:289FBGA2.2 软件开发环境软件开发平台是嵌入式开发的关键,嵌入式软件开发平台建立的目的是为了进行BootLoader移植、Linux核移植以与GUI系统
33、开发。由于嵌入式硬件平台的存储空间有限、处理器频率较低,很难直接在嵌入式硬件式平台上建立Linux系统、安装嵌入式开发软件,因此只能采用嵌入式交叉开发环境来解决这个问题。ADS 全称为ARM Developer Suite 。是ARM 公司推出的新一代ARM 集成开发工具。本课题所用ADS的版本是1.2 ,它取代了早期的ADS1.1 和ADS1.0 。除了可以安装在WindowsNT4 、Windows 2000 、Windows 98 和Windows 95 操作系统之外,还支持Windows XP 和Windows Me 操作系统。ADS 由命令行开发工具、ARM 时实库、GUI 开发环境
34、(Code Warrior 和AXD) 、实用程序和支持软件组成。有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己开发的应用程序了。DNW 软件是三星公司为S3C2440A 芯片配置的一款专用串口软件,可以在Windows 系统下通过USB 烧写Flash。由于串口严禁热插拔,所以串口线转USB连接线应该在开发板上电之前连接好。在此之前要装好串口转USB的驱动程序,装好后在设备管理器中有图1-2所示设备Prolific USB-to-Serial Comm Port(COM1)在PC 上打开DNW(V0.50.A)在“Configuration”菜单中设置COM1,波特率
35、为115200,“Download Address”设置为“0x30800000”( 此参数为下载到存的地址:0x300000000x34000000,bootloader 用了0x30200000 之前的存地址,用了0x30200000之前的存地址会发生冲突事件)。USB驱动安装。用串口线连接好开发板(默认用串口0)和PC 机。打开DNW 进行相应配置,开发板上电,待Bootloader 启动之后使其停在菜单处(在系统引导并读秒时按回车键)。用USB 线将PC 机和开发板的USB DEVICE 口相连,此时PC 机系统会提示发现新硬件,下面按提示安装USB 驱动。并口驱动安装。将驱动GIVE
36、IO文件夹中的“GIVEIO.SYS”拷贝到WINDOWS的系统驱动目录下(例如:C:WINNTsystem32drivers”)。在WINDOWS 的“控制面板”中选择“添加硬件”,选择“添加新的硬件设备”点击“下一步”,选择“安装手动从列表选择的硬件”,点击“下一步”,选择“端口”,点击“下一步”,选择“从磁盘安装”,在“厂商文件复制来源”中选择光盘中GIVEIO.inf 所在的目录,点击“确定”接下来的步骤一直选择“下一步”,最后GIVEIO 将成功安装到系统中。除DNW之外,Windows 自带的超级终端也是最常用的选择。一般安装Windows9x 时需要自定义选择安装该项,但Wind
37、ows2000 与更高版本则已经缺省安装。下面Windows 自带超级终端的使用。超级终端程序通常位于“开始-程序-附件-通讯-超级终端”,点击超级终端即可。Hypertrm.exe 图标所指即是超级终端程序,当该程序第一次运行时,会跳出一个对话框,询问你是否要安装一个Modem,此时你不需要安装Modem,因此点“否”按钮。接下来,超级终端会要求你为新的连接取一个名字,如下图所示,这里取了”FL2440”,Windows系统会禁止你取类似”COM1”这样的名字,因为这个名字被系统占用了。点击确定之后会弹出一个新的对话框,此时需要选择与FL2440开发板相连接的PC机串口,这里选择了串口1,最
38、后,最重要的一步是设置串口,注意必须选择流控制为无,否则,将会导致收发不正常,另外FL2440工作时的串口波特率是115200。 当所有的连接参数都设置好以后,超级终端会显示如下所示主窗口,此时超级终端应该是空白的。选择超级终端“文件”菜单下的“另存为”,保存该连接设置,以便于以后再连接时就不必重新执行以上设置了。当开发板上电后,终端上就会显示Bootloader的相关信息。2.3 本章小结本章首先整体的介绍了开发板的整体结构,然后深入介绍了开发板采用的S3C2440A 芯片的体系结构、系统管理器、FLASH启动、存储器等与之相关的结构以与开发板的主要时钟、控制器、工作频率、工作电压和主要接口
39、等外部条件,最后简要的介绍了电脑设备所需驱动以与安装步骤和主要用到的软件的安装和设置。第3章 BootLoader引导程序3.1 嵌入式系统BootLoader简介对于一个稍微深入接触计算机的人大概都有一个模糊的概念,计算机加点后在操作系统核启动或者用户应用程序运行之前,首先要运行一段引导程序,我们称之为BootLoader。对于电脑机的引导系统在完成硬件检测和资源分配后,将外存也就是硬盘中的引导程序读到系统的存中,然后将控制权交给操作系统。但是在嵌入式产品中由于规格大小的限制往往没有那么多固件,所以有的嵌入式会将一段短小的启动程序嵌入到CPU中去以节省空间和资源,于是整个操作系统的正常启动的
40、任务就完全交给了嵌入式的引导程序8。对于ARM体系结构的CPU来说,第一条指令从0x00000000开始执行。在嵌入式开发板中需要把存储器件ROM或者Flash映射到这个地址,而在这个地址处通常安排的是系统地BootLoader。简单地说,引导程序就是在操作系统核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统核准备好正确的环境。通常,引导程序是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的引导程序几乎是不可能的。尽管如此,我们仍然可以对引导程序归纳出一些通用
41、的概念来,以指导用户特定的引导程序设计与实现9。引导程序所支持的CPU 和嵌入式板。每种不同的CPU 体系结构都有不同的引导程序。有些引导程序也支持多种体系结构的CPU,比如U-Boot 就同时支持ARM 体系结构和MIPS 体系结构。除了依赖于CPU 的体系结构外,引导程序实际上也依赖于具体的嵌入式板级设备的配置10。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要想让运行在一块板子上的引导程序也能运行在另一块板子上,通常也都需要修改引导程序。引导程序的安装媒介(Installation Medium)。系统加电或复位后,所有的CPU 通常都从某个由CPU 制
42、造商预先安排的地址上取指令。比如,基于ARM7TDMI core 的CPU 在复位时通常都从地址0x00000000 取它的第一条指令11。而基于CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行Boot Loader 程序。用来控制引导程序的设备或机制。主机和目标机之间一般通过串口建立连接,引导程序软件在执行时通常会通过串口来进行I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。引导程序的启动过程是单阶段(Single Stage)还是多阶段。通常多阶段的引导程序能
43、提供更为复杂的功能,以与更好的可移植性12。从固态存储设备上启动的引导程序大多都是2 阶段的启动过程,也即启动过程可以分为stage 1 和stage 2 两部分13。引导系统的操作模式(Operation Mode)大多数引导程序都包含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,引导系统的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载(Boot loading)模式:这种模式也称为“自主”(Autonomous)模式。也即Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到RAM 中
44、运行,整个过程并没有用户的介入14。这种模式是引导程序的正常工作模式,因此在嵌入式产品发布的时侯,引导系统显然必须工作在这种模式下。下载(Downloading)模式:在这种模式下,目标机上的引导程序 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载核映像和根文件系统映像等。从主机下载的文件通常首先被引导程序保存到目标机的RAM 中,然后再被引导系统写到目标机上的FLASH 类固态存储设备中15。引导程序的这种模式通常在第一次安装核与根文件系统时被使用;此外,以后的系统更新也会使用引导程序的这种工作模式。工作于这种模式下的引导系统通常都会向它的终端用户提供一个简单的命令
45、行接口16。像Blob 或U-Boot 等这样功能强大的Boot Loader 通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,Blob 在启动时处于正常的启动加载模式,但是它会延时10 秒等待终端用户按下任意键而将blob 切换到下载模式17。如果在10 秒没有用户按键,则blob 继续启动Linux核。BootLoader 与主机之间进行文件传输所用的通信设备与协议最常见的情况就是,目标机上的Boot Loader 通过串口与主机之间进行文件传输,传输协议通常是xmodemymodemzmodem 协议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接并借助TFTP 协议来下载文件是个更好的选择18。此外,在论与这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和TFTP 协议来下载文件时,主机方必须有一个软件用来的提供TFTP 服务19。3.2 FL2440的BootLoader开发板连接好串口线,打开DNW 进行设置,开发板上电如图3-1所示。图3-1 DNW设置在DNW 为当前有效窗口时,敲PC 键盘的任意键(须在上图蓝圈所示的时间围,上图为7 秒