欢迎来到天天文库
浏览记录
ID:13157973
大小:376.50 KB
页数:12页
时间:2018-07-21
《ubootmips移植分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、searcher(作上好文章者必集其所大成为弟者因不才故只品而不作文章多半转载好文必要流传每篇皆有可取望给您老帮助感谢那些现实中以及传说中的大牛们是你们给了我们足够的养料是你们使我们的学识更加充实) 2008-03-0618:461. 引言文章是2年前移植u-boot时候分析的,u-boot方面文章比较多,但是mips方面的稍微少一点,因此贴上来就当资料搜集贴吧.(Note:图片上传后和原图有些出入,不知道什么原因,不过总体框图还是正确的)1.1. 参考资料詹荣开2、术内幕>原作者未考证2. 需求分析Bootloader在嵌入式系统中一般起硬件初始化和内核引导的作用,在产品中使用的Bootloader只要保证基本的功能和引导速度即可,而作为开发使用的Bootloader,要求能提供灵活的配置方式和调试手段,一般选择已有的开源软件作为移植,下面主要分析Bootloader移植的需求2.1. 基本功能需求基本功能包括:1.硬件初始化: 根据具体的硬件环境,初始化必要的寄存器和外设2.内核引导 从存储3、介质中读取内核映象,并引导3.代码下载 提供一种或几种机制能从主机直接下载文件到SDRAM中2.2. 扩展功能需求扩展功能主要是为了提供调试手段的多样化和便利化做的一些工作,包括:1. 环境变量的保存:提供一种能将用户定制的一些参数和脚本保存的机制;2. 文件写入存储介质:提供将SDRAM中文件写入存储介质的功能;3. USB调试手段:提供使用USB作为控制终端和下载方式的调试开发功能;4. 文件系统解析:提供文件系统解析功能,使Bootloader能从存储介质的文件系统4、目录里读取文件。3. 原理分析3.1. Bootloader原理分析(1) BootLoader简介 Bootloader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。(2) BootLoader的操作模式(OperationMode)大多数BootLoader都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅对5、于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载(Bootloading)模式:这种模式也称为"自主"(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。下载(Downloading)模式:在6、这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。(3) Bootloader的两段式启动由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等7、,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。BootLoader的stage1通常包括以下步骤(以执行的先后顺序):?硬件设备初始化。?为加载BootLoader的stage2准备RAM空间。?拷贝BootLoader的stage2到RAM空间中。?设置好堆栈。?跳转到stage2的C入口点。BootLoader的stage2通常包括以下步骤(以执行的先后顺序):8、?初始化本阶段要使用到的硬件设备。?检测系统内存映射(memorymap)。?将kernel映像和根文件系统映像从flash上读到RAM空间中。?为内核设置启动参数。?调用内核。(4) Bootloader结构 Bootloader的组成模块结构如下图所示:Shell控制台(通过串口输出和接收命令来控制)上层功能(包括monitor功能,和最基本的启动linuxkernel功能)底层驱动(主要两种:一种是读写存储介质<硬盘,flash驱动等>,一种是与主机通信<网卡和串口>)架构相关代码
2、术内幕>原作者未考证2. 需求分析Bootloader在嵌入式系统中一般起硬件初始化和内核引导的作用,在产品中使用的Bootloader只要保证基本的功能和引导速度即可,而作为开发使用的Bootloader,要求能提供灵活的配置方式和调试手段,一般选择已有的开源软件作为移植,下面主要分析Bootloader移植的需求2.1. 基本功能需求基本功能包括:1.硬件初始化: 根据具体的硬件环境,初始化必要的寄存器和外设2.内核引导 从存储
3、介质中读取内核映象,并引导3.代码下载 提供一种或几种机制能从主机直接下载文件到SDRAM中2.2. 扩展功能需求扩展功能主要是为了提供调试手段的多样化和便利化做的一些工作,包括:1. 环境变量的保存:提供一种能将用户定制的一些参数和脚本保存的机制;2. 文件写入存储介质:提供将SDRAM中文件写入存储介质的功能;3. USB调试手段:提供使用USB作为控制终端和下载方式的调试开发功能;4. 文件系统解析:提供文件系统解析功能,使Bootloader能从存储介质的文件系统
4、目录里读取文件。3. 原理分析3.1. Bootloader原理分析(1) BootLoader简介 Bootloader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。(2) BootLoader的操作模式(OperationMode)大多数BootLoader都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅对
5、于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载(Bootloading)模式:这种模式也称为"自主"(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。下载(Downloading)模式:在
6、这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。(3) Bootloader的两段式启动由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等
7、,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。BootLoader的stage1通常包括以下步骤(以执行的先后顺序):?硬件设备初始化。?为加载BootLoader的stage2准备RAM空间。?拷贝BootLoader的stage2到RAM空间中。?设置好堆栈。?跳转到stage2的C入口点。BootLoader的stage2通常包括以下步骤(以执行的先后顺序):
8、?初始化本阶段要使用到的硬件设备。?检测系统内存映射(memorymap)。?将kernel映像和根文件系统映像从flash上读到RAM空间中。?为内核设置启动参数。?调用内核。(4) Bootloader结构 Bootloader的组成模块结构如下图所示:Shell控制台(通过串口输出和接收命令来控制)上层功能(包括monitor功能,和最基本的启动linuxkernel功能)底层驱动(主要两种:一种是读写存储介质<硬盘,flash驱动等>,一种是与主机通信<网卡和串口>)架构相关代码
此文档下载收益归作者所有