三、uboot简单介绍

1、boot loader的介绍

        操作系统的启动,首先我们要知道,操作系统在开发板上电之后是存在存储器里面的EMMC/SD卡,而操作系统是跑在内存中的,这时我们需要一个东西,将我们的操作系统搬运到内存中,这个东西就是boot loader,它又叫做系统的引导程序。

2、uboot和bootloader的关系

        bootloader仅仅是引导程序的一段核心的代码

        uboot就是bootloader的一个发行版

        类似与linux和ubuntu的关系一样

        https://u-boot.readthedocs.io/en/latest/(自行了解)

3、uboot的重要文件夹

        fs:uboot支持的文件系统

        include:编译需要的头文件

        arch:支持的架构   ----芯片架构相关的代码

        board:板级资源    ----开发板资源相关的代码

        driver:驱动相关的文件夹

        sd_fuse:工具相关的文件夹

4、uboot的编译和烧写

        1)编译的步骤:

                1:将压缩包放入虚拟机

                2:在虚拟机里解压压缩包(路径自定义--建议不要有中文路径)

                        tar xvf uboot_tiny4412-sdk1506.tar.bz2

                3:跳转到解压后的目录

                        执行清理动作

                        make clean:

                                清理编译之后产生的东西,并不会清理配置文件

                        make distclean:

                                将所有的东西  包括配置文件都清理,恢复出厂设置

                4:做开发板的选型

                        make Tiny4412_config

                5: 编译uboot

                        make

        2)uboot的烧录

                1:生成bl2的程序

                        在sd_fuse文件夹里执行

                        ./mkbl2 u-boot.bin bl2.bin 14336

                2:烧录BL2(BL1已经烧录过了)

                        sudo dd iflag=dsync oflag=dsync if=./bl2.bin of=/dev/sdb seek=17

                3:烧录uboot

                        sudo dd iflag=dsync oflag=dsync if=./u-boot.bin of=/dev/sdb seek=49

                4:烧录向量表

                        sudo dd iflag=dsync oflag=dsync if=./E4412_tzsw.bin of=/dev/sdb seek=705

5、 uboot的命令

  1. uboot环境变量:
    • printenv、print、pri打印全部变量
    • set、setenv:新增、修改、删除环境变量
      1. 新增#set 环境变量名 环境变量值
      2. 删除#set 环境变量
      3. 修改#set 环境变量名 新的环境变量
    • save 保存环境变量(如果不保存重启后无效)
    • reset 重启
  2. 常用命令:
    • version   --查看版本
    • ?或者help  打印支持所有的命令
    • ?XXX命令  --打印XXX命令的使用规则
    • ping  --测试网络连通性
    • loady  使用串口下载代码到内存   loady 0x02023400/go 地址
    • md 查看内存数据md.b/w/l  分别代表字节/字/四字节
    • bdinfo  查看配置信息
    • fatinfo  查看指定设备fat的分区信息
      1. fatinfo <interface>  <dev[:part]>
        1. interface  --mmc(MMC或SD,emmc,usb)
        2. dev :设备编号
        3. 设备分区号,可选
    • fatload:(重点)
      1. 从启动介质里下载内容到内存列
      2. fatload mmc [存储介质的标号]:[存储介质的分区号] [内存里的地址] [要下载的文件] [要下载文件的大小]
      3. fatload mmc 0:1 0x02023450 images/FriendlyARM.ini 3072

               10.read :从存储介质读取一段代码到内存里

                        movi read kernel 0 40008000

                        他的意思就是从0号存储介质(sd卡)读取内核到内存里的 0x40008000位置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值