bootloader之u-boot

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 内存地址                                              跳到某个内存地址去执行

猜你喜欢

转载自blog.csdn.net/meiyoudao_jiushidao/article/details/71514591