uboot基础

为什么需要uboot

        嵌入式linux的启动与android启动阶段相同,上电后开始执行BootLoader(bootloader的种类有很多但99%都是使用的uboot),uboot初始化ddr和flash,将flash中的系统(OS)读取到ddr中,再跳转到ddr中启动OS,完成后uboot就停止了。

uboot到底要干什么

        自己要能启动,所以uboot以汇编开始,后去构建c的环境;

        终极目标就是启动操作系统内核,并给内核传参,由于两则工作的时间段不一样,在内核启动时,uboot已经停止,不能直接传参,因此两则共同约定了一片内存空间,boot将参数放在约定的内存中,等内核启动后就到约定的地方去取,这类参数主要是用来控制内核的启动的一些细节东西。

        部署计算机系统(通过boot把kernel、footfs、等烧录到flash中,如其中的fasboot功能);

        部分硬件管理,如操作flash和ddr、显示器、键盘……;

        提供人机交互的命令行;

uboot的发展历程

        uboot最早是一个德国人发明的,是他做自己的项目时需要用到bootloader,然后就写了个uboot,并将源码共享在网上,被很多人使用的同时对uboot进行完善,逐渐在行业里普及,最终生产芯片的厂家也开始支持uboot,所以uboot在bootloader使用越来越多,以至于目前大家的bootloader基本都使用uboot。

uboot的版本号

        早期使用数字表达版本如uboot1.3.4;现在是使用日期标识版本如 boot-2016-06或boot-2016-06-rc1。带有rc的是临时版本,没有rc的是正式版本。

uboot的生命周期

        始于内存,结束于内核。芯片内置代码如BL0-BL1将uboot搬到内存中,再跳转到内存执行。

uboot下的环境变量

        环境变量可以认为是操作系统的全局变量,是uboot运行时的配置文件,环境变量是在flash中单独定义了一段空间专门用于存储环境变量,由于存储在flash中,所以掉电后数据仍然能保存,这点与全局变量不同,

uboot常用命令

print

print打印所有环境变量;

print name1 name2 name3打印name1 name2 name3 环境变量

set

可带参数,作用是修改环境变量的值;修改后需要saveenv保存;

save

无参数,作用是保存环境变量到flash,修改环境变量时只是内存中的环境变量,不是flash,所以需要保存;环境变量的保存时所有的覆盖保存。

bdinfo

无参数,打印所有板载信息

arch_number = 0x00000998      //机器码

env_t       = 0x00000000

boot_params = 0x30000100        //传参给kernel的内存地址

DRAM bank   = 0x00000000        //第0片DRAM(DDR)

-> start    = 0x30000000        //DDR起始地址

-> size     = 0x10000000        //DDR大小

DRAM bank   = 0x00000001     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值