基于ARM嵌入式开发BootLoader设计与实现.docVIP

基于ARM嵌入式开发BootLoader设计与实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM嵌入式开发BootLoader设计与实现

基于ARM嵌入式开发BootLoader设计与实现   摘要:该文简要介绍了嵌入式开发中引导程序的重要性。以及嵌入式开发过程中BootLoader的实现原理,并结合基于ARM体系架构S3C2410芯片中BootLoader的具体开发过程与实例对系统引导程序作出深入剖析,测试结果表明该设计具有良好的稳定性和高效性。   关键词:嵌入式开发;bootlooder;引导加载程序   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)04-0762-03   随着移动互联网的发展,嵌入式设备已经普及到社会的每个角落。嵌入式处理器种类繁多,有ARM、MIPS/PPC等多种架构。其中32位ARM嵌入式处理器具有高性能、低功耗以及价格低廉的特征,已被广泛用于消费电子品和无线网络通信设备上。目前用于嵌入式开发的操作系统多种多样,如嵌入式Linux、VxWorks、windowsCE等。其中,Linux是遵循GPL协议的开发源码的操作系统,内核可以任意剪裁以及支持硬件种类繁多。   要把嵌入式LINUX操作系统移植到嵌入式设备的裸板上,我们必须开发出类似个人pc上的BIOS来把linux操作系统读到内存中运行。这个类似于BIOS的启动程序就叫Bootloader,其目的是用于初始化硬件并且进一步加载、引导嵌入式操作系统体系运行。Bootloader功能是初始化硬件设备,完成处理器以及各种设备的初始化工作;屏蔽底层硬件差异,使得上层应用软件编写和移植更加方便;调用操作系统内核,起到引导和加载内核的作用;向内核传递必要的与硬件相关的信息。当内核启动后,Bootloader的使命也就完成,自此嵌入式设备便进入操作系统和应用程序运行阶段。   1 系统硬件结构   本系统采用基于ARM架构的S3C2410开发板为实例,具体讨论Bootloader的设计。   S3C2410芯片是ARM公司的32位ARM920T处理器核。S3C2410处理器有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,64MB的NAND控制器,3路UART,4路DMA,I/O口,RTC,触摸屏接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410芯片可运行在200MHz以上。   2 Bootloader设计与实现   通常Bootloader的加载有两种方式:第一是通过NOR FLASH启动,其特点是速度快。CPU可以像访问内存一样直接访问NOR FLASH,但是NOR FLASH价格昂贵。第二是通过NAND FLASH启动,其特点是可读可写,NAND FLASH速度虽然慢,但是价格便宜。   一般来说Bootloader的设计编程分两个部分:第一部分通常用汇编实现,主要完成依赖于CPU体系结构的初始化,复制启动代码到SDRAM后,调用第二部分代码;第二部分通常使用C语言来实现,这样可以实现更复杂的功能,比如提供FTP文件传输等功能,最后启动内核。   2.1 Bootloader的设计过程   Bootloader具体流程见图2。   2.2 Bootloader的第一阶段   Bootloader第一阶段的功能:   相关硬件初始化;   把启动代码拷贝到内存中;   设置栈指针;   设置程序计数器PC到第二阶段代码的C入口中。   Bootloader第一阶段实现方法:   首先,通常在执行程序以前,首先为系统设置异常向量表。ARM结构的CPU从内存为0X0000000的地址开始执行,系统定义的异常,一上电程序跳转到reset异常处执行相应的汇编指令,下面定义出的都是不同的异常,比如软件发生软中断时,CPU就会去执行软中断的指令,这些异常中断在CUP中地址是从0开始,每个异常占4个字节。   然后,由于ARM体系CPU具有7种工作模式,上电以后开发板首先应该工作于管理模式。   随着Bootloader的功能不断的完善,其代码量也越来越大,所以以S3C2410为代表的裸板只有4K大小的片内内存,无法运行大于4K的Bootloader。因此,我们需要初始化SDRAM,并且重新定位Bootloader。然后设置好栈sp寄存器,为第二阶段的C函数调用做好准备。   2.3 Bootloader第二阶段   Bootloader第二阶段的功能   相关硬件设备初始化   检测系统内存映射   将内核映象和根系统映象从NANDFLASH读到内存中   设置内核启动参数   调用内核   首先,在第二阶段中首先完成一些硬件设备的初始化,如初始化串口和设置系统时钟等   然后,检测系统内存映射和一系列的设置   第二

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档