




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统的Boot Loader技术陈文智浙江大学计算机学院2005年5月1内容提要要1.Boot Loader程序序的基本本概念2.Boot Loader的典典型结构构框架3.Boot Loader实验验实验一Boot Loader应用实验验实验二U-BOOT的分析析和移植植21.Boot Loader程序序的基本本概念Boot Loader就是是在操作作系统内内核运行行之前运运行的一一段小程程序初始化硬硬件设备备和建立立内存空空间的映映射图将系统的的软硬件件环境带带到一个个合适的的状态,以便为为最终调调用操作作系统内内核准备备好正确确的环境境系统的Boot Loader程序序通常安安排在
2、地地址0 x00000000处处3Boot Loader所支支持的硬硬件环境境每种不同同的CPU体系系结构都都有不同同的BootLoaderBoot Loader的安安装地址址Boot Loader相关关的设备备和机制制主机和目目标机之之间一般般通过串串口建立立连接Boot Loader的启启动过程程4Boot Loader的操操作模式式启动加载载模式下载模式式Boot Loader与主主机之间间的通信信设备及及协议52.Boot Loader的典典型结构构框架操作系统统的角度度看,Boot Loader的总总目标就就是正确确地调用用内核来来执行大多数Boot Loader都分分为阶段段1和阶
3、阶段2两两大部分分阶段1实实现依赖赖于CPU体系系结构的的代码阶段2实实现一些些复杂的的功能62.1BootLoader阶阶段1介介绍Boot Loader的的阶段1通常包包括以下下步骤:1)硬件件设备初初始化。屏蔽所有有的中断断设置CPU的速速度和时时钟频率率RAM初初始化初始化LED关闭CPU内部部指令数据Cache72)为加加载阶段段2准备备RAM空间除了阶段段2可执执行映象象的大小小外,还还必须把把堆栈空空间也考考虑进来来必须确保保所安排排的地址址范围的的的确确确是可读读写的RAM空空间83)拷贝贝阶段2到RAM中4)设置置堆栈指指针sp5)跳转转到阶段段2的C入口点点Boot Loa
4、der的的 阶段段2可可执行映映象刚被被拷贝到到 RAM空空间时的的系统内内存布局局,如下下图:9102.2BootLoader阶阶段2介介绍1)初始始化本阶阶段要使使用到的的硬件设设备初始化至至少一个个串口,以便和和终端用用户进行行I/O输出信信息初始化计计时器等等112)检测测系统的的内存映映射内存映射射的描述述可以用如如下数据据结构来来描述RAM地地址空间间中的一一段连续续的地址址范围: 内存映射射的检测测typedef struct memory_area_struct u32 start; /* 内存空间的基址 */u32 size; /* 内存空间的大小 */int used; m
5、emory_area_t;123)加载载内核映映像和根根文件系系统映像像规划内存存占用的的布局内核映像像所占用用的内存存范围根文件系系统所占占用的内内存范围围从Flash上上拷贝134)设置置内核的的启动参参数标记列表表(taggedlist)的形形式来传传递启动动参数,启动参参数标记记列表以以标记ATAG_CORE开开始,以以标记ATAG_NONE结结束嵌入式Linux系统统中,通通常需要要由BootLoader设置的的常见启启动参数数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD14例:设置置ATAG_CORE的代码码如
6、下:params = (struct tag *)BOOT_PARAMS;params-hdr.tag = ATAG_CORE;params-hdr.size = tag_size(tag_core);params-u.core.flags = 0;params-u.core.pagesize = 0;params-u.core.rootdev = 0;params = tag_next(params);BOOT_PARAMS表表示内核核启动参参数在内内存中的的起始基基地址,指针params是是一个structtag类型的的指针。宏tag_next()将将以指向向当前标标记的指指针为参参数,计
7、计算出当当前标记记的下一一个标记记的起始始地址155)调用用内核CPU寄寄存器的的设置:R00;R1机机器类型型ID;关于机机器类型型号,可可以参见见:linux/arch/arm/tools/mach-types。R2启启动参数数标记列列表在RAM中中起始基基地址;CPU模模式:必须禁止止中断(IRQs和FIQs);CPU必必须SVC模式式;Cache和MMU的的设置:MMU必必须关闭闭;指令Cache可以打打开也可可以关闭闭;数据Cache必须关关闭;162.3关关于串串口终端端向串口终终端打印印信息也也是一个个非常重重要而又又有效的的调试手手段如果碰到到串口终终端显示示乱码或或根本没没有
8、显示示的问题题,可能能是因为为:Boot Loader对对串口的的初始化化设置不不正确运行在host 端的的终端仿仿真程序序对串口口的设置置不正确确17Boot Loader启启动内核核后却无无法看到到内核的的启动输输出信息息:确认内核核在编译译时是否否配置了了对串口口终端的的支持,并配置置了正确确的串口口驱动程程序Boot Loader对对串口的的初始化化设置是是否和内内核对串串口的初初始化设设置一致致还要确认认 BootLoader 所用用的内核核基地址址必须和和内核映映像在编编译时所所用的运运行基地地址一致致183.Boot Loader实验验实验一Boot Loader应用实验验实验二
9、U-BOOT的分析析和移植植19实验一Boot Loader应用实验验(1)烧写XsBase255的BootLoader编译生成成XsBase255专用的JTAG程序Jflash-XSBase255编译生成成XSBase的BootLoader x-boot255正确连线线利用JTAG烧写BootLoaderrootXSBase JTAG# ./Jflash-XSBase255 x-boot25520实验一Boot Loader应用实验验(2)熟悉使用用 Bootloader指指令,执行各各个指令令后将其其结果与与下表的的 description进行比比较 UsageHelpDescriptio
10、n对各个指令的简单的说明。ArgumentsNoneExampleX-HYPER255 Help21UsageReload kernel/ramdiskDescription将Flash中纪录的image复制到SDRAM为了复制 kernel image到 SDRAM, Autoboot时自动执行Arguments将Kernel flash的 kernel image复制到 SDRAM 0 xa0008000将Ramdisk flash的 ramdisk复制到 SDRAM 0 xa0800000ExampleX-HYPER255 reload kernel22UsageTftp file lo
11、ader/kernel/root/ramdiskTftp file addrDescription通过Ethernet将 Host的映像文件下载到SDRAM中ArgumentsLoader将接收到的文件储存到loader的SDRAM 0 xa0000000Kernel将接收到的文件储存到kernel的 SDRAM 0 xa0008000Root 将接收到的文件储存到 0 xa0000000Ramdisk 将接收到的文件储存到 0 xA0800000。Addr SDRAM上纪录接收到的文件的地址ExampleX-HYPER255 tftp zImage kernelX-HYPER255 tftp
12、 zImage 0 xa000000023UsageFlash loader/kernel/root/ramdiskFlash dest src lenDescription将SDRAM上的数据储存到flash的相应地址ArgumentsLoader-将SDRAM的loader 0 xa00000000储存到flash的0 x0地址Kernel-将SDRAM的Kernel 0 xa00080000储存到flash的0 xc0000 地址Root-将SDRAM的root 0 xa0000000储存到flash的0 x1c0000地址Ramdisk-将SDRAM的ramdisk 0 xA08000
13、00储存到Flash的0 x1c00 00地址Dest-储存到flash上的地址Src-原来的数据所在地址Len-复制的长度ExampleXSBASE255 flash kernelXSBASE255 flash 0 xc0000 0 xa0000000 0 x10000024UsageBootBoot opt1 opt2Boot addr opt1 opt2Description驱动SDRAM上的 kernel通过相应 arguments 驱动 或者驱动相应地指的kernel。ArgumentsOpt1 kernel option(Only 0)Opt2 machine type( X-Hy
14、er255 : 200)Addr kernel image addressExampleXSBASE255 bootXSBASE255 boot 0 200XSBASE255 boot 0 xa0008000 0 20025实验二U-BOOT的分析析和移植植(1)U-BOOT的的特点在线读写写Flash、DOC、IDE、IIC、EEROM、RTC支持串行行口kermit和S-record下载载代码识别二进进制、ELF32、uImage格格式的Image,对对Linux引引导有特特别的支支持单任务软软件运行行环境26脚本语言言支持(类似BASH脚本)支持WatchDog、LCDlogo和状态态指
15、示功功能等支持MTD和文文件系统统支持中断断详细的开开发文档档27实验二U-BOOT的分析析和移植植(2)U-BOOT源源代码结结构board:和一些些已有开开发板相相关的文文件common:与体体系结构构无关的的文件,实现各各种命令令的C文文件cpu:CPU相关关文件disk:disk驱动的的分区处处理代码码doc:文档drivers:通用用设备驱驱动程序序28fs:支支持文件件系统的的文件net:与网络络有关的的代码lib_arm:与ARM体体系结构构相关的的代码tools:创创建S-Record格式文文件和和U-BOOT images的工工具29实验二U-BOOT的分析析和移植植(3)对
16、U-BOOT的移植植建立自己己开发板板的目录录和相关关文件在include/configs目录中中添加头头文件xsbase.h在board/目录下下新建xsbase目目录,创创建如下下文件:flash.c、memsetup.S、xsbase.c、Makefile和u-boot.lds添加网口口设备控控制程序序,cs8900网口口设备的的控制程程序cs8900.c 和cs8900.h30实验二U-BOOT的分析析和移植植(4)修改Makefile在u-boot-1.1.2/Makefile中加入入:xsbase_config :unconfig./mkconfig$(:_config=) armpxaxsbase31实验二U-BOOT的分析析和移植植(5)生成目标标文件先运行make clean然后运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 诗歌的多重解读与文化内涵试题及答案
- 游泳培训课件文案范文
- 2025年度集体劳动合同纠纷预防与处理办法
- 2025年度智能家居水电施工及售后服务协议
- 二零二五年度全新转让合同:环保节能技术专利权转让
- 2025年度物流包装设计与采购服务协议
- 传统文化与现代语文试题及答案
- 中医康复理疗师复习大纲试题及答案
- 语言运用中的常见误区试题及答案
- CPSM考试指导手册试题及答案
- 中国铁路发展历程
- TBT2765-2005 列车运行监控记录装置技术条件
- 小学特色课程《口风琴课程》校本教材
- 试卷印制服务投标方案(技术标)
- 安全风险分级管控清单(大全)
- 智能传感器系统(第二版)(刘君华)1-5章
- 6G移动通信技术
- 有效沟通技巧(适用于工厂)PPT幻灯片
- 湖南省消除艾梅乙工作考试复习题库大全(含答案)
- 采矿学课程设计砚北煤矿新井设计全套图纸
- 美一IP网络对讲系统说明手册
评论
0/150
提交评论