参考:什么是U-Boot以及如何下载U-Boot源码?
作者:一只青木呀
发布时间: 2020-10-20 11:05:59
网址:https://blog.csdn.net/weixin_45309916/article/details/109176510

目录

  • 前言
  • 系统的启动过程
  • uboot简介
  • uboot源码下载
    • 选择下载方式(我这里以FTP为例)
    • 选择下载版本
  • SecureCRT启动显示log

前言

在上一篇中我们学习了如何进行I.MX6U 的裸机开发,通过21 个裸机例程我们掌握了I.MX6U 的常用外设。通过裸机的学习我们掌握了外设的底层原理,这样在以后进行Linux 驱动开发的时候就只需要将精力放到Linux 驱动框架上,在进行Linux 驱动开发之前肯定需要先将Linux 系统移植到开发板上去。如果学习过UCOS/FreeRTOS 应该知道,UCOS/FreeRTOS 移植就是在官方的SDK 包里面找一个和自己所使用的芯片一样的工程编译一下,然后下载到开发板就可以了。那么Linux 的移植是不是也是这样的,下载Linux 源码,然后找个和我们所使用的芯片一样的工程编译一下就可以了?很明显不是的!Linux 的移植要复杂的多,在移植Linux之前我们需要先移植一个bootloader 代码,这个bootloader 代码用于启动Linux 内核,bootloader有很多,常用的就是U-Boot。

移植好U-Boot 以后再移植Linux 内核,移植完Linux 内核以后Linux 还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。所以U-Boot、Linux kernel 和rootfs 这三者一起构成了一个完整的Linux 系统,一个可以正常使用、功能完善的Linux 系统。在本篇我们就来讲解 U-Boot、Linux Kernel 和rootfs 的移植,与其说是“移植”,倒不如说是“适配”,因为大部分的移植工作都由NXP 完成了,我们这里所谓的“移植”主要是使其能够在I.MX6U-ALPHA 开发板上跑起来。

在移植U-Boot 之前,我们肯定要先使用一下U-Boot,得先体验一下U-Boot 是个什么东西。I.MX6U-ALPHA 开发板光盘资料里面已经提供了一个正点原子团队已经移植好的U-Boot,本章我们就直接编译这个移植好的U-Boot,然后烧写到SD 卡里面启动,启动U-Boot 以后就可以学习使用U-Boot 的命令。

系统的启动过程

Linux 系统要启动就必须需要一个 bootloader (裸机程序)程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设(前面学习了I.MX6ULL是内部BOOT ROM初始化DDR的,但是其他大部分ARM架构都是bootloader初始化DDR),然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Windows 的关系一样, bootloader 就相当于 BIOS。所以我们要先搞定bootloader,很庆幸,有很多现成的 bootloader 软件可以使用,比如 U-Boot、 vivi、 RedBoot 等等,其中以 U-Boot 使用最为广泛,为了方便书写,本书会将 U-Boot 写为 uboot。

uboot简介

对比一下之前学习的BOOT ROM做的事情:ARM(IMX6U)裸机之I.MX6ULL启动头文件(bin里面)的详解

类似于我们电脑X86的BIOS。
SOC厂商,半导体厂商,比如NXP
开发板的厂商,比如正点原子
关于SOC:
这个词是System on Chip的缩写,意为片上系统,是将CPU、GPU、内存、基带和GPS模块整合在一起的解决方案,是将系统运行所需的芯片整合在一块芯片上。
我们熟知的骁龙855、苹果的A12、华为的麒麟980和三星的猎户座都是这个片上系统的代号,并非单指某个CPU或是GPU,相反,这些片上系统内其实有自己的CPU和GPU编号。比如A12的GPU是自研的G11P,骁龙855的GPU是Adreno 640。

uboot 的全称是 Universal Boot Loader, uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、 USB 等高级功能。 uboot 官网为 http://www.denx.de/wiki/U-Boot/, 如图所示:

uboot源码下载

我们可以在 uboot 官网下载 uboot 源码,点击上图中的“Source Code”,打开如下图所示界面:

选择下载方式(我这里以FTP为例)

选择下载版本


上图就是 uboot 原汁原味的源码文件,目前最新的版本是 2020.10。但是我们一般不会直接用 uboot 官方的 U-Boot 源码的。 uboot 官方的 uboot 源码是给半导体厂商准备的,半导体厂商会下载 uboot 官方的 uboot 源码,然后将自家相应的芯片移植进去。也就是说半导体厂商会自己维护一个版本的 uboot,这个版本的 uboot 相当于是他们定制的(比如恩智浦)。既然是定制的,那么肯定对自家的芯片支持会很全,虽然 uboot 官网的源码中一般也会支持他们的芯片,但是绝对是没有半导体厂商自己维护的 uboot 全面。

SecureCRT启动显示log

拨码开关拨到从EMMC启动,因为前面将系统烧写进了EMMC里面,板子上电启动,SecureCRT显示启动log信息。


什么是U-Boot以及如何下载U-Boot源码相关推荐

  1. Ubuntu 16.04下载编译Android11源码

    Ubuntu 16.04下载编译Android11源码 Ubuntu 16.04下载编译Android11源码 1. 硬件要求 2. 设置Linux构建环境 1. 安装所需的软件包 2. 安装Open ...

  2. 在Ubuntu 14.04 64bit上下载更新x265源码

    x264,x265,vpx这三个开源的视频编码器可以说是当今"最火"的视频编码器.x264现在占据着H.264视频编码器的半壁江山:x265则是目前实现H.265标准最好的开源视频 ...

  3. 下载.Net 4源码

    DataGrid枚举值更新错误的原因 作者:周 金根  来源:博客园  发布时间:2010-06-09 18:10  阅读:2287 次  原文链接  [收藏]   OpenExpressApp之前使 ...

  4. Asp.Net Web Api 2 实现多文件打包并下载文件示例源码

    前言 最近由于工作和个人事务,站点也好久没更新了,但这并不影响我对.NET的热情.站点的更新工作还是得想办法抽时间来完成的. 提要 今天利用中午的时间来写一篇关于Asp.Net Web Api下载文件 ...

  5. [HOW TO]-下载android官方源码

    介绍下载android官方源码的方式: 使用每月更新的初始化包 传统初始化方法 1.使用每月更新的初始化包 下载初始化包->repo sync wget -c https://mirrors.t ...

  6. Linux下载安装一个源码包

    下载一个安装包除了yum和rpm之外我们还可以下载源码包 编译并安装 首先下载所有的源码包一定要去官网,为了就是防止源码包被第三方编译 例如我们今天安装一个httpd的源码包,也就是经常说的apach ...

  7. 使用代理下载android系统源码和SDK

    ** 使用代理下载android系统源码和SDK ** 谷歌被墙后,如何下载android源码和sdk?使用代理.步骤如下: 寻找可用代理 先在这里找一个可用的代理服务器:http://www.xic ...

  8. Maven引入依赖后自动下载并关联源码(Source)

    http://justke123.iteye.com/blog/981627 好多用 Maven 的时候会遇到这样一个棘手的问题: 就是添加依赖后由于没有下载并关联源码,导致自动提示无法出现正确的方法 ...

  9. 一个下载Google code源码的 绿色、迷你工具 MiniSVN v1.0

    一个下载Google code源码的 绿色.迷你工具 MiniSVN v1.0 想下载Google code中的源码 不需要装各种软件,只需要一个小工具即可! 如何使用? 访问一个谷歌开源项目网站,比 ...

  10. PHP付费资源下载交易平台网站源码

    简介: PHP付费资源下载交易平台网站源码可用于虚拟商品出售 安装搭建介绍: 环境:PHP5.3,MYSQL 数据库配置修改文件:\data\config.php 后台:域名/admin 账号:adm ...

最新文章

  1. MySQL字符集编码
  2. 高并发高负载网站的系统架构
  3. 开发者应具备的产品设计意识
  4. 把 分数化为循环小数 和 把循环小数化为分数 的方法
  5. 判断一个单链表中是否有环
  6. mysql环形复制的弊端_Docker+阿里云centos7+MySQL主从环形复制踩坑记
  7. 易到用车:服务器遭到连续攻击 被索要巨额比特币
  8. 字符设备驱动(四)按键中断
  9. uni.startPullDownRefresh 只能执行一次的解决方案
  10. 2287: 【POJ Challenge】消失之物
  11. 用过http api 发送邮件
  12. 计算机二级关系模式知识点,2013年计算机二级VFP关系模式知识点详解
  13. aliez歌词_请问aLiez完整版中文 +罗马音歌词
  14. 四位数中有几个七C语言,用4、0和7可以组成(    )个不同的三位数,其中最大的数是(    ),最小的数是(     )。——青夏教育精英家教网——...
  15. 一种简单的MOS管直流电机驱动电路
  16. java 单位转换的程序_Java 实现长度单位换算
  17. ETCD教程(一) 通过docker安装etcd集群
  18. 云豹短视频app源码中,标签选择功能的实现
  19. PHP 十六大魔术方法学习
  20. 综合案例 -- 北京租房数据统计分析

热门文章

  1. 甲骨文称 Java 序列化的存在是个错误,计划删除
  2. mysqlpump 备份文件压缩对比
  3. 【SMTP 补录 Apache服务】
  4. windows mac 安装lua
  5. 2012年终总结 二
  6. [转载]一个游戏程序员的学习资料
  7. API设计原则 - Qt官网的设计实践总结
  8. 史陶比尔与机器人之父
  9. OpenCV坐标体系的初步认识
  10. h3c 虚拟服务器 下一跳,H3CNE 312题和313题 直连路由静态路由的下一跳问题