uboot和bootloader有啥区别,reboot to bootloader有什么用_IT教学网
片内的ram用来存储启动代码,在2440初始化sdram之前,代码就在片内ram中运行。
片内ram装载的是norflash中的内容,即u-boot。
uboot放在norflash里,nandflash就存放的操作系统。
所以norflash相当于电脑的bios,nanflash才是硬盘。sdram就是内存了
uboot是一级启动代码,即bootloader,用来加载操作系统(nandflash)到sdram并且执行,当然uboot还能格式化nandflash和安装新系统的功能。
谁能讲讲uboot和breed区别?
2种都是BootLoader,即开机初始化时加载的最小系统,用于识别基础硬件和设置环境信息,引导固件的基础。
刷第三方系统,只要支持相应的BootLoader引导的系统就可以刷,现在的不死uboot和breed集成了httpd,即可用从web界面刷新。也有的是需要TFTP刷。一些没有校验的机器或者固件修改过固件头的可以直接从现有系统直接web更新。
但是不同机型的方式不一样,找你对应机型的教程吧。
请问bootloader、u-boot和linux内核的区别和关系是怎样的?
bootloader是取代mbr功能的,可以看成mbr的加强.
u-boot是把usb盘做成启动盘的,linux内核就是linux系统的核心,你用的linux就是在内核基础上扩展了shell和应用程序.
eboot uboot 与 bootloader是什么意思
bootloader是启动加载的意思,就是启动嵌入式系统等启动操作系统的软件的统称,bootloader是统称,u-boot是其中的一种。就像台式机所说的“操作系统”和“windows xp”的关系一样。
【整理】BIOS、BootLoader、uboot对比
BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。
BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
BIOS,Basic Input Output System 基本输入输出系统,意思是主板级别的一个小系统。
负责系统(主要是主板)的硬件初始化,例如CPU,内存,硬盘,键盘,显卡,网卡等等硬件的初始化。初始化是BIOS的主要工作。
传统的个人电脑上面BIOS会有一个int19 软件中断功能,在初始化完成后,BIOS会进入int19中断,寻找启动介质,如软盘,光盘,硬盘,flash或者网络等等,读取第一个扇区的内容到内存的0000:7C00处,跳入这个地址执行。
这里int19就是一个bootloader,启动引导器。所以BIOS具有Boot Loader的功能。当然,目前的BIOS功能已经被扩充了很多,例如电源管理方面的ACPI接口,USB驱动,PXE网络引导功能,硬盘加密,TPM接口,BIOS配置界面,BIOS自动恢复等等。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)