系统移植-uboot概述和使用

目录

一、uboot概述

二、SD卡启动盘制作

三、uboot使用-uboot命令


一、uboot概述

1. uboot首先刷到SD卡中,对软硬件初始化,再将外存中linux、dtb、rootfs搬到RAM。

2.Bootloader

        在操作系统运行之前运行的一小段代码用于软硬件环境的初始化。为操作系统的加载和运行做准备(本身不是操作系统)

2.1Bootloader基本功能

初始化软硬件环境  、 引导加载linux内核 、 给linux传参(linux运行时需要的参数由Bootloader提前准备) 、执行用户命令 (类似于shell命令)

注:bootloader是启动引导程序的统称,嵌入式lunux中常用的bootloader是uboot

二、SD卡启动盘制作

SD卡存储结构

选择SD卡启动,需要将uboot放入第一个扇区中。.

过程:

1、将uboot镜像拷贝到家目录下 (拖拽 mv 文件 . (.表示当前目录))

2.制作一个 512 字节的空镜像

3.将uboot追加到zero.bin之后生成win-u-boot-fs4412.bin,目的是为了将uboot刷到SD卡的第一个扇区,zero.bin刷到0扇区作为分区表

4.制作一个1M(uboot大小)的空镜像(用于擦除SD卡中原有的数据)

5.win-u-boot-fs4412.bin和clear.bin拷贝到windows桌面,通过WIN32DiskImager将.bin烧录到SD卡中

6.开发板上电,烧录成功

三、uboot使用-uboot命令

1.两种模式:
自启动模式

    uboot启动后若没有用户介入,倒计时结束后会自动执行自启动,环境变量(bootcmd)中设置的命令(一般作加载和启动内核)

交互模式

    倒计时结束之前按下任意按键uboot进入交互模式交互模式下用户可输入uboot命令

2.uboot命令

2.1 uboot帮助命令

help

    查看uboot支持的所有命令

help 命令

    查看当前命令的使用方法

2.2  环境变量命令
printenv

    打印uboot中所有的环境变量

setenv

    设置指定的环境变量(新的保存到了内存RAM中,断电后上电,更改的环境变量还是未更改之前的)格式:setenv 环境变量 环境变量的值 

saveenv

    保存所有环境变量到EMMC中(长久保存)

2.3常用环境变量

ipaddr

    ubootIP地址(  ubuntu和开发板通信,uboot和ubunt需要在同一个网段。

serverip

    服务器的IP地址(即ubuntuIP 

bootdelay

    进入自启动模式之前倒计时的秒数

3.uboot网络传输命令

loadb

    通过Kermit协议下载文件到指定的内存地址 (串口传输)

        loadb  地址

tftp(简单文本传输协议

    通过tftp协议下载文件到指定的内存地址(一般为服务器地址,可以省略

        tftp  地址  文件名 

注:使用tftp之前要配置好网络及tftp服务器

1>ubuntu虚拟网络适配器-桥接/网络适配器-桥接/网卡-无线网卡

2>.重启tftp服务器

3>.开发板和ubuntu保证同一网段:

ipaddr:在同一网段,serverip:ubuntu的ip

4>.硬件连接

5>.放入到/tftpboot的文件需要高权限,保证下载顺利 :$ sudo chmod  777 文件

4.uboot存储器访问命令

 mmc read

    将EMMC中指定扇区中的内容读取到内存中指定的地址(读取外存内容到内存中)

  mmc read  <addr> <blk#> <cnt> (重要)

  addr:  内存地址

  blk#:  EMMC中的扇区编号(从哪块开始读)

  cnt:  读取的扇区的个数(读到哪里结束)

 mmc write

    内存中指定地址中的内容写入到EMMC中指定的扇区(内存中内容写入到外存)

        mmc write <addr> <blk#> <cnt> (重要)

        例如:mmc write 0(0表示EMMC) 0x410000000 0x800 0x1(将0x41000 0000 地址中的内容写入到EMMC中800号扇区,一块大小)

5.uboot自启动环境变量(重要)

 bootcmd

    自启动的环境变量

    该环境变量可以设置成一到多个uboot命令的集合(若有多个使用 \; 分割)

    自启动模式下uboot会按照bootcmd中命令的顺序逐条执行

  eg:

      setenv bootcmd tftp 40008000 interface.bin\;go 40008000

      setenv bootcmd mmc read 0 0x40008000 0x800 0x1\;go 40008000

(后续可以通过bootcmd在开发板上电之后自动linux、跟文件系统,文件树加载到内存中并运行)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值