嵌入式系统的Boot Loader技术.ppt

嵌入式系统的Boot Loader技术.ppt

ID:52447564

大小:115.50 KB

页数:33页

时间:2020-04-07

嵌入式系统的Boot Loader技术.ppt_第1页
嵌入式系统的Boot Loader技术.ppt_第2页
嵌入式系统的Boot Loader技术.ppt_第3页
嵌入式系统的Boot Loader技术.ppt_第4页
嵌入式系统的Boot Loader技术.ppt_第5页
资源描述:

《嵌入式系统的Boot Loader技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、嵌入式系统的BootLoader技术陈文智浙江大学计算机学院2009年5月1内容提要1.BootLoader程序的基本概念2.BootLoader的典型结构框架3.BootLoader实验实验一BootLoader应用实验实验二U-BOOT的分析和移植21.BootLoader程序的基本概念BootLoader就是在操作系统内核运行之前运行的一段小程序初始化硬件设备和建立内存空间的映射图将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境系统的BootLoader程序通常安排在地址0x00000000处3BootLoader所支持的硬件环境每种不同的C

2、PU体系结构都有不同的BootLoaderBootLoader的安装地址BootLoader相关的设备和机制主机和目标机之间一般通过串口建立连接BootLoader的启动过程4BootLoader的操作模式启动加载模式下载模式BootLoader与主机之间的通信设备及协议52.BootLoader的典型结构框架操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行大多数BootLoader都分为阶段1和阶段2两大部分阶段1实现依赖于CPU体系结构的代码阶段2实现一些复杂的功能62.1BootLoader阶段1介绍BootLoader的阶段1通常包括以下步骤:1)硬

3、件设备初始化。屏蔽所有的中断设置CPU的速度和时钟频率RAM初始化初始化LED关闭CPU内部指令/数据Cache72)为加载阶段2准备RAM空间除了阶段2可执行映象的大小外,还必须把堆栈空间也考虑进来必须确保所安排的地址范围的的确确是可读写的RAM空间83)拷贝阶段2到RAM中4)设置堆栈指针sp5)跳转到阶段2的C入口点BootLoader的阶段2可执行映象刚被拷贝到RAM空间时的系统内存布局,如下图:9102.2BootLoader阶段2介绍1)初始化本阶段要使用到的硬件设备初始化至少一个串口,以便和终端用户进行I/O输出信息初始化计时器等112)检测系统的内存映射内存映射的

4、描述可以用如下数据结构来描述RAM地址空间中的一段连续的地址范围:内存映射的检测typedefstructmemory_area_struct{u32start;/*内存空间的基址*/u32size;/*内存空间的大小*/intused;}memory_area_t;123)加载内核映像和根文件系统映像规划内存占用的布局内核映像所占用的内存范围MEM_START+0X8000根文件系统所占用的内存范围MEM_START+0X00100000从Flash上拷贝While循环134)设置内核的启动参数标记列表(taggedlist)的形式来传递启动参数,启动参数标记列表以标记ATAG

5、_CORE开始,以标记ATAG_NONE结束嵌入式Linux系统中,通常需要由BootLoader设置的常见启动参数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD14例:设置ATAG_CORE的代码如下:params=(structtag*)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

6、.rootdev=0;params=tag_next(params);BOOT_PARAMS表示内核启动参数在内存中的起始基地址,指针params是一个structtag类型的指针。宏tag_next()将以指向当前标记的指针为参数,计算出当前标记的下一个标记的起始地址155)调用内核CPU寄存器的设置:R0=0;R1=机器类型ID;关于机器类型号,可以参见:linux/arch/arm/tools/mach-types。R2=启动参数标记列表在RAM中起始基地址;CPU模式:必须禁止中断(IRQs和FIQs);CPU必须SVC模式;Cache和MMU的设置:MMU必须关闭;指令

7、Cache可以打开也可以关闭;数据Cache必须关闭;HOWTOCALL?162.3关于串口终端向串口终端打印信息也是一个非常重要而又有效的调试手段如果碰到串口终端显示乱码或根本没有显示的问题,可能是因为:BootLoader对串口的初始化设置不正确运行在host端的终端仿真程序对串口的设置不正确17BootLoader启动内核后却无法看到内核的启动输出信息:确认内核在编译时是否配置了对串口终端的支持,并配置了正确的串口驱动程序BootLoader对串口的初始化设置是否和内核对串

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。