基于at91sam9260的嵌入式系统的Bootloader启动流程分析.pdf
《基于at91sam9260的嵌入式系统的Bootloader启动流程分析.pdf》由会员分享,可在线阅读,更多相关《基于at91sam9260的嵌入式系统的Bootloader启动流程分析.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/-1-基于基于at91sam9260的嵌入式系统的的嵌入式系统的Bootloader启动流程分析启动流程分析 程前,陈永泰 武汉理工大学信息工程学院,武汉(430070)E-mail: 摘摘 要要:Bootloader 是上电后,应用程序或操作系统运行前对处理器及内部功能模块的初始化,以及引导内核过程的一段启动代码。本文根据 at91sam9260 的引导策略,采用了 at91bootsrap加 u-boot 组成了本系统的 Bootloader。文中结合代码分析了基于 at91sam9260 的嵌入式系统的 Bootloader 启动流程中的各个阶段及最终引导操作系统内核的过程.
2、对进一步的系统功能设计有很大的帮助。关键字关键字:at91sam9260;嵌入式;Bootloader 1.引言引言 对于 PC 机,其开机后的初始化处理器配置、硬件初始化等操作是由 BIOS(Basic Input/Output System 完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置 BIOS,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。而在嵌入式系统中2,通常并没有像 BIOS 那样的固件程序,启动时用于完成初始化操作的这段代码被称为 Bootloader 程序1,因此整个系统的加载启动任务就完全由 Bootloader 来完成。简单地说,通过
3、这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。Booloader 依赖于实际的硬件和应用环境,因此要为嵌入式系统建立一个通用、标准的 Bootloader 是非常困难的。Bootloader 也依赖于具体的嵌入式板级设备的配置,这也就是说,对于两块不同的嵌入式主板而言,即使它们是基于同一 CPU 而构建,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上通常都需要修改Bootloader的源程序。嵌入式linux系统中常用的Bootloader有armboot、r
4、edboot、blob、u-boot等,其中U-Boot是当前比较流行,功能比较强大,是目前用来开发嵌入式系统引导代码使用最为广泛的Bootloader,可以支持多种体系结构,但相对也比较复杂。本系统采用了U-Boot作为系统的启动程序。2.U-Boot简介简介 U-Boot,全称 Universal Boot Loader,是遵循 GPL 条款的开放源码项目。从 FADSROM、8xxROM、PPCBOOT 逐步发展演化而来。其源码目录、编译形式与 Linux 内核很相似,事实上,不少 U-Boot 源码就是相应的 Linux 内核源程序的简化,尤其是一些设备的驱动程序,这从 U-Boot
5、源码的注释中能体现这一点。U-Boot 支持很多嵌入式操作系统的引导,且支持多种嵌入式处理器。2.1 U-Boot源代码目录结构源代码目录结构 U-Boot 为目录结构,多个子目录分别存放和管理不同的源程序,按其规则可分为 3 类:1.与处理器体系结构或开发板硬件直接相关 2.通用函数或驱动程序 http:/-2-3.U-Boot 应用程序,工具和文档 2.2 U-Boot 的编译的编译 U-Boot的源码是通过GCC和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。3.at
6、91sam9260的引导策略的引导策略 本系统以at91sam9260芯片为核心,它有两种引导方式,片内引导和片外引导。当系统上电后,会自动检测引脚BMS的电平来决定系统的引导方式。如果BMS为高电平,系统从片内rom启动,内部ROM上电后被映射到了0 x0和0 x100000处,在这两个地址处都可以访问到ROM。图1 Sam9260内部存储映射 片内rom里固化一个romboot程序,它完成以下功能:1.FIQ初始化 2.ARM SCV32模式下的堆栈设置 3.外部时钟检测 4.C变量的初始化 5.如没有外部时钟检测,则进行主时钟频率检测 6.PLL设置 7.初始化DEBUG口(115200
7、,8,n,1)8.禁止看门狗 完成以上步骤后,AT91sam9260按照dataflash、nandflash的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映
8、设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。上电后,我们一般把http:/-3-存储在flash中的bootstrap映像搬移到sram中,bootstrap完成一些静态初始化工作,如PMCS,PIOs,再把u-boot从flash中搬移到sdram中运行。如果BOOT程序在以上所列的几种存储设备中未找到合法的映像,则自动初始化DEBUG,USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数(115200,8,N,1)以及运行XMODEM协议。对USB DEVICE进行初
9、始化以及运行DFU协议。Atmel公司提供了samba-2.6下载工具。图2 At91sam9260的启动规则 而BMS为低电平的时候,则at91sam9260会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,并且要求已经在此地址烧些了启动映象了,由于片外FLASH可以设计的大,所以这里编写的Bootloader可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了。通常选择在flash的首地址处放的是boot.bin,由其将u-boot.bin.gz解压到高端RAM中,再运行真正的u-boot.bin,也就是实际的启动映象。本系统选择的是片内启动的方式。且准确的说本
10、系统由U-Boot加上at91bootstrap组成了系统的bootloader。4.U-Boot启动流程分析启动流程分析 U-boot的运行流程符合前面提出的典型BootLoader结构框架,也可分为stage1和stage2两个部分,依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1,且用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。http:/-4-4.1 阶段一介绍阶段一介绍 U-boot的stage1代码通常放在Start.S中,它用汇编语言写成,是U-Boot的入口程序3,主要代码如下:1.定义入口 一个
11、可执行的Image必须有一个入口点.并且只有一个全局入口,通常这个入口放在ROM(Flash)的0 x0地址,因此,必须通知编译器以使其知道这个入口,该工作可以通过修改连接器脚本来完成。1.Board/at91sam9260/u-boot.Lds:ENTRY(_start)=cpu/arm926ejs/start.S:.globl _start 2.U-boot代码区(TEXT_BASE=0 x23f00000)定义在Board/at91sam9260/config.mk 2.设置异常向量表 异常向量表的开始地址是由ARM架构决定的,必须位于0 x0处。_start:/地址0 x0 b res
12、et /复位向量 ldr pc,_undefined_instruction ldr pc,_software_interrupt ldr pc,_prefetch_abort ldr pc,_data_abort ldr pc,_not_used ldr pc,_irq /中断向量 ldr pc,_fiq /中断向量 reset:/*复位启动子程序,设置cpu为superviser模式*/mrs r0,cpsr /*读cpsr寄存器状态*/bic r0,r0,#0 x1f /*位清除模式位*/orr r0,r0,#0 xd3 /*设置M=10011,svc32模式*/msr cpsr,r0
13、/*写回cpsr寄存器*/3.设置CP15 设置cp15,失效指令(I)cache和数据(D)cache后,禁止MMU和cache cpu_init_crit:/*清空指令/数据caches*/mov r0,#0 mcr p15,0,r0,c7,c7,0 /*失效I/Dcache*/mcr p15,0,r0,c8,c7,0 /*失效TLB*/*flush cache 使所有IDC无效,这样cpu直接到原存储地址读数据和指令,而不是从cache中得到。初始化之前,这样可以保证初始化过程正确连续*/4.配置内存区控制寄存器 mov ip,lr bl lowlevel_init mov lr,ip
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 at91sam9260 嵌入式 系统 Bootloader 启动 流程 分析
限制150内