bootloader之u-boot
来源:互联网 发布:狗讨厌什么味道 知乎 编辑:程序博客网 时间:2024/05/23 21:31
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 内存地址 跳到某个内存地址去执行
- bootloader之U-boot
- bootloader之u-boot
- BootLoader 之U-Boot学习.
- u-boot bootloader 代码学习之关键
- 移植U-Boot之BootLoader简介
- bootloader 之U-Boot启动trace
- 第三篇 Android Bootloader 之 U-boot
- Bootloader U-boot启动
- bootloader---24.u-boot-2010.06-rc1移植之4saveenv
- 第二篇 Android Bootloader 之 U-boot 概述
- Bootloader及u-boot简介
- U-BOOT环境变量实现 - BootLoader
- Bootloader及u-boot简介/u-boot系统启动流程
- 【Bootloader】U-BOOT全线移植分析系列之四--U-boot如何引导Linux内核启动?
- 【Bootloader】U-BOOT全线移植分析系列之四--U-boot如何引导Linux内核启动?
- 【Bootloader】U-BOOT全线移植分析系列之四--U-boot如何引导Linux内核启动?
- Bootloader/u-boot的启动模式
- 20、Bootloader(4) -- U-Boot第二阶段分析
- mysql下使用update set from select
- 点击div之外的地方,div隐藏
- javaEE 6 规范
- Jenkins进阶系列之——13修改Jenkins权限控制
- 什么是高内聚、低耦合
- bootloader之u-boot
- Qt线程---链接信号与槽的connect
- 1.SimpleFactory-简单(静态)工厂模式
- 2.FactoryMethod-工厂方法模式
- 【积累库】--Java 内部类(静态内部类)作用(198)
- 3.AbstractFactory-抽象工厂模式
- 4.Singleton-单例模式
- 5.Builder-建造者模式
- 6.Prototype-原型模式