BootLoader设计开发.doc_第1页
BootLoader设计开发.doc_第2页
BootLoader设计开发.doc_第3页
BootLoader设计开发.doc_第4页
BootLoader设计开发.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科学生毕业论文(设计)题目(中 文):BootLoader设计开发(英 文):Design And Development Of BootLoader姓 名 学 号 院 (系)电子工程系专业、年级电子信息工程 级指导教师 湖南科技学院本科毕业论文(设计)诚信声明本人郑重声明:所呈交的本科毕业论文(设计),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 本科毕业论文(设计)作者签名: 二 年 月 日 毕业论文(设计)任务书课题名称: BootLoader 设计开发学生姓名: 系 别:电子工程系专 业:电子信息工程指导教师: 湖南科技学院本科毕业论文(设计)任务书1、 主题词、关键词: Devkit8000开发板;BootLoader :g-bios;Linux内核; 文件系统。2、毕业论文(设计)内容要求:1)总体论述基于TI OMAP3的BootLoader的研究意义。2)提出系统设计任务,设计系统框架。3)设计部分硬件电路、软件模块。4)对基于TI OMAP3的BootLoader进行整机调试。5)设计效果及结论。3、 文献查阅指引:1 陆强,戴文,吴士涛. 基于ARM和C/OS嵌入式系统移植的研究J. 山东科技大学学报(自然科学版). 2006(04)2 杨洁,赵刚. 嵌入式系统中Bootloader的编译与移植J. 四川大学学报(自然科学版). 2007(04)3 黄峰亮,贾燕茹. Linux2.6在嵌入式系统上的移植J. 大众科技. 2007(03)4 郭连智,夏路易. 基于ARM嵌入式系统的LWIP协议栈移植J. 科技情报开发与经济. 2007(05)5 康世英,姚斌. 嵌入式系统基于IP的网络接口驱动程序的实现J. 西安文理学院学报(自然科学版). 2009(03)6 王晓亮. 基于ARM的嵌入式指纹识别系统J. 中国科技信息. 2009(20)7 卓碧华,陈良维,罗刚,李托径. 基于ARM+CLinux的嵌入式Web设计J. 科技信息(科学教研). 2007(21)8 李胜琴,张国荣,许岩. 基于ARM的交叉编译工具的制作J. 太原师范学院学报(自然科学版). 2010(02)9 Moshc Bar.Linux technology internals. 200710 Mel Gorman.Understanding the Linux virtual memory manager. 20044、毕业论文(设计)进度安排:(1)2012.10-2012.11 市场需求分析。(2)2012.12 收集、整理资料、书籍、文献。(3)2013.1 整理资料,撰写论文,定好初稿。(4)2013.2 BootLoader的设计与评价。(5)2013.3 BootLoader系统移植的设计。(6)2013.5 修改,制板,测试,定稿,装订,答辩。教研室意见: 负责人签名: 注:本任务书一式三份,由指导教师填写,经教研室审批后一份下达给学生,一份交指导教师,一份留系里存档。论文(设计)题目BootLoader设计开发作 者 姓 名陈俊强所属系、专业、年级 电子工程系 电子信息工程专业 2009年级指导教师姓名、职称谭永宏预计字数10000开题日期2012.12.24一、课题目的和意义:嵌入式操作系统在嵌入式软件开发中占的重要性越来越大。而且在嵌入式操作系统中,Boot Loader则是一个不可或缺的话题,无论是Windows CE还是嵌入式Linux,或者是其他的嵌入式操作系统。大多数都需要Boot Loader来加载操作系统。当面对一块裸板,想要在上面运行一个嵌入式操作系统,那么第一件要来处理的事情就是移植和该操作系统相对应的Boot Loader。而在嵌入式开发中,通常会在Boot Loader上消耗大量的时间人力和物力。所以,对BootLoader的研究与学习显得更加重要。二、课题主要内容(提纲)及拟解决的关键问题:由于 Boot Loader 的实现依赖于 CPU 的体系结构,因此大多数 Boot Loader 都分为 stage1 和 stage2 两大部分。依赖于 CPU 体系结构的代码,比如设备初始化代码等,通常都放在 stage1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而 stage2 则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。Boot Loader 的 stage1 通常包括以下步骤(以执行的先后顺序):1)硬件设备初始化。 2)为加载 Boot Loader 的 stage2 准备 RAM 空间。 3)拷贝 Boot Loader 的 stage2 到 RAM 空间中。 4)设置好堆栈。 5)跳转到 stage2 的 C 入口点。 6)Boot Loader 的 stage2 通常包括以下步骤(以执行的先后顺序):7)初始化本阶段要使用到的硬件设备。 8)检测系统内存映射(memory map)。 9)将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。 10)为内核设置启动参数。 11)调用内核。拟采用的思路和方法:1.需求分析阶段:理解毕业设计任务,对现有BootLoader进行分析。2.概要设计:对BootLoader的模块先后及依赖性进行分析设计。3.功能实现:对每个模块进行实现与测试。4.测试:烧入开发板,并进行测试。完成期限和采取的主要措施:1-7周:对课题进行可行性分析,并根据课题搜集资料,查阅相关知识,熟悉掌握相关技术,理解毕业设计任务。第8-9周:设计出基本框架及模块。10-14周:编码,实现各个模块的功能。15-16周:检查及完善。撰写和修改毕业论文,准备论文答辩。2、主要措施:(1)通过有效途径查阅相关文献资料,引证参考已有的研究成果,确定论文研究主题。(2)与指导老师和同学进行多层次多方面的交流探讨,提炼观点,吸收建议。主要参考文献:1 陆强,戴文,吴士涛. 基于ARM和C/OS嵌入式系统移植的研究J. 山东科技大学学报(自然科学版). 2006(04)2 杨洁,赵刚. 嵌入式系统中Bootloader的编译与移植J. 四川大学学报(自然科学版). 2007(04)3 黄峰亮,贾燕茹. Linux2.6在嵌入式系统上的移植J. 大众科技. 2007(03)4 郭连智,夏路易. 基于ARM嵌入式系统的LWIP协议栈移植J. 科技情报开发与经济. 2007(05)5 康世英,姚斌. 嵌入式系统基于IP的网络接口驱动程序的实现J. 西安文理学院学报(自然科学版). 2009(03)6 王晓亮. 基于ARM的嵌入式指纹识别系统J. 中国科技信息. 2009(20)7 卓碧华,陈良维,罗刚,李托径. 基于ARM+CLinux的嵌入式Web设计J. 科技信息(科学教研). 2007(21)8 李胜琴,张国荣,许岩. 基于ARM的交叉编译工具的制作J. 太原师范学院学报(自然科学版). 2010(02)9 Moshc Bar.Linux technology internals. 200710 Mel Gorman.Understanding the Linux virtual memory manager. 2004指导教师意见:指导教师签名: 教研室意见:签 名: 年 月 日开 题 报 告 会 纪 要时间2012.12.24地点三教610与会人员姓 名职务(职称)姓 名职务(职称)姓 名职务(职称)李春树教授谭永宏副教授廖朝阳讲师杨熙讲师李小武副教授李艳芳副教授会议记录摘要:问题一、选题意义?答:通过毕业设计使我了解了嵌入式系统开发的过程和熟悉Linux操作系统结构、工作原理和剪裁方法以及交叉编译工具的使用,目的在于将前期学习过的知识应用于课题的开发中,使我在课题的实施过程中学会已有知识的应用,培养自己自主学习和发现问题、解决问题的能力。问题二、设计内容?答:该系统是最基本的系统软件,主要实现移植后的内核具备网络通、串口通、根文件系统可用。设计用的开发板是基于ARM的OMAP3530芯片,要保证Bootloader正常引导内核。问题三、研究计划?答:首先收集相关资料、查阅相关资料确定设计方案,并完成开题报告,然后进行整体方案的设计、软件编写,进行硬件调试及系统测试。最后根据查询所得的资料及所编写的程序撰写论文,并在导师的指导下修改论文。会议主持人:记 录 人:年 月 日指导小组意见负责人签名: 年 月 日系部 意 见负责人签名:年月日湖南科技学院毕业论文(设计)中期检查表毕业论文(设计)题 目Bootloader设计开发学生姓名陈俊强学 号200906002136系 别电子工程系专 业电子信息工程指导教师谭永宏检查日期2013年4月3日指导教师检查情况记载及修改意见:1. 论文的基本思路比较清晰,但调理还还不够清楚。2. 全文的目录、摘要、内容没有协调一致。3. 论文中的表格和流程图要按照规范来排版。4. 系统主要方案设计太过繁琐,抓取主要框架。5. 参考文献按照学校的毕业论文撰写规范写,同时在正文中引用的位置上做好标记。6. 图和表在文章正文中一定要有说明。签名: 注:此表用于指导教师在学生毕业论文(设计)初稿完成后对学生执行任务书情况进行中期检查时用,由指导教师填写。湖南科技学院毕业设计(论文)指导过程记录表毕业论文(设计)题目Bootloader设计开发学生姓名陈俊强学号200906002136专业班级电子信息工程电信0901班指导教师谭永宏职称副教授系(教研室)电子信息工程指导过程记录指导内容记录(一)选题、查阅资料指导:根据自己所学专业和特长,选一实用性强,能做简易模型且有一定深度,能学以致用的题目。1、到图书馆查找和借阅与选题有关的文献和资料;2、从网上检索和下载与选题有关的文献和资料。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导内容记录(二)论文开题指导:1、题目应该简短、明确、有概括性;2、摘要是各个章节内容的浓缩,应做到简练、准确;3、关键词应采用能覆盖论文主要内容的通用词条;4、正文一般应包括绪论、论文主体及结论等部分;5、结论是毕业论文的总结,要求精炼、准确地概述全文的主要观点。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导内容记录(三)硬件设计指导:1、根据自己的设计要求,选择合适的芯片,在网上多查相关的资料,做到心中有数,同时注意整个系统的性价比;2、做具体硬件之前,先进行硬件仿真,确认系统设计的正确性;3、进行硬件调试时,先分模块调试再进行整体系统调试。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导内容记录(四)软件设计指导:明确系统实现功能,设计总体框图,根据流程图编写软件代码学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导过程记录指导内容记录(五)论文写作指导:主体的内容应包括以下几个方面:1、毕业论文总体方案设计与选择的论证;2、对本研究内容进行较全面、客观的理论阐述,应着重指出本研究内容中的创新、改进与实际应用之处; 3、论文应推理正确,结论清晰,无科学性错误。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导内容记录(六)论文中期检查指导:1、加强对选题核心思想的理解;2、规范论文文句,减少主观语句的使用;3、图片的大小要规范。4、框图文字太小。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导内容记录(七)论文修改指导:1、字数太多,将器件说明类语句压缩;2、按照毕业论文的标准格式排版。3、参考文献按照学校的毕业论文撰写规范写,同时在正文中出现的位置以上标的形式标出,要有1篇以上外文参考文献。4、结论部分要精简,减少主观语句。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日指导内容记录(八)论文答辩指导:1、制作一个能反映论文主要内容,可放映510分钟的ppt演示文稿,作答辩陈述用;2、掌握研究内容的实际意义、创新、改进和特色之处,设计原理、工作过程等主要内容。3、演示实物突出自己的设计创新点。学 生 签 名: 20 年 月 日 指导教师签名: 20 年 月 日答辩小组组长意见(对情况是否属实做出意见)组长(签名): 20 年 月 日注:本表与毕业论文一起装订存档。湖南科技学院本科毕业论文(设计)评审表论文题目BootLoader 设计开发作者姓名陈俊强所属系、专业、年级电子工程 系 电子信息工程 专业 2009年级指导教师姓名、职称谭永宏、副教授 字 数13733定稿日期2013.05.08中文摘要随着越来越多的嵌入式设备研发中采用操作系统支持,必然要根据目标板设计引导程序(BootLoader)。本课题研究了嵌入式操作系统的启动过程,实现了BootLoader的两个基本功能:目标板硬件的初始化和内核的加载启动。同时本课题还对BootLoader的功能进行了扩展:串口的通信,下载模式的支持,FLASH的擦写。最后成功地将BootLoader移植到Devkit8000开发板,系统启动正常、运行稳定,达到了设计要求。关键词(3-5个)Devkit8000开发板;BootLoader :g-bios;Linux内核; 文件系统。英文摘要With more and more embedded devices R & D in the operating system support, necessarily based on the target board design boot loader (bootloader). This study is embedded operating system boot process, the BootLoader The two basic functions: the target board hardware initialization and kernel loading start. This topic also Bootloader function expansion: serial communication, download mode support FLASH erase. Last bootloader transplantation to DevKit8000 development board, the system starts normal, stable operation, met the design requirements.关键词(3-5个)Devkit8000;BootLoader :g-bios;Linux kernel; Filesystem.指导教师评定成绩评审基元评审要素评审内涵满分指导教师实评分选题质量25%目的明确符合要求选题符合专业培养目标,体现学科、专业特点和教学计划的基本要求,达到毕业论文(设计)综合训练的目的。理论意义或实际价值符合本学科的理论发展,有一定的学术意义;对经济建设和社会发展的应用性研究中的某个理论或方法问题进行研究,具有一定的实际价值。选题恰当题目规模适当,难易度适中;有一定的科学性。能力水平40%查阅文献资料能力能独立查阅相关文献资料,归纳总结本论文所涉及的有关研究状况及成果。综合运用知识能力能运用所学专业知识阐述问题;能对查阅的资料进行整理和运用;能对其科学论点进行论证。研究方案的设计能力整体思路清晰;研究方案合理可行。研究方法和手段的运用能力能运用本学科常规研究方法及相关研究手段(如计算机、实验仪器设备等)进行实验、实践并加工处理、总结信息。外文应用能力能阅读、翻译一定量的本专业外文资料、外文摘要和外文参考书目(特殊专业除外)体现一定的外语水平。论文质量35%文题相符较好地完成论文选题的目的要求。写作水平论点鲜明;论据充分;条理清晰;语言流畅。写作规范符合学术论文的基本要求。用语、格式、图表、数据、量和单位、各种资料引用规范化、符合标准。论文篇幅10000字左右。实评总分 成绩等级 指导教师评审意见: 指导教师签名: 说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级,实评总分90100分记为优秀,8089分记为良好,7079分记为中等,6069分记为及格,60分以下记为不及格。评阅教师评定成绩评审基元评审要素评审内涵满分评阅教师实评分选题质量25%目的明确符合要求选题符合专业培养目标,体现学科、专业特点和教学计划的基本要求,达到毕业论文(设计)综合训练的目的。理论意义或实际价值符合本学科的理论发展,有一定的学术意义;对经济建设和社会发展的应用性研究中的某个理论或方法问题进行研究,具有一定的实际价值。选题恰当题目规模适当,难易度适中;有一定的科学性。能力水平40%查阅文献资料能力能独立查阅相关文献资料,归纳总结本论文所涉及的有关研究状况及成果。综合运用知识能力能运用所学专业知识阐述问题;能对查阅的资料进行整理和运用;能对其科学论点进行论证。研究方案的设计能力整体思路清晰;研究方案合理可行。研究方法和手段的运用能力能运用本学科常规研究方法及相关研究手段(如计算机、实验仪器设备等)进行实验、实践并加工处理、总结信息。外文应用能力能阅读、翻译一定量的本专业外文资料、外文摘要和外文参考书目(特殊专业除外)体现一定的外语水平。论文质量35%文题相符较好地完成论文选题的目的要求。写作水平论点鲜明;论据充分;条理清晰;语言流畅。写作规范符合学术论文的基本要求。用语、格式、图表、数据、量和单位、各种资料引用规范化、符合标准。论文篇幅10000字左右。实评总分 成绩等级 评阅教师评审意见: 评阅教师签名: 说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级,实评总分90100分记为优秀,8089分记为良好,7079分记为中等,6069分记为及格,60分以下记为不及格。湖南科技学院本科毕业论文(设计)答辩记录表论文题目BootLoader 设计开发作者姓名陈俊强所属系、专业、年级电子工程系 电子信息工程专业 2009年级指导教师姓名、职称谭永宏、副教授答 辩 会 纪 要时间2013年05月18日地点3教610答辩小组成员姓 名职务(职称)姓 名职务(职称)姓 名职务(职称)李春树教授谭永宏副教授李艳芳副教授杨熙讲师李小武副教授廖朝阳讲师答辩中提出的主要问题及回答的简要情况记录:问题一、研究计划?答:首先收集相关资料、查阅相关资料确定设计方案,并完成开题报告,然后进行整体方案的设计、软件编写,进行硬件调试及系统测试。最后根据查询所得的资料及所编写的程序撰写论文,并在导师的指导下修改论文。问题二、为什么将BootLoader分成两级?答:BootLoader程序运行在内存中,一般的内存(DDR)需要初始化后才能使用,而每个公司的DDR初始设置都是不同的,所以一般把BootLoader先load到SRAM中运行,而SRAM相对比较昂贵,所以分级初始化是比较好的解决方案。问题三、所设计的BootLoader有什么优势?答:本项目设计的BootLoader与其他公司设计的BootLoader相比,具有软件架构优势。具体体现为分层设计,即底层硬件层(HAL)、抽象层、APP层。增加了对文件系统的支持,实现了TCP/IP协议层。会议主持人:记 录 人:年 月 日答辩小组意见评语:评定等级: 负责人(签名): 年 月 日系学位委员会意见评语:论文(设计)最终评定等级:负责人(签名): 系部(公章) 年月 日校学位委员会意见评语:评定等级: 负责人(签名): 年月 日M BootLoader 设计开发 目 录1 绪论12 BootLoader 的概念22.1 BootLoader的基本概念22.2 BootLoader的操作模式22.3 BootLoader的概念扩展32.4 ARM BootLoader的共性33 BootLoader 的设计与实现53.1 BootLoader的总体设计53.1.1 代码组织结构53.1.2 阶段设计63.1.3 地址规划设计73.1.4 模式设计73.2 BootLoader的具体实现73.2.1 BL1的代码实现73.2.2 BL2的代码实现133.2.3 代码的编译243.2.4 目标文件的链接与转换263.3 使用操作274 实验结果与测评294.1课题研究的平台环境294.1.1 硬件平台294.1.2 板级特性304.1.3 硬件接口图314.2 软件环境以及软件开发工具314.2.1 操作系统314.2.2 编程语言314.2.3 编译环境314.3 实验结果324.3.1 基本功能的实现结果324.3.2 扩展功能的实现结果334.3.3 程序性能335 总结与展望34参考文献35致 谢36BootLoader设计开发摘 要随着越来越多的嵌入式设备研发中采用操作系统支持,必须根据目标板设计引导程序(BootLoader)。本课题研究了嵌入式操作系统的启动过程,实现了BootLoader的两个基本功能:目标板硬件的初始化和内核的加载启动。同时本课题还对BootLoader的功能进行了扩展:串口的通信,下载模式的支持,FLASH的擦写。最后成功地将BootLoader移植到Devkit8000开发板,系统启动正常、运行稳定,达到了设计要求。【关键词】:Devkit8000 BootLoader :g-bios Linux kernelFilesystemAbstractAs more and more embedded devices using operating system, must according to the target board to design BootLoader. This topic research the embedded operating system boot process, BootLoader has two basic functions: target board hardware initialization and load the kernel, this topic also extends the function of the BootLoader: serial port communication, download mode support, flash wipe. Finally succeeded in transplanting the BootLoader to Devkit8000 development board, the system booted up correctly, as expected.【Key words】:Devkit8000 BootLoader :g-bios Linux kernel Filesystem.IIIBootLoader 设计开发1 绪论随着人民生活水平提高带来巨大的消费需求、信息化进程的推进、电信运营业的发展,信息产业市场空间将得到进一步拓展1。在这良好的经济环境下,嵌入式系统领域得到进一步的拓宽与发展。嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁来适应系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各行业的具体应用相结合后的产物,它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统广泛地应用在信息终端、工业控制和信息家电等领域。在嵌入式系统的开发中,嵌入式软件是实现各种系统功能的关键,也是计算机技术最活跃的研究方向之一2。不同应用对嵌入式软件系统有不同的要求,并且随着计算机技术的发展,这些要求也在不断变化。通常,应用系统对嵌入式软件的基本要求是体积小、执行速度快、具有较好的可剪裁性和可移植性。特别地,现在对嵌入式软件来说,都需要操作系统的支持。简单的嵌入式系统根本没有操作系统,而只是一个控制循环。但是,当系统变得越来越复杂时,就需要一个嵌入式操作系统来支持,否则应用软件就会变得过于复杂,使开发难度过大,安全性和可靠性都难以保证。嵌入式软件,特别是操作系统的支持,使得对硬件的要求越来越高。针对嵌入式系统的各种微处理器遍布各个角落3。特别是采用ARM技术IP核的各种微处理器遍及各类产品市场。ARM技术以其较高的性能和功效,使得在嵌入式系统中得到广泛应用。世界上几乎所有的主要半导体厂商都生产基于ARM体系结构的通用芯片,如TI,Motorola,Intel,NS,Ateml,Philips,SAMSUNG等。目前,ARM芯片广泛应用于无线产品、PDA、GPS、网络、消费电子产品、STB及智能卡。应该说,ARM无处不在。随着嵌入式产品中高端微处理器ARM的加入以及软件上操作系统的支持,使得整个嵌入式系统拥有了完整的构架4。现在,专门为嵌入式产品开发的各个操作系统层出不穷,WINDOW CE,POCKET PC,Linux等等,各界关注地也特别多。然而,如何进行加载操作系统这个问题却很少有人提出。这就产生了另一个相关主题bootloader。Bootloader本身的功能就是引导与加载内核镜像。如何实现bootloader的基本功能,如何针对基于ARM体系的微处理器来实现bootloader,就成为本课题的一个基本论题。除了基本功能,bootloader还能有什么更加具体的扩展功能来方便各个系统开发者,都属于本课题讨论的范畴。对于传统PC机来说,开机以后的处理器初始化和硬件初始化操作都是由BIOS ( Basic Input /Output System) 完成的,但对于嵌入式系统来说,从性价比的角度考虑一般不用BIOS启动方式,因此必须自己编写这些程序,这就是所需要的开机程序5。而在嵌入式系统中,并没有像BIOS那样的Fireware,启动时用于完成初始化操作的这段代码被称为BootLoader程序,因此整个系统的load过程完全由BootLoader 来完成。简单地说,通过这段程序,可以初始化CPU、BUS、DDR、基本的外围硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用Kernel、运行用户应用程序准备好基本的运行环境。BootLoader 依赖于实际的硬件架构和应用环境,因此要为嵌入式系统建立一个通用、标准的BootLoader 是非常困难的6。BootLoader 也依赖于具体的嵌入式板级设备的配置,也就是说,对于两块不同的嵌入式主板而言,即使它们是基于同一 CPU 而构建 ,要想让运行在一块板子上的BootLoader 程序也能运行在另一块板子上,通常都需要修改某些BootLoader源代码。本论文在详细介绍了基于TI OMAP3 (Cortex-a8) 处理器的嵌入式系统在上电启动后到应用程序或操作系统运行前,对处理器及其内部功能模块进行初始化的过程 ,结合Devkit8000开发板设计了且经过实际验证的BootLoader代码,并详细分析了此BootLoader 的运行过程。2 BootLoader的概念2.1 BootLoader的基本概念在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好合适的环境7。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:1、引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。2、Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。3、文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。4、用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。引导加载程序是系统加电后运行的第一段软件代码。PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成8。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。2.2 BootLoader的操作模式大多数BootLoader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别对于开发人员才有意义。但从最终用户的角度看,BootLoader的作用永远就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载模式:这种模式也称为“自主”模式,即BootLoader从目标机上的某个固体存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入。这种模式是BootLoader的正常工作模式,因此当以嵌入式产品发布的时候,BootLoader必须工作在这种模式下。下载模式:在这种模式下,目标机上的BootLoader将通过串口或者网络连接或者其它通信手段从主机下载文件,比如:下载内核镜像和根文件系统镜像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的中断用户提供一个简单的命令行接口。2.3 BootLoader的扩展功能BootLoader最基本的功能是引导加载内核,但是现在的BootLoader还扩展了很多功能,用于支持不同板级设备,调试板子性能。扩展功能如下:1. 自动检测有待烧录的 image 文件类型,并智能自动烧录。2. 支持多种文件系统,包括YAFFS2、JFFS2、CRAMFS、UBI、NFS等。 3. 命令行自动补全(Tab)键及历史记录(上、下键)支持。 4. Flash(MTD)分区支持,帮助 Linux、Android 内核识别分区。 5. 自动设置 Linux 内核启动参数(Linux kernel command line)。 6. 常用命令具有记忆功能。如boot 命令,它能记住用户输入的参数,以后只需简单输入boot即可。 7. 支持完整的中断机制。开发者可简单地通过一个编译选项选择 IRQ 或 Polling 两种模式的中的任意一种。 8. 优秀的网络子系统,并提供符合POSIX规范的Socket API,方便二次开发。 9. 支持多种常用外设,包括:WDT、UART、NAND、NOR、SD/MMC、USB、LCD、Touchscreen、Wi-Fi、Bluetooth等。 10. 集成硬件调试/测试程序,大大提高了bring-up的工作效率。 11. 完美支持 Google Android 操作系统,简化 Android 的系统移植过程。 12. 支持图形化configure程序,简化bootloader的移植和开发过程。2.4 ARM BootLoader的共性从bootloader的基本概念可以看出,bootloader的设计与实现是与具体的CPU以及具体的硬件系统紧密相关的。要实现一个通用的ARM bootloader,即要适合所有的ARM处理器以及硬件系统,是不太可能的事情。另外,不同的操作系统,可能对具体的bootloader还会有额外附加要求。但是,还是可以根据ARM的体系结构,从理论上总结出一些ARM系统bootloader实现的共性,而这仅仅局限于理论上。对于ARM bootloader的一些共同特性,理论上只局限于bootloader的基本功能,因为扩展功能众多,可以有串口、USB、以太网接口、IDE、CF等,无法进行归纳与总结。对于一个ARM系统来说,本质上,bootloader作为引导与加载内核镜像的“工具”,在实现上,必须提供以下几个功能,更确切地说,必须做到以下几点:1.初始化DDR(必须):bootloader必须能够初始化DDR,因为将来系统要通过它来运行BootLoader的第二阶段代码stage2。2.初始化串口(可选):BootLoader在启动初期首先要初始化至少一个串口,用于与PC端通信。3.启动内核镜像:根据内核镜像保存的存储介质不同,可以有多种启动方式:Flash启动、SD卡、USB启动、NFS启动。无论哪种启动方式,系统状态必须满足一下条件:(a)CPU模式:关闭中断,设置SVC模式。(b)关闭Cache和MMU(c)CPU寄存器的设置:R0=0;R1=board型号R2=启动参数Atag的物理内存地址3 BootLoader的设计与实现3.1 BootLoader总体设计3.1.1 代码组织结构此次开发的BootLoader项目命名为g-bios,源码架构如图1。图1 BootLoader源码架构在实际使用中,Bootloader被固化在CPU的上电/复位启动地址处(通常在非易失存储器中)。每当嵌入式设备上电/复位时,CPU总是从启动地址(BootLoader)处启动。BootLoader启动后,首先初始化各种硬件设备,如CPU,缓存,存储器,MMU,总线控制器,各种I/O接口等,然后从远程主机或者本地非易失存储设备中装载可执行文件或操作系统,为整个嵌入式系统准备运行环境。要使用U-boot,最初必须使用某种硬件支持的方式将BootLoader映像写入非易失存储器中。比如这里板子上没有任何的BootLoader,可以使用JTAG接口将BootLoader映像写入Flash的开始处。BootLoader采用了一种高度模块化的编程方式,不同功能类别的代码分别放在不同的目录中,几个BootLoader常用到的目录分析主要有:1)arch这个目录中存放了所有BootLoader支持的目标板的子目录。在这个目录中一般是针对特定目标板的初始化和操作代码。2)app这个目录中存放独立于处理器体系架构的通用代码,包括BootLoader的一些公共命令的实现。3) driver这个目录中存放的是各种外设接口的驱动程序。4) fs这个目录中存放了U-boot支持的文件系统。5) include这个目录是存放各种CPU及目标板的头文件和配置文件的公共目录。6)lib这个目录存放体系架构的处理器的相关支持。7)mm这个目录用于存放与内存管理相关的文件。8) build目录存放板级默认配置文件,以及支持动态生成.config的python脚本。g-bios借鉴了Linux内核源码的组织形式,即把源码分成层次关系。组织框架图如图2。图2 g-bios architecture3.1.2 阶段设计由于 BootLoader 的实现依赖于 CPU 的体系结构,因此大多数 BootLo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论