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写?;? 打开或关闭扇区写?;?/p>

用法:

protect off all??? ??? 关闭所有扇区的写?;?/p>

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

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

protect on start end ??? 打开从start到end扇区的写?;?/p>

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

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阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

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