Linux驱动第二课:uboot

什么是Uboot

看到这个标题,以前没接触过Linux驱动的人肯定有一个疑问,什么uboot。在上次的启动流程分析中,我们了解到了BL2的功能是用来做一堆的初始化,然后搬运操作系统到DRAM中进行运行。严格的来说UBOOT就是专业的BL2。
开发板千千万万,所要引导的操作系统也多不可数,总不能在每用一个开发板就下载一个引导程序吧。
因此一个开源的项目bootloader诞生了,使用者能够根据自己的需要配置不一样的系统。那bootloader和u-boot又有什么关系呢,u-boot其实就是bootloader的一个分支。他和bootloader的关系类似与乌班图和linux的关系。

uboot的下载与移植

uboot是开源的,我们可以在网上直接进行下载。
uboot下载网站 链接: https://www.denx.de/wiki/U-Boot/WebHome
uboot的移植一般是较为困难的,将我们一般都是采用裁剪好的uboot来使用。
将u-boot解压安装之后我们先来分析以下u-boot的文件目录

  • arch
    架构文件夹,里面放着各种架构文件比如arm。

  • driver
    驱动文件夹,一些必要设备的驱动文件

  • net
    网卡驱动

  • board
    板载文件

  • boards.cfg
    记录uboot所支持的开发板

  • examples
    事例文件夹

  • fs
    支持的文件系统文件夹

  • include
    相关的头文件

  • sd_fuse
    烧写u-boot的工具

u-boot的编译

正如上文所说,u-boot针对的不是某一方开发板,他面对的是成千上万个开发板。
因此我们在编译u-boot的时候一定要告诉u-boot我们要使用的开发板。比如我们使用的是tiny-4412开发板,那么我应该这样编译

make tiny4412_config -j16

这样u-boot会自行配置成我们开发板所需要的
此时我们的makefile就可以使用了,就能够通过makefile直接对u-boot进行编译

make -j16

u-boot的烧写

我们已经知道u-boot是用来当作bl2来执行的,那么我们是不是将他直接烧录再我们sd卡的相应扇区就可以了?
我们先来查看以下我们生成的u-boot二进制文件的大小。
足足有271k。
这个大小不要说sd卡的第17扇区到第49扇区能不能放下,我们的iram的大小也只有256k的大小,根本无法运行啊。
u-boot的功能有一系列的初始化和搬运系统。其中他的初始化列表里面就有dram,iram虽然不够大,不够用可是我们的dram够啊,我能不能先执行一部分的u-boot,让这部分的boot来初始化我们的dram,初始化后的dram就能够使用了,之后我们将完整板的u-boot在d-ram中来运行,这样是不是就完美的解决了运存不够的问题。
有了思路,那么接下来就可以开始执行了。
我们首先将uboot的前14k制作成bl2。
制作工具mkbl2
将制作好的bl2下载到sd卡的bl2位置也就是第17扇区
之后我们再将我们完整版的u-boot下载到我们第49扇区。

u-boot的使用

u-boot已经安装好了,可是我们如何看到u-boot的界面呢?
开发过stm32的都知道我们在无屏幕下进行系统调试时往往要借用串口调试工具,他能将我们程序中的一些东西显现出来。linux也有这样一个工具。MobaXterm
下载安装mobaxterm后通过数据线链接计算机和开发板。调整相应的波特率,选定相应的串口进行链接此时mobaxterm就会将我们的u-boot界面具象出来。

u-boot的相关指令

  • reset
    重启指令
  • pri
    打印相关信息
  • set
    设置指令,设置u-boot的相关指令
  • save
    保存设置
  • fatinfo
    查看分区信息
  • fatls
    查看当前文件夹目录
  • go
    跳转到某个地址执行程序
  • bootm
    跳转到某处运行内核。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值