详细的bootloader的移植(1)

简介:
 
一. 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
2vivi
vivi是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这vivi的默认模式。如果修改或更新需要进入下载模式,在下载模式下,vivi为用户提供一个命令行接口通过接口可以使用vivi提供的一些命令,来实现flash的烧写、管理、操作mtd分区信息、启动系统等功能。 
其它还有一些bootloader实现如下表所示:
名称
说明
支持的架构
LILO
Linux的磁盘引导加载程序
x86
GRUB
LILOGNU版本
x86
Loadlin
DOS引导Linux
x86
RedBoot
eCos为基础的引导程序
x86 ARMPowerPCMIPS
ROLO
ROM引导Linux,且不需要BIOS
x86
Etherboot
从以太网卡启动Linux系统的固件
x86
LinuxBIOS
Linux为基础的BIOS的替代品
x86
blob
来自LART计划的引导程序
ARM
由于u-boot的通用性好,功能全面,适合初学者学习和使用,我们选用u-boot作为基准代码,在此基础上进行修改,完成移植工作。
二.移植准备
1.目标板: 
这是进行U-Boot移植首先要明确的。可以根据目标板上CPUFLASHSDRAM的情况,以尽可能相一致为原则,先找出 一个与所移植目标板为同一个或同一系列处理器的U-Boot支持板为移植参考板。
 
以上图片是本次移植所用到的开发板实物图
一些重要参数如下:
CPU处理器
– Samsung S3C2440AL,主频400MHz,最高533MHz
SDRAM内存
– 板载64MB SDRAM
– 32bit数据总线
– SDRAM时钟频率高达100MHz
– Hynix809E
Flash存储器
– 板载64MB Nand Flash,掉电非易失
– 板载2MB Nor Flash
K9F1208u00









本文转自 chen138 51CTO博客,原文链接:,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
存储 运维 Linux
Linux内核学习(三):Bootloader的特种兵-Uboot(一)
Linux内核学习(三):Bootloader的特种兵-Uboot(一)
97 0
|
7月前
|
Linux 编译器 Go
Linux内核学习(四):Bootloader的特种兵-Uboot(二)
Linux内核学习(四):Bootloader的特种兵-Uboot(二)
656 0
|
编译器 Linux 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用
433 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用(上)
|
NoSQL Ubuntu 编译器
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用
186 0
|
存储 算法 Linux
如何编写linux下nand flash驱动-4
2.       软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架。弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做了那些准备工作,而剩下的,驱动底层实现部分,你要去实现哪些功能,才能使得硬件正常工作起来。
950 0
|
存储 Linux 芯片
如何编写linux下nand flash驱动-3
【读(read)操作过程详解】 以最简单的read操作为例,解释如何理解时序图,以及将时序图 中的要求,转化为代码。   解释时序图之前,让我们先要搞清楚,我们要做的事情:那就是,要从nand flash的某个页里面,读取我们要的数据。
1062 0
|
存储 Linux 芯片
如何编写linux下nand flash驱动-1
1.       硬件特性: 【Flash的硬件实现机制】 Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。
966 0
|
机器学习/深度学习

热门文章

最新文章