u-boot 简介
在嵌入式开发中bootloader称为启动加载器,是必不可少的功能部件。它的功能是在系统上电后初始化
最基本的硬件,加载linux内核到内存中并引导内核,通常还支持一些其他的功能,如tftp下载功能等。
常用的bootloader有u-boot,vivi等。
系统上电之后,需要一段程序来进行初始化:关闭看门狗,设置系统时钟,初始化存储控制器(让内存
工作起来),设置堆栈(即设置内存),搬运代码(os)到内存中等。如果它能将操作系统内核复制到
内存中运行,无论从本地(flash),还是从远端(网络),就称这段程序为bootloader。
bootloader 的启动分为两个阶段:
stage1:
1,初始化基本硬件。
2,把bootloader搬运到内存中。
3,设置堆栈,将BSS段清零。
4,跳转到第二个阶段。
stage2:
1,初始化本阶段要用到的硬件。
2,读取环境变量。
3,继续执行,
用户如果键入任意键 ,则进入u-boot 交互模式,等待用户指令。
设定时间内没有键入,则加载内核(从哪里加载?),并启动内核。
简单地说,bootloader就是这么一小段程序,它在系统上电时开始执行,初始化硬件设备,准备好软件环
境,最后调用操作系统内核。同时它也可以增加一些功能,如网络功能,从pc上通过串口或网络下载文件
,烧写文件,将flash上压缩的文件解压后再运行等。
bootloader种类繁多如下图:
u-boot制作
1,获取uboot源码,找供应商或者开源网站下载。
2,配置uboot,阅读相关文档进行配置,例如配置支持那种类型的开发板等。make ting_config
3,编译uboot, 如make -j8 编译完成得到可执行文件uboot_name.bin
下载uboot_name.bin到SD卡中
可以将这个下载过程写成一个脚本,然后执行这个脚本将uboot_name.bin下载到sd卡中。
测试uboot
1,把sd卡插入开发板sd卡槽,连接好串口线,开发板电源等。
2,打开SecureCRT串口终端,给开发板上电。
如果正常的话,串口会打印一些列信息,其中有一个hit any key to stop autoboot: 0 。这个是uboot倒计时,如果为0了,会
自动加载操作系统内核到DRAM中,然后启动操作系统。用户可以在倒计时为0前按下键盘上的任何一个按键终止倒计时,这
样uboot 会进入到命令行模式,这个模式下,可以使用uboot给我们提供的很多开发工具进行软件调试。
uboot常用命令
如 help命令 显示本个uboot 所支持的所有命令,以及具体命令的使用方法。如果help 后面接相应命令则显示,改命令相关信息。
hisilicon # help printenv
printenv - print environment variables
hisilicon # setenv serverport 8082 设置变量serverport的值为8082
hisilicon # setenv serverport 删除变量serverport
hisilicon # md 内存地址 显示内存地址中的内容
hisilicon # go 内存地址 跳到某个内存地址去执行