- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于arm9嵌入式bootloader设计跟实现新
基于ARM9嵌入式系统的BootLoader设计与实现
徐学均
信息产业部电子第六研究所,北京 (100083)
E-mail:xuxuejun0524@126.com
摘要:介绍了基于ARM9嵌入式系统在上电启动后操作系统运行之前BootLoader的启动过程,
并设计出了具有良好模块性和可移植性的启动程序,试验结果表明该设计有良好的稳定性和
高效性,对分析和开发其它的BootLoader程序具有一定的启发作用。
关键词:BootLoader S3C2410 嵌入式系统
中图分类号:TP314
1.引言
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减以适应系统对功能、
可靠性、成本、体积、功耗要求严格的专用计算机系统。嵌入式系统从软件的角度通常可分
为4个层次:引导加载程序、Linux 内核、文件系统、用户应用程序。引导加载程序是系统
加电后的第一段代码,对PC机而言,开机后的处理器配置、存储器、硬盘等硬件设备的初
始化操作由BIOS来完成的,但对于嵌入式操作系统来说,通常没有像BIOS那样的固件程序,
这样就需要我们自己编写完成系统初始化操作的被称为BootLoader程序的这段代码,因此
整个系统的加载启动任务完全由BootLoader来完成。简单地说,BootLoader就是在操作系
统内核运行前执行的一段小程序。通过这段小程序,可以初始化必要的硬件设备,创建内核
需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境设定在一
个合适的状态,以便为最终调用操作系统内核、运行用户设计的应用程序准备好正确的运行
[1]
环境 。
BootLoader是依赖于硬件实现的,不同的体系结构、不同的嵌入式板级设备配置需
要的BootLoader都是不同的。也就是说,对于两块不同的嵌入式板级设备而言,即使它们
基于相同的微处理器构建,运行在其中一块嵌入式板级设备上的BootLoader,未必能够运
行在另一块嵌入式板级设备上。因此要为嵌入式系统建立一个通用、标准的BootLoader是
非常困难的。在多数情况下,我们有必要根据嵌入式板级设备和微处理器的需求自行设计
BootLoader。
2 .BootLoader启动过程设计
三星的S3C2410处理器是一款基于ARM920T 内核的处理器,是三星公司专为手持设备和
一般类型的应用提供的一款低价格、高性能、低功耗的微处理器。本系统采用S3C2410微处
理器搭建,外加一片64M*8位数据宽度的NANDFlash和两片16M*16位数据宽度的SDRAM,
其地址范围为00S3C2410将系统的存储空间分为8组 (Bank),每组
1
大小为128MB。其中Bank0-Bank5主要用于ROM或SROM,Bank6-Bank7主要用于ROM、SROM
[2]
或SDRAM 。
当嵌入式系统加电复位后,以微处理器为核心的嵌入式系统通常都有某种类型的固态存
储设备 (如EEPROM、Flash等)被映射到预先设置好的地址上,因此处理器将首先执行存放
在复位地址处的程序。复位地址可以通过ADS集成开发环境进行设置,以把BootLaoder定
位在复位地址开始的存储空间内,同时通过Linker选项定义ROBase地址为0
作为BootLoader 的入口地址—_ENTRY地址。对于嵌入式系统来说,不管是否使用操作系统,
在系统启动时都必须执行BootLoader,以便为系统及应用程序的运行准备好软硬件运行环
境。
基于S3C2410的嵌入式系统的启动方式通常有两种方式:一种方式是从NORFlash启动,
由于NORFlash可以支持随机访问,所以代码可以直接在Flash上执行,系统启动时,系统
会把Flash 的首地址映射到0置,并且启动程序本身要把自己从Flash 中移动
到RAM 中去;另一种方式是从NANDFlash启动,由于NA
文档评论(0)