bootloader的移植
来源:互联网 发布:淘宝怎么修改中差评 编辑:程序博客网 时间:2024/05/21 10:26
第二阶段:boorloader的移植
一. BootLoader简介
应用程序
文件系统
操作系统内核
BootLoader
简单的说bootloader是一段程序,它的作用就是加载操作系统,BootLoader(引导加载程序)是系统加电后运行的 第一段软件代码。通过这段代码实现硬件的初始化,建立内存空间的映射图,为操作系统内核准备好硬件环境并引导内核的启动。如右图所示的那样在设备的启动过程中bootloader位于最底层,首先被运行来引导操作系统运行,很容易可以看出 bootloader是底层程序所以它的实现严重地依赖于硬件,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,一些功能强大、支持硬件环境较多的BootLoader也被广大的使用者和爱好者所支持,从而形成了一些被广泛认可的、较为通用的的bootloader实现。简单的介绍几种:
1.U-BOOT
uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以从下载 U-BOOT是由PPCBOOT发展起来的,是PowerPC、ARM9、Xscale、X86等系统通用的Boot方案,从官方版本 0.3.2开始全面支持SC系列单板机。u-boot是一个开源的bootloader。
2.vivi
vivi是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这是vivi的默认模式。如果修改或更新需要进入下载模式,在下载模式下,vivi为用户提供一个命令行接口通过接口可以使用vivi提供的一些命令,来实现flash的烧写、管理、操作mtd分区信息、启动系统等功能。
其它还有一些bootloader实现如下表所示:
名称
说明
支持的架构
LILO
Linux的磁盘引导加载程序
x86
GRUB
LILO的GNU版本
x86
Loadlin
从DOS引导Linux
x86
RedBoot
以eCos为基础的引导程序
x86 、ARM、PowerPC、MIPS等
ROLO
从ROM引导Linux,且不需要BIOS
x86
Etherboot
从以太网卡启动Linux系统的固件
x86
LinuxBIOS
以Linux为基础的BIOS的替代品
x86
blob
来自LART计划的引导程序
ARM
由于u-boot的通用性好,功能全面,适合初学者学习和使用,我们选用u-boot作为基准代码,在此基础上进行修改,完成移植工作。
二.移植准备
1.目标板:
这是进行U-Boot移植首先要明确的。可以根据目标板上CPU、FLASH、SDRAM的情况,以尽可能相一致为原则,先找出 一个与所移植目标板为同一个或同一系列处理器的U-Boot支持板为移植参考板。
以上图片是本次移植所用到的开发板实物图
一些重要参数如下:
CPU处理器
– Samsung S3C2440AL,主频400MHz,最高533MHz。
SDRAM内存
– 板载64MB SDRAM
– 32bit数据总线
– SDRAM时钟频率高达100MHz
– Hynix809E
Flash存储器
– 板载64MB Nand Flash,掉电非易失
– 板载2MB Nor Flash
– K9F1208u00
网卡
– DM9000EP
2.源文件:
选择一标准的u-boot代码:u-boot-1.1.6
3.烧写工具:
u-boot的烧写使用JTAG线进行下载,用SJF2440.exe软件进行烧写,使用DNW终端进行串口调试。用串口线相连。
4.知识储备:
u-boot的目录结构:
目录
说明
board
和一些已有开发板有关的文件,比如makefile和U-Boot.ldS等都和具体开发板的硬件和地址分配有关。
common
与体系结构无关的文件,实现各种命令的C文件
cpu
CPU相关文件,其中的子目录都是以U-Boot所支持的CPU为名,比如子目录arm926ejS、mips等,每个特定的子目录都包括cpu.c和interrupt.c,start.s。其中cpu.c初始化CPU、设置指令cache和数据cache等。Interruput.c设置系统的各种中断和异常;start.s是U-Boot自动执行时的第一个文件,它主要是设置系统堆栈和工作方式,为进入C程序奠定基础。
disk
Disk驱动的分区处理代码
<td valign="top" width="97" st- 移植2440的bootloader
- bootloader的移植
- bootloader的移植
- bootloader的移植
- bootloader 移植
- bootloader移植
- 基于S3C2440的bootloader移植详解
- 21、Bootloader(5)---Uboot的移植
- 系统移植之bootloader移植
- bootloader移植体系总结
- Bootloader移植简述
- Bootloader移植简述
- Kinetis Bootloader移植
- MSP430 BootLoader移植
- 嵌入式Minis3c2440开发板详解之Bootloader下的U-boot移植,内核移植,文件系统移植
- ARM的嵌入式Linux移植体验之BootLoader
- S3C6410移植DMA的一点经验总结[bootloader级]
- ARM9 2410移植之系统启动bootloader 的编写(ADS)
- i2c-core,i2c总线驱动和i2c设备驱动的关系
- easyMule自动关机工具(可用于1.X和2.0版本)
- 日本游戏常用加密压缩算法
- 如何发现客户端软件中的内存泄露?
- S60开发中出现错误提示详细显示
- bootloader的移植
- ubuntu下minicom的使用
- 0欧电阻、磁珠的作用(转载)
- 修改Oracle最大连接数
- 总览 SYNOPSIS
- 网站流量及网站访问量统计指标的说明
- 项目管理文化四味
- 刚才打了110,还是不给加分!
- 在PDA中获取GPS信息