BIOS,Bootloader和U-boot的区别

转载自http://blog.csdn.net/conowen/article/details/7253620

bios

BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

BootLoader

BootLoader是一段小程序,可以把它想象成PC机linux上的GRUB/LILO引导程序,只不过在嵌入式linux中,没有BIOS,而是直接从flash中运行,来装载内核。它可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。

一个嵌入式系统从软件角度来看分为三个层次:

1.引导加载程序

包括固化在固化中的boot程序(可选),和BootLoader两大部分

2.linux内核

特定于嵌入式平台的定制内核

3.文件系统

包括了系统命令和应用程序

--------------------------------------------------------------------------------

BootLoader-->Boot Parameters-->Kernel-->Root Filesystem 

--------------------------------------------------------------------------------

为什么需要进行bootloader移植?

答:1.因为每种不同的CPU体系结构都有不同的BootLoader

2.BootLoader依赖于具体的嵌入式板级设备的配置

--------------------------------------------------------------------------------

BootLoader启动过程可分为单阶段和多阶段(stage1、stage2),其中stage1完成初始化硬件,如CPU寄存器、内存控制器,为stage2准备内存空间。一般stage1是可以直接在nor flash中运行的,并将stage2复制到内存RAM中,设置堆栈,然后跳转到stage2(从这也可以看出stage2是在RAM中运行的,与stage1不同)

BootLoader的stage1通常包括以下步骤:

1.硬件设备初始化  如CPU寄存器、内存控制器

2.为加载BootLoader的stage2准备RAM空间

3.拷贝BootLoader的stage2到RAM空间中

4.设置好堆栈    为什么?为了跳转到stage2的入口,因为stage2大多数是用C语言写的

5.跳转到stage2的C入口点

BootLoader的stage2通常包括以下步骤:

1.初始化本阶段要使用到的硬件设备    各种设备,如网卡

2.将内核映像和根文件系统映像从flash上读到RAM中去

3.调用内核

--------------------------------------------------------------------------------

uboot 

Uboot用于多种嵌入式CPU的BootLoader程序

支持多种嵌入式操作系统的引导

UBOOT目录结构

1.Borad        与开发板有关的文件。第一个开发板都以一个子目录出现在当前目录中

2.Common    实现Uboot支持的命令

3.Cpu        与特定CPU架构相关的代码,支持的CPU对应一个子目录(注意CPU与开发板的区别)

3.Disk        对磁盘的支持

4.Doc        文档目录

5.Drivers    Uboot支持的设备驱动程序  如各种网卡、串品、USB、支持CFI的Flash

6.Fs         文件系统的支持

7.Iclude    Uboot使用的头文件。该目录下configs目录有与开发板相关的配置头文件        该目录下的asm目录有与CPU体系结构相关的头文件

8.Net        与网络协议相关的代码    各路协议的实现

9.Tools        生成Uboot的工具,如:mkimage,crc等等

Uboot编译分为两步

1.执行每种board相关的配置    如:make amdk_2420

2.编译生成uboot.bin文件        如:make CROSS_COMPILE=arm-linux-(指定正确路径)

--------------------------------------------------------------------------------

UBOOT基于单板机提供了丰富的命令集操作

UBOOT命令

printenv查看环境变量(相当全局变量?)

setenv 添加、修改、删除环境变量

1.setenv name value

set environment variable 'name' to 'value...'

2.setenv name

delete environment variable 'name'

saveenv保存环境变量

将当前定义的所有变量及其值存入flash中

--------------------------------------------------------------------------------

---------------------文件下载------------------------------------

tftp 通过网络下载文件     使用前,配置好网络

配置网络:1.setenv ethaddr 12:34:56:78:8A:BC

2.setenv ipaddr 192.168.1.1

3.setenv serverip 192.168.1.254  (tftp服务器的地址)

连接下载:tftp 32000000 uImage

把server(IP=环境变量中设置的serverip)服务目录下的uImage通过tftp读入到0x32000000处

md 显示内存区的内容

md[.b,.w,.l]address    如:md.w 1000000

mm[.b,.w,.l]address    如:mm.w 100000

mm 修改内存,地址自动递增    提供了一种互动修改存储器内容的方法,如果没有输入任何值,按回车内容保持不变,输入空格然后按下回车,结束输入

flinfo    查看Flash扇区信息

--------------------------------------------------------------------------------

protect Flash写保护  打开或关闭扇区写保护

用法:

protect off all        关闭所有扇区的写保护

protect on all         打开所有扇区的写保护

protect off start end     关闭从start到end扇区的写保护-----》protect off 0 1ffff(前一扇区减去1?)

protect on start end     打开从start到end扇区的写保护

--------------------------------------------------------------------------------

erase 擦除flash扇区

用法: erase start end    如: erase 30000 1efff

在使用cp命令向Nor型Flash写入数据之前必须先使用erase命令擦除flash

cp 数据拷贝

cp [.b,.w,.l]saddress daddress len

cp提供了一种内存与内存,内存与Flash之间数据拷贝的方法

如:cp.b 31000000 50000 d0000 即是将内存地址0x31000000处的数据(长度为0xd0000)拷贝到地址0x50000处(Flash中)

--------------------------------------------------------------------------------

执行程序

go 执行内存中的二进制代码,一个简单的跳转到指定地址

go addr[arg...]

start application at address 'addr',

passing 'arg' as arguments

bootm 执行内存中的二进制代码

bootm [addr[arg...]]       要求二进制代码有固定格式的文件头

boot application image stored in memory passing arguments 'arg...';

when booting a Linux kernel,'arg' can be the address of an initrd image

bdinfo    显示开发板信息  (可用于启动linux内核)

bdinfo命令将在终端显示诸如内存地址和大小、时钟频率、MAC地址等信息

这些信息在传递给LIUNX内核一些参数时可能会用到

设置自动启动

setenv bootcmd tftp 31000000 uImage \;bootm 31000000

saveenv

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,813评论 0 5
  • [TOC] Android 简介 Android 操作系统是基于Linux内核, Google使用Linux内核构...
    Joe_HUST阅读 8,864评论 0 9
  • 我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。...
    我是嘻哈大哥阅读 5,279评论 0 2
  • 1:InputChannel提供函数创建底层的Pipe对象 2: 1)客户端需要新建窗口 2)new ViewRo...
    自由人是工程师阅读 5,246评论 0 18
  • 我说了句谢谢,然后离开山的世界。本身是模糊的场景,现在有了意义。 其实这些天和山相处的日子里,我明白了蝉为什么噪在...
    李一十八阅读 265评论 0 2