Uboot引导加载程序Bootloader源代码分析与移植

上传人:cl****1 文档编号:492296974 上传时间:2023-08-27 格式:DOC 页数:44 大小:335KB
返回 下载 相关 举报
Uboot引导加载程序Bootloader源代码分析与移植_第1页
第1页 / 共44页
Uboot引导加载程序Bootloader源代码分析与移植_第2页
第2页 / 共44页
Uboot引导加载程序Bootloader源代码分析与移植_第3页
第3页 / 共44页
Uboot引导加载程序Bootloader源代码分析与移植_第4页
第4页 / 共44页
Uboot引导加载程序Bootloader源代码分析与移植_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《Uboot引导加载程序Bootloader源代码分析与移植》由会员分享,可在线阅读,更多相关《Uboot引导加载程序Bootloader源代码分析与移植(44页珍藏版)》请在金锄头文库上搜索。

1、U-boot 引导加载程序 (Bootloader )源代码分析与移植#目录第一章 绪论 31.1 U-boot 简介 31.2 U-boot 源码树 41.3 U-boot 支持的主要功能 5第二章 U-boot 源代码详细分析 62.1 U-boot 的启动流程 62.1.1 第一阶段( Stage 1) 62.1.2 第二阶段( Stage 2) 92.2U-boot 的初始化 132.2.1 私有数据 global_data 132.2.2 初始化序列init_sequence 142.2.3 NAND Flash初始化 202.2.4 DataFlash初始化 222.2.5 环境变

2、量重定位 232.2.6 初始化设备 252.2.7 控制台初始化 272.2.8 单板后期初始化 302.3 命令处理 332.3.1 命令数据结构 332.3.2 命令查找 352.3.3 主循环 352.4 Linux的引导 422.4.1 映象格式 422.4.2 linux 引导 422.4.3linux 的内核参数传递 52第三章 U-boot在 S3C2410上的移植分析 583. 1 对 ARM-920T 内核的支持 583. 2 配置自己的开发板 583. 3 实现网卡的驱动程序 603.4 从 NAND Flash 启动 613.4.1 修改 cpu/arm920t/sta

3、rt.s 添加 NAND Flash 启动跳转代码 613.4.2 添加从 NAND Flash 启动代码 633.4.3 添加上述代码中引用的宏定义 653. 5 修改 Makefile文件 653.6 搭建编译环境 663. 7 生成目标文件并进行测试 673. 8 测试 69第一章 绪论1.1 U-boot 简介U-Boot ,全称 Uni versal Boot Loader,是遵循 GPL 条款的开放源码项目。从 FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少 U-Boot源码就是相应的 Linux 内核源程序的

4、简化,尤其是一些设备的驱动程序,这从 U-Boot 源码的注释中能体现 这一点。但是 U-Boot 不仅仅支持嵌入式 Linux 系统的引导,当前,它还支持 NetBSD, VxWorks, QNX,RTEMS, ARTOS, LynxOS 嵌入式操作系统。其目前要支持的目标操作系统是 OpenBSD, NetBSD, Fre eBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则

5、是U-Boot除了支持 PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是 U-Boot 项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot 对 PowerPC 系列处理器支持最为丰富,对 Linux 的支持最完善。其它系列的处理器和操作系统基本 是在2002年11月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大 程度上归功于U-Boot的维护人德国DENX软件工程中心 Wolfgang Denk以下简称W.D本人精湛专业 水平和持着不懈的

6、努力。当前, U-Boot 项目正在他的领军之下,众多有志于开放源码 BOOT LOADER 移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。U-Boot 的优点: 开放源码; 支持多种嵌入式操作系统内核,女口 Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS ; 支持多个处理器系列,如 PowerPC、 ARM、 x86、 MIPS、 XScale; 较高的可靠性和稳定性; 高度灵活的功能设置,适合 U-Boot 调试、操作系统不同引导要求、产品发布等; 丰富的设备

7、驱动源码,如串口、以太网、 SDRAM、 FLASH、 LCD、 NVRAM、 EEPROM、 RTC、 键盘等; 较为丰富的开发调试文档与强大的网络技术支持;1.2 U-boot 源码树从根目录树中可以看出, U-boot 源代码主要包含以下几个部分? board 目标板相关文件,主要包含 SDRAM、 FLASH 驱动;? common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;? cpu 与处理器相关的文件。 如 mpc8xx 子目录下含串口、 网口、 LCD 驱动及中断初始化等文件;? driver 通用设备驱动,如 CFI FLASH 驱动 ( 目前对 INTEL F

8、LASH 支持较好 )? doc U-Boot 的说明文档;? examples 可在 U-Boot 下运行的示例程序;如 hello_world.c,timer.c ;? include U-Boot 头文件;尤其 configs 子目录下与目标板相关的配置头文件是移植过程中经常要 修改的文件;? lib_xxx 处理器体系相关的文件, 如 lib_ppc, lib_arm 目录分别包含与 PowerPC 、ARM 体系结构 相关的文件;? net 与网络功能相关的文件目录,如 bootp,nfs,tftp ;? post 上电自检文件目录。尚有待于进一步完善;? rtc RTC 驱动程序;

9、? tools 用于创建 U-Boot S-RECORD 和 BIN 镜像文件的工具;U-boot 的这些目录结构可以大致的划分成如下层次:postfsdiskdttrnand aplrtcdriversI lh_g&nerlcconuaorLboard1ib_ixxcpu1.3 U-boot支持的主要功能U-Boot可支持的主要功能列表? 系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统? 支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;? 基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,统在不同开发阶段的调试要求与产品发布,尤Li

10、nux支持最为强劲;? 支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;? CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;?设备驱动 串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCI、RTC等驱动支持;? 上电自检功能 SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;适合系PCMCIA、? 特殊功能XIP内核引导;第二章 U-boot 源代码详细分析2.1 U-boot 的启动流程U-boot 的启动流程包括两个阶段,第一阶段进行一些基本的初始化动作,为启动第二阶段的主体 做准备,

11、此阶段代码由汇编代码写成。第二阶段是进行系统的初始化工作, 并准备引导操作系统。 下面 我们对这两个阶段进行详细的分析。2.1.1 第一阶段( Stage 1)第一阶段的启动代码在 cpustart.s 中,完成的工作主要有:CPU自身初始化:包括 MMU , Cache,时钟系统,SDRAM 控制器等的初始化 重定位:把自己从非易失性存储器搬移到 RAM 中 分配堆栈空间,设置堆栈指针清零 BSS 数据段 跳转到第二阶段入口函数 start_armboot()AT91SAM9260EK 的启动代码在 cpuarm926ejsstart.s 中,精简后的代码如下: cpuarm926ejsst

12、art.s; ARM 的向量表.globl _start_start: b reset 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_undefined_instruction:.word undefined_instruction _software_interrupt: .word software_interrupt _prefetch_abo

13、rt: .word prefetch_abort _data_abort: .word data_abort _not_used:.word not_used_irq:.word irq_fiq:.word fiq;全局符号定义_TEXT_BASE:.word TEXT_BASE.globl _armboot_start_armboot_start:.word _start/* These are defined in the board-specific linker script.*/.globl _bss_start_bss_start:.word _bss_start.globl _b

14、ss_end_bss_end:.word _end#ifdef CONFIG_USE_IRQ/* IRQ stack memory (calculated at run-time) */.globl IRQ_STACK_STARTIRQ_STACK_START:.word 0x0badc0de/* IRQ stack memory (calculated at run-time) */.globl FIQ_STACK_STARTFIQ_STACK_START:.word 0x0badc0de#endif;复位入口reset:; CPU 设为 SVC32 模式mrs r0,cpsrbic r0,

15、r0,#0x1forr r0,r0,#0xd3msr cpsr,r0; 如果需要,调用 cpu_init_crit 进行 CPU 关键初始化;在 AT91SAM9260EK 板上没有使用。这部分工作在 Bootstrap 中完成。#ifndef CONFIG_SKIP_LOWLEVEL_INITbl cpu_init_crit#endif;如果需要,对 U-boot 进行重定位(从 Flash 搬移到 SDRAM 中);在 AT91SAM9260EK 板上没有使用。 U-boot 在运行之前已经被 Bootstrap 加载到了 SDRAM 中。#ifndef CONFIG_SKIP_RELOCATE_UBOOT relocate: /*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号