每当我们学习任何编译语言之前,第一节课都是介绍我们要学习的是什么,以及编译语言和工具,最后写一个小程序编译并运行就算入门,也就是所谓的“Hello, world!”。这里也不例外,带想学习UBoot的小伙伴学习UBoot的编译和烧写(主要是记录一下个人学习的过程),也就是UBoot的“Hello, world!”。

首先我们要弄明白是什么是U-Boot,注意我们常说的UBoot就是U-boot。

一、准备材料

可以根据自己的需要准备相应材料,以下是我自己使用的:

开发环境:VMware

操作系统:ubuntu

开发版:湃兔i2S-6UB

烧写工具:SD卡

二、环境配置

学习ARM架构的移植和应用开发主要用到的工具是交叉编译工具,所以需要在ubuntu安装配置交叉编译链工具。

交叉编译器的安装配置https://www.cnblogs.com/jzcn/p/14889438.html

注意:安装交叉编译器时需要注意版本号,有的开发版会提供自己更改的交叉编译器,我使用的版本号是6.2的,如下图所示:

三、下载UBoot文件

这里主要是下载开发版对应的UBoot文件,每个开发版都有对应的下载地址,一般都会在相应的学习资料里,如果没有的小伙伴可以找相应的店家。

这里是湃兔的下载地址http://i2som-zh.oss-cn-beijing.aliyuncs.com/i2SOM-iMX-uboot-904f545.tar.gz

下载完成后将文件拷贝到linux系统下进行解压,解压后会的目录如下图所示:



注意:编译时一定要在当前路径下才能编译

四、编译UBoot

1.清理项目工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

2.设置UBoot的默认配置文件

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- i2som_imx6ull_14x14_emmc_defconfig

编译完成后会生成“.config”,如下图所示:



注意:湃兔的默认配置文件是“i2som_imx6ull_14x14_emmc_defconfig”,不同厂商的默认配置文件有所不同,可与根据相应的资料查看。如湃兔官网的说明,如下图所示



3.编译UBoot项目工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

编译完成后会生成u-boot.imx文件,如下图所示:



注意:到这里UBoot的编译就算完成了,如果细心的小伙伴就会发现,为啥我的命令会长一些。每个指令中都用“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”,这是设置编译器为交叉编译器。

以后在做UBoot移植时会经常用到这些编译指令。为了使编译指令简介一些,可以在Makefile文件中添加ARCH和CROSS_COMPILE的配置,以后就可以编译时就可以省掉命令中的“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”部分,如下图所示:

四、烧写UBoot

将编译好的u-boot.imx拷贝到SD卡中,SD卡的格式是VFAT格式,不然开发版会识别不了。拷贝完成后将SD卡插入开发版,然后进入UBoot执行更新命令。

湃兔通过SD卡更新UBoot命令

update uboot mmc 0 1 u-boot.imx

更新过程如下图所示:



更新完成后,可以通过启动时的第一行日志的编译时间观察是烧写成功,如下图所示:



到这里“Hello, world!”也算是完成,有兴趣的小伙伴可以进行UBoot的移植学习了。

注意:每个厂商的烧写过程可能不一样,使用不同开发版的小伙伴可以去相应的学习资料中查找自己的烧写过程。

五、参考资料

湃兔资料:https://wiki.i2som.com/pages/viewpage.action?pageId=65576

原子哥的视屏教程:https://www.bilibili.com/video/BV12E411h71h?p=4&share_source=copy_web

UBoot的编译与烧写的更多相关文章

  1. 1)uboot的编译和烧写

    购买荔枝派ZERO已经将近一个星期了,由于官方资料不够完整一直没有任何进展.经过今夜近三个小时的折腾终于将UBOOT烧写成功,现将过程记录如下: 1)获取官方uboot 源码 : git clone  ...

  2. 分享tiny4412,emmc烧录u-boot, 支持fastboot模式烧写emmc【转】

    本文转载自:http://www.arm9home.net/read.php?tid-80810.html 分享tiny4412,emmc烧录u-boot, 支持fastboot模式烧写emmc   ...

  3. uboot下emmc内容烧写(拷贝)步骤

    一.目的:嵌入式开发板,通过emmc上的内核文件加载启动linux操作系统,以及存放其他程序文件.需要将所需文件先写入emmc中. 二.总体步骤是:uboot启动后,进入linux下,将emmc分区并 ...

  4. 在Linux下制作一个磁盘文件,在u-boot 阶段对emmc 烧写整个Linux系统方法

    在Linux 下制作一个磁盘文件, 可以给他分区,以及存储文件,然后dd 到SD卡便可启动系统. 在u-boot 下启动后可以读取该文件,直接在u-boot 阶段就可以做烧写操作,省略了进入系统后才进 ...

  5. Tiny210编译和烧写u-boot步骤

    当有多个交叉编译器是,不方便设置环境变量时,可以在编译命令中指定交叉编译器,具体如下: make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolschain/ ...

  6. 分享tiny4412,emmc烧录u-boot, 支持fastboot模式烧写emmc

    转载 : http://www.arm9home.net/read.php?tid-83474.html 本人是第一次在此发帖,希望大家多多支持,发帖目的是为了分享,分享的目的是传递开源的精神.Tin ...

  7. uboot从SD卡烧写内核和文件系统

    环境:ubuntu 13.04一.首先制作sd启动盘: 插入SD卡    sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/m ...

  8. 在windows 下使用eclipse进行编译和烧写

    eclipse IDE是一款开源的前端编程软件,它提供了编写,编译和调试ESP-IDF项目的图形集成开发环境. 首先在https://www.obeo.fr/en/eclipse-download?I ...

  9. eps-07s,编译及其烧写

    项目导入 清理并编译 会出现两个bin文件,然后烧写 修改红框中的东西,然后返回操作界面,进行一键烧写 硬件接线图 设备调试

随机推荐

  1. 教你用SQL实现统计排名

    前言: 在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名.排名也有多种排名方式,如直接排名.分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题. 创 ...

  2. 实施CRM系统后 企业客户服务的改变

    通过实施CRM客户管理系统,企业的竞争力和盈利能力得到大幅提高.在这个过程中,客户服务不仅能够持续的满足客户的需求,还能够促进客户与企业建立长期的互惠互利的良好客户关系,这也为企业赢得了更多的商机和利 ...

  3. 关于在pycharm上使用git(保姆级别教程)

    文件 → 设置 先在pycharm上面登录github账号,版本控制 → GitHub → '+' → 通过GitHub登录 会自动跳转至浏览器,然后点击"Authorize in GitH ...

  4. [bug] xshell:退格键乱码

    参考 https://jingyan.baidu.com/article/77b8dc7fd52c576174eab6f6.html

  5. [刷题] 454 4Sum II

    要求 给出四个整型数组ABCD,寻找有多少 i j k l 的组合,使得A[i]+B[j]+C[k]+D[l]=0 ABCD元素个数均为N,0<=N<=500 示例 输入: A = [ 1 ...

  6. 性能工具 stream 最新版本5.10 The STREAM benchmark

    官网下载最新性能工具 stream 最新版本5.10 https://github.com/jeffhammond/STREAM 官网下载最新性能工具 stream 最新版本5.10   http:/ ...

  7. Linux 操作系统(一)命令&用户&权限

    以下实例均在Centos7下验证 Centos7 查看命令帮助 man xxx 常用命令 ls / cd - #切到上次目录 cd #回家 cat cat f1 f2 cat f1 f2>f3 ...

  8. Docker无法正常启动的原因及解决办法

    一.Docker启动异常表现: 1.状态反复restaring,用命令查看 $docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS ...

  9. springboot整合JDBC出现Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.

    今天使用springboot整合JDBC的使用,开始使用的是 com.mysql.jdbc.Driver驱动 结果运行出现此异常 那我们根据提示要求来修改即可 把驱动改成最新的com.mysql.cj ...

  10. 27.Qt Quick QML-State、Transition

    1.State所有组件均具有默认状态,该状态定义对象和属性值的默认配置.可以通过向States属性添加State组件来定义新状态,以允许组件在不同配置之间切换.许多用户界面设计都是由State状态实现 ...