嵌入式系统设计实验告--BootLoader-移植实验
- 格式:doc
- 大小:3.03 MB
- 文档页数:20
合肥学院嵌入式系统设计实验报告(20 13 - 20 14 第 2 学期)专业:实验项目:BootLoader移植实验实验时间:2014年5月19日实验成员:____________________________________________________________________指导老师:电子信息与电气工程系2014 年 4 月制实验三BootLoader 移植实验一、实验目的1、熟悉 Bootloader 工作原理。
2、了解 U-Boot 的代码结构。
3、掌握 U-Boot 移植过程。
二、实验内容本实验熟悉 Bootloader 工作原理,了解 U-Boot 源码结构,基于 S3C2440 处理器,完成 U-Boot 移植,并在目标开发板上测试通过。
三、实验设备硬件: 1、 pc 机2、 FriendlyARM开发套件即MIRCO2440 核心板软件: 1、虚拟机( VMware )2、U-Boot 源码( u-boot-2011.03.tar )四、实验过程1、 Micro2440配置在mini2440/micro2440上的移植准备工作,我们仍然将开发板文件建立在board/samsung 下,2、配置时出现错误,字体要修改,复制粘贴的时候出现的错误,有的地方有中文,去掉就行了。
3、编译完成失败,只有上网查找错误,最后解决了错误。
11124、编译完成后将u-boot.bin下载到SDRAM的 0x33f80000地址处, u-boot已经能在RAM中运行。
二、支持DM90001、编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处。
三、支持内核启动1、编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处。
四、支持Nand Flash1、编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处。
五、实验小结本实验需要熟悉Bootloader 工作原理,了解U-Boot 源码结构,基于S3C2440 处理器,完成 U-Boot 移植,并在目标开发板上测试通过,首先可以看到实验指导书上的介绍,了解U-Boot 的移植。
嵌入式实习报告(共5篇)第一篇:嵌入式实习报告一、嵌入式系统开发与应用概述在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。
如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。
本章节就是将你领入ARM 的学习大门,开始嵌入式开发之旅。
以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。
由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。
嵌入式的广泛应用可以说是无所不在。
嵌入式微处理器技术的基础是通用计算机技术。
现在许多嵌入式处理器也是从早期的PC 机的应用发展演化过来的,如早期PC 诸如TRS-80、Apple II 和所用的Z80 和6502 处理器,至今仍为低端的嵌入式应用。
在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。
嵌入式处理器目前主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM 等系列。
在早期实际的嵌入式应用中,芯片选择时往往以某一种微处理器内核为核心,在芯片内部集成必要的ROM/EPROM/Flash/EEPROM、SRAM、接口总线及总线控制逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A 等各种必要的功能和外设。
二、实习设备硬件:Embest EduKit-IV实验平台、ULINK2仿真器套件、PC机软件:μVision IDE for ARM集成开发环境、Windows 98/2000/NT/XP三、实习目的1.初步掌握液晶屏的使用及其电路设计方法;掌握S3C2410X处理器的LCD控制器的使用;掌握通过任务调用的方法把液晶显示函数添加到uC/OS-II中;通过实验掌握液晶显示文本及图形的方法与程序设计。
课程实验报告实验名称:嵌入式系统实验专业班级:计算机科学与技术x班学号:Ux姓名:x合作者:x实验时间:xxxx年xx月xx日计算机科学与技术学院试验一:bootloader (ads、引导)一、实验任务1、熟悉ADS 1.2开发工具创建、编译、下载、调试工程2、串口通讯串口控制器初始化、收/发数据3、配置主机端的nfs服务器配置主机端的nfs服务器,以连接linux核心4、下载并运行linux核心使用自己的串口程序下载并运行linux核心二、实验内容编写串口接收数据函数编写串口发送数据函数学习ads、jtag调试、flash烧写打印菜单,等待用户输入下载并运行linux核心配置主机的nfs服务器,与linux核心连接三、实验步骤1.编写串口接收数据函数编写串口发送数据函数修改bootloader:菜单、串口收发、命令行;接收串口数据并做相应处理:while(1){打印菜单并等待用户输入;switch(ch) //根据用户输入做相应处理{case '1':imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);if(imgsize==0) //下载出错;else //下载成功;break;case '3':nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);case '2':BootKernel(); //这里是不会返回的,否则出错;break;default:break;}}Bootloader的main()函数打印菜单:int main(void){ARMTargetInit(); //目标板初始化;//接收用户命令,传递linux核心;Uart_puts("Menu:\n\r");Uart_puts("1.Load kernel via Xmodem;\n\r");Uart_puts("2.Boot linux; \n\r");Uart_puts("3.Load kernel from flash and boot; \n\r");Uart_puts("Make your choice.\n\r");do{ch=Uart_getc();}while(ch!='1' && ch!='2' && ch!='3');return 0;}串口读写:void Uart_putc(char c){while(!SERIAL_WRITE_READY());((UTXH0) = (c));}unsigned char Uart_getc( ){while(!SERIAL_CHAR_READY());return URXH0;}2.使用ads1.2编译bootloader;3.使用uarmjtag下载、调试bootloader;4.使用axd查看变量、内存,单步跟踪;5.配置超级终端,与bootloader通讯;6.配置nfs;编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)启动nfs服务器:/etc/init.d/nfs restart测试nfs服务器是否正常运行:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt7.以root用户启动cutecom,将cutecom配置改为115200 bps,8位,1位停止位,无校验,xmodem,no line end;8.使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;9.启动Linux核心运行,察看结果;10.linux核心能够运行到加载root步骤,说明bootloader正常运行;11.将bootloader烧写到flash中,重启目标板电源,察看bootloader是否烧写正常,下载核心测试;目标板linux系统正常运行到命令行模式下,能够正常输入linux命令,说明实验成功。
实验内容二—BootLoader移植一、实验目的简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。
比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
BootLoader是嵌入式系统上电之后,操作系统内核运行之前执行的一段程序,主要负责载入内核。
利用上次实验制作的交叉编译工具为目标机编译一个U-boot,然后烧写到实验箱中,为后面的系统移植和嵌入式程序的编译做基础。
二、实验内容把编译好的u-boot烧写到arm开发箱中并熟练使用u-boot命令。
三、实验步骤烧写U-BootU-Boot编译完成之后,就可以将u-boot目录下的u-boot.bin 烧写到目标机的NandFlash中。
u-boot.bin的烧写需要使用一个硬件烧录装置,例如Flash 烧录器或JTAG仿真器。
Super-ARM实验箱的U-Boot烧写,在WINDOWS下进行,依赖第3章中所安装的ADS开发环境,过程如下:(1)用Super-ARM实验箱中配置的并口线将PC 机并口(DB25 口)与仿真器Probe ICE 的DB25口连接;用20Pin扁平电缆线将仿真器Probe ICE 的ARM-JTAG 口与实验箱的JTAG 口相连接。
打开系统电源。
(2)运行Multi-ICE Server(3)将本章附件中名为“u-boot烧写”的文件夹复制到PC机的某个目录下,将新编译成功的u-boot.bin拷贝到该目录下。
一、实验项目名称Blinky验证及修改二、实验目的和要求(1)实验目的1.会用《STM32固件库使用手册的中文翻译版》解决实验中出现的问题及修改的方法。
2.掌握Blinky程序的原理及修改跑马灯的基本方法和原理(2)实验要求修改LED灯的亮的位置以及改变流水灯的顺序三、实验环境(1)硬件配置器件数量英蓓特STM32V100开发板ULINK2仿真器1 1 1PCUSB数据线2(2)软件配置软件平台数量PC机操作系统PC机端串口通信程序Windows7超级终端Keil uVision 3.23嵌入式软件开发环境四、实验内容和原理(1)电路原理图图1 LED引脚连接电路图上图为LED引脚连接电路图。
本实验中, 修改相应的程序以改变LED灯亮灭的位置以及流水方向。
其中, 如图所示, 四个LED灯分别对应PC6—PC9四个端口。
(2)实验内容1.首先打开Blinky文件夹(里面有三个文件夹: uvision-存放工程文件和源文件, obj-存放编译文件, listing-存放链接及印像文件), 进入uvision文件夹中双击Blinky.Uv2工程文件, 则会打开工程文件。
2、工程文件中包含Start Up(启动代码存放区), Source Code(主要的源程序代码存放区), Library(源程序文件库), Document(程序的说明文档)文件夹。
3.连接好电源线和仿真器接线(外接仿真器连接线(JATG))4、选择仿真器, 在工程总目录(Target)上点击右键, 然后选择Option for Target ‘STM32 Trace A。
在Debug选项卡下, 选中UNINK Cortex Debugger。
分别如图2、图3所示。
图2 设置工程选项图3 设置Debug选项卡5.检查UNINK2是否正常连接上。
如果UNINK2通过USB线连接到开发板后, 上面的RUN和COM指示灯先变为蓝色后熄灭, 而USB指示灯一直为红色, 则说明ULINK没问题。
基于ARM9嵌入式系统的Bootloader移植黎君【摘要】如今在移动通信领域嵌入式系统是融合了先进高度发展科技的替代产品.Bootloader移植平台采用的是三星公司工业级的开发板Micro-2440,其处理器是ARM 9架构的芯片S3C2440.主要阐述将U-boot移植至目标开发板上的过程,以及移植过程中遇到的问题.通过对Bootloader工作原理的分析,最终把U-boot 成功地移植到了目标开发板上,为能够正确启动嵌入式Linux操作系统作了必不可少的准备.与迄今为止已经发表的关于Bootloader移植的论文相比,重点在于均未提及到的对解决移植设备兼容性方法的阐述.%Embedded system is replacement products combined with specific object and highly advanced technology in the field of mobile communication. With the purpose to transplant U-boot onto target board cored with S3C2440, technical difficulties during transplantation are concerned. By analyzing working method of bootloader, U-boot was transplanted successfully, and this got good preparation for booting embedded Linux OS correctly. Compared to existing papers on bootloader transplantation, the importance is focused on solution to device compatibility problems, which hasn' t been mentioned up to now.【期刊名称】《科学技术与工程》【年(卷),期】2011(011)032【总页数】4页(P8061-8064)【关键词】嵌入式系统Bootloader;U-boot;S3C2440【作者】黎君【作者单位】暨南大学信息科学技术学院电子工程系,广州510632【正文语种】中文【中图分类】TP368.2当前移动终端技术日益成熟,应用广泛,功能日益强大,将逐渐普及到现代人日常生活中,比如手机、PDA、平板等。
嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。
二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。
学习使用开发工具进行程序编写、编译和下载。
2、中断实验了解中断的概念和工作原理。
编写中断处理程序,实现对外部中断的响应和处理。
3、定时器实验掌握定时器的配置和使用方法。
利用定时器实现定时功能,如周期性闪烁 LED 灯。
4、串口通信实验学习串口通信的协议和编程方法。
实现开发板与计算机之间的串口数据传输。
5、 ADC 转换实验了解 ADC 转换的原理和过程。
编写程序读取 ADC 转换结果,并进行数据处理和显示。
四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。
创建新的项目,选择合适的芯片型号和编译选项。
编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。
2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。
编写中断服务函数,在函数中实现相应的处理逻辑。
连接外部中断源,观察中断的触发和响应情况。
3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。
在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。
根据定时标志控制 LED 灯的闪烁频率。
4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。
编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。
使用串口调试助手在计算机上进行数据收发测试。
5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。
启动 ADC 转换,并通过查询或中断方式获取转换结果。
第1篇一、实验目的本次实验旨在通过设计功能移植实验,验证不同硬件平台之间功能模块的移植能力,提高学生在嵌入式系统设计中的实践能力和创新能力。
实验内容主要包括以下三个方面:1. 选择一个具有代表性的嵌入式系统功能模块;2. 分析该功能模块在原硬件平台上的实现方式;3. 将该功能模块移植到新的硬件平台上,并验证其功能。
二、实验环境1. 原硬件平台:STM32F103C8T6开发板2. 新硬件平台:STM32F407VE开发板3. 开发工具:Keil uVision54. 编程语言:C语言5. 软件版本:STM32CubeMX 4.21.0、HAL库三、实验内容1. 选择功能模块本次实验选择LED灯控制功能模块作为研究对象。
LED灯控制功能模块通过控制GPIO引脚的高低电平来控制LED灯的亮灭。
2. 原硬件平台分析在STM32F103C8T6开发板上,LED灯控制功能模块通过以下步骤实现:(1)初始化GPIO引脚为输出模式;(2)通过HAL库函数控制GPIO引脚的电平,实现LED灯的亮灭。
3. 新硬件平台分析在STM32F407VE开发板上,LED灯控制功能模块的实现方式与原硬件平台类似。
但需要注意的是,GPIO引脚的配置方式可能有所不同。
4. 功能模块移植(1)在STM32CubeMX中配置GPIO引脚在STM32CubeMX中,选择新硬件平台STM32F407VE,然后添加LED灯控制功能模块。
根据实际需求,设置GPIO引脚的模式、速度、复用功能等参数。
(2)编写移植代码在Keil uVision5中,新建项目,并添加移植代码。
以下是移植代码的示例:```cinclude "stm32f4xx_hal.h"void SystemClock_Config(void);static void MX_GPIO_Init(void);int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // LED灯亮HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // LED灯灭HAL_Delay(1000);}}void SystemClock_Config(void)RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {Error_Handler();}static void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct = {0};__HAL_RCC_GPIOC_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_13;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);}void Error_Handler(void){__disable_irq();while (1){}}```5. 功能验证将移植后的程序下载到新硬件平台STM32F407VE,观察LED灯是否能够正常亮灭。
实验三BootLoader实验【实验目的】1、了解BootLoader的基本概念和框架结构2、了解BootLoader引导操作系统的过程3、掌握bootloader程序的编译方法4、掌握BootLoader程序的使用方法【实验原理】1、bootLoader的作用PC机中的引导加载程序由BIOS和位于硬盘MBR中的OS Boot Loader一起组成。
BIOS在完成硬件检测和资源分配后,将硬盘MBR中的Boot Loader读到系统的RAM 中,然后将控制权交给OS Boot Loader。
Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务完全由bootLoader来完成。
bootloader的主要作用:(1)、初始化硬件设备(2)、建立内存空间的映射图(3)、完成内核的加载,为内核设置启动参数2、bootLoader程序结构框架嵌入式系统中的boot Loader的实现完全依赖于CPU的体系结构,因此大多数Boot Loader都分为第一阶段和第二阶段两大部分,依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在阶段1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。
而阶段2则通常用C语言来实现,这样可以实现一些复杂的功能,而且代码会具有更好的可读性和可移植性。
(1)、Boot Loader的阶段1通常主要包括以下步骤:●硬件设备初始化;●拷贝Boot Loader的程序到RAM空间中;●设置好堆栈;●跳转到阶段2的C入口点。
(2)、Boot Loader的阶段2通常主要包括以下步骤:●初始化本阶段要使用到的硬件设备;●系统内存映射(memory map);●将kernel映像和根文件系统映像从Flash读到RAM空间中;●为内核设置启动参数;●调用内核。
学院
嵌入式系统设计实验报告
(20 13 - 20 14第 2学期)
专业:
实验项目: BootLoader 移植实验
实验时间: 2014 年 5 月 19 日实验成员:
__________________________________ __________________________________ 指导老师:
电子信息与电气工程系
2014年4月制
实验三 BootLoader移植实验
一、实验目的
1、熟悉Bootloader工作原理。
2、了解U-Boot的代码结构。
3、掌握U-Boot移植过程。
二、实验容
本实验熟悉Bootloader工作原理,了解U-Boot源码结构,基于S3C2440处理器,完成U-Boot移植,并在目标开发板上测试通过。
三、实验设备
硬件:1、pc机
2、FriendlyARM开发套件即MIRCO2440核心板
软件:1、虚拟机(VMware)
2、U-Boot源码(u-boot-2011.03.tar)
四、实验过程
1、Micro2440 配置
在mini2440/micro2440 上的移植准备工作,我们仍然将开发板文件建立在board/samsung 下,
2、配置时出现错误,字体要修改,复制粘贴的时候出现的错误,有的地方有中文,去掉就
行了。
3、编译完成失败,只有上网查找错误,最后解决了错误。
11
12
4、编译完成后将u-boot.bin 下载到SDRAM 的0x33f80000 地址处,u-boot 已经能在RAM
中运行。
二、支持 DM9000
1、编译完成后将u-boot.bin 下载到SDRAM 的0x33f80000 地址处。
三、支持核启动
1、编译完成后将u-boot.bin 下载到SDRAM 的0x33f80000 地址处。
四、支持 Nand Flash
1、编译完成后将u-boot.bin 下载到SDRAM 的0x33f80000 地址处。
五、实验小结
本实验需要熟悉Bootloader工作原理,了解U-Boot源码结构,基于S3C2440处理器,完成U-Boot移植,并在目标开发板上测试通过,首先可以看到实验指导书上的介绍,了解U-Boot的移植。
开始主要是利用U-Boot源码(u-boot-2011.03.tar)进行配置,建立Micro2440 配置、在 RAM 中运行、支持 DM9000、支持核启动、支持 Nand Flash、支持 yaffs 下载、支持 Nand Flash 启动等配置。
本次实验中虽然不要我们自己编写程序。
但是对于初学者的我们还是有点难度的,主要是时间限制,所以实验都是在课下完成的。
但是这样我们学习的更加深刻。
有充足的时间去消化这些知识。
当然我们也基本完成了主要的移植,学会了最基本的思想,希望接下来的实验我们仍然可以很好的完成。
六、思考题
1、Bootloader的结构分两部分,简述各部分的功能。
(1)OEM startup code
这部分代码是在BootLoader中最先被执行的。
它的主要功能是初始化最小围的硬件设备,比如设置CPU工作频率、关闭看门狗、设置cache、设置RAM的刷新率、填写存控制寄存器(通知CPU有效的数据总线引脚数)等。
由于系统刚刚启动,不适合使用复杂的高级语言,
因此这部分代码主要由汇编程序完成。
在汇编程序段设置完堆栈后,就跳转到C语言的Main 函数入口(位于<PLATNAME>/eboot/main.c);
(2)Main code
这部分代码由C语言实现,是BLCOMMON代码的一部分,它可以用来执行比较复杂的操作。
比如检测存和Flash的有效性、检测外部设备接口、检测串口并且向已经连接的主机发送调试信息、通过串口等待命令、启动网络接口、建立存映射等汇编无法完成的工作。
2、ARM常用的Bootloader程序有哪些?简要说明。
嵌入式Linux系统中常用的Bootloader引导程序有U-Boot,redboot,blob和vivi等,其中U-Boot遵循GPL条款的开放源码项目,功能最为强大;U-Boot对PowerPC系列处理器支持最丰富,同时还支持MIPS,x86,ARM,Nios,XScale等诸多常用系列的处理器。
1)U-Boot:全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux核很相似,事实上,不少U-Boot源码就是相应的Linux核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
2)Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、稳定可靠等品质优点。
它可以使用X-modem或Y-modem协议经由串口下载,也可以经由以太网口通过BOOTP/DHCP服务获得IP参数,使用TFTP方式下载程序映像文件,常用于调试支持和系统初始化(Flash下载更新和网络启动)。
3)Blob功能比较齐全,代码较少,比较适合做修改移植,用来引导Liunx,目前大部分S3C44B0板都用Blob修改移植后来加载uClinux。
4)vivi是国mizi 公司开发的bootloader, 适用于ARM9处理器。
Vivi有两种工作模式:启动加载模式和下载模式。
启动加载模式可以在一段时间后(这个时间可更改)自行启动linux核,这是vivi的默认模式。
在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用vivi提供的一些命令
3、简述u-boot的启动的两部分流程。
从固态存储设备上启动的Boot Loader 大多都是2 阶段的启动过程,也即启动过程可以分为 stage1 和 stage2 两部分。
在stage1 阶段,通常将完成以下工作(以执行的先后为顺序):
1. 硬件设备初始化,通常只初始化的最基本的设备,如存控制器、串口等设备
2. 为加载 Boot Loader的 stage2 准备存空间
3. 复制Boot Loader 的stage2 到存空间中
4. 设置堆栈
5. 跳转至 stage2 的入口点
Boot Loader 的stage 2 通常包括以下步骤:
1. 初始化本阶段要使用到的硬件设备,如以太网、USB等
2. 检测系统存的映射
3. 将核映像和根文件系统映像从固体存储器Flash 等上读到存空间中
4. 设置核启动参数
5. 启动核。