目录

编写shell脚本

修改MakeFile文件

重命名shell脚本

添加默认配置文件

修改默认配置文件

准备需要的板级文件夹

重命名.C文件

修改Makefile

修改imximage.cfg配置文件

修改Kconfig文件

修改MAINTAINERS 文件

修改uboot图形配置界面

编译自己的uboot

使用的开发板是正点原子IMX6U-MINI  EMMC512M的开发板,这个板子也是移植的NXP官方uboot,所以这里就直接从NXP官方的ubbot移植。

这里所说的移植,其实不是自己编写驱动文件等,只是简单的将官方uboot中的相关配置文件和文件名修改为自己的名字而已。

首先在Ubuntu系统中新建一个文件夹存放自己要移植的uboot系统。

使用ftp工具将NXP官方的uboot压缩包发送到Ubuntu系统中uboot文件夹中。

将uboot压缩包拷贝到uboot文件夹中,这里面的alientek_uboot文件夹是正点原子移植后的uboot。

在boot文件夹中解压uboot压缩包

tar -vxif uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

解压完成后就会将uboot解压到一个文件夹中

将解压后的这个文件夹重命名。

将文件夹重命名为my_uboot,然后就可以删除ubbot的压缩包了。

使用cd命令进入到uboot文件夹

首先可以编译一下官方的uboot,验证一下自己下载的系统是否正常。

编写shell脚本

新建一个shell脚本。

输入以下内容

#!/bin/bash

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

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

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- V=1 -j4

V=1 表示显示编译的过程,如果不想显示编译过程,就可以不要V=1。

这里最后的-j4 指的就是使用4核编译,自己的电脑有几核就设置为几。

电脑是几核可以在任务管理器里面查看

CPU使用记录那里有几个小窗口电脑就是几核的,这里有8个,就代表电脑是8核。创建虚拟机的时候,给虚拟机分配了一半,所以虚拟机就是4核。

给shell脚本设置可执行权限

运行shell脚本

编译完成

说明下载的官方uboot的完整的。

修改MakeFile文件

由于shell脚本中第一行命令时清除编译生成的文件,如果自己修改过内核后,再次执行shell脚本,就会将自己的设置内容也清理掉。所以如果修改过内核后,就不能使用清理命令,要重新编译就只能执行后面两句命令。可以在shell脚本中屏蔽掉第一句命令,也可以直接输入make命令来编译,但是在输入make命令的时候,还需要指定系统架构ARCH和使用的编译器CROSS_COMPILE的值。为了方便操作,可以直接在Makefile文件中将这两个值写死。

打开Makefile文件

在250行添加

ARCH = arm

CROSS_COMPILE = arm-linux-gnueabihf-

保存退出,下来就可以使用make命令来编译了。

编译成功后,下来就可以将官方的配置文件相关名字改成自己的名字了。

重命名shell脚本

首先shell脚本复制一份,改为自己的名字。

将自己的shell脚本名字改为mx6ull_myuboot_emmc.sh

修改shell脚本配置文件

打开自己的shell脚本,修改配置文件。

将第二行命令中的配置文件名修改为

mx6ull_myuboot_emmc_defconfig

修改好之后,保存退出。

添加默认配置文件

由于我们目前还没有这个配置文件,所以要去复制一份官方的配置文件,然后改成自己的名字。这个配置文件在configs目录中。

修改默认配置文件

下面打开这个配置文件

可以看到这个配置文件中有一个文件夹,也需要将官方这个改为自己的文件夹。

将配置文件中的文件夹名字改为 mx6ull_myuboot_emmc,然后保存退出。

准备需要的板级文件夹

接下来就去准备这个文件夹,进入到board --- freescale 文件夹中。

将官方的mx6ulleck文件夹复制一份,重命名为 mx6ull_myuboot_emmc

下面进入到mx6ull_myuboot_emmc文件夹中

重命名.C文件

这个里面的c文件也需要重命名

修改Makefile

下来要修改Makefile文件中的内容

要修改生产的.o文件名。

将.o文件名修改为 mx6ull_myuboot_emmc.o

修改imximage.cfg配置文件

接着修改imximage.cfg 文件中的内容

要将文件夹路径修改为自己的。

修改Kconfig文件

接下来修改Kconfig 文件

将里面的字符串内容修改为自己的内容

第一行TARGET文件名就是刚开始在配置文件里面设置的文件名。

修改MAINTAINERS 文件

接下来修改MAINTAINERS 文件

修改里面的文件夹路径和头文件路径。

修改头文件

这里设置的这个文件夹和配置文件已经存在了,但是这个.h头文件还不存在。需要去添加这个头文件。

进入到 include --- configs 文件夹中,复制头文件并重命名

然后打开头文件

修改头文件中的条件编译

修改uboot图形配置界面

接下来还需要修改图形界面配置

进入到/arch/arm/cpu/armv7/mx6 文件夹中

修改Kconfig 文件。

在207行添加自己板子的信息

在最后一行添加配置文件路径

需要修改的文件已经修改好了。

编译自己的uboot

下来就可以使用shell命令编译自己的uboot了。

编译结果如下

为了验证自己的配置是否成功,可以使用字符串查找命令检查自己的头文件

grep -nR "mx6ull_myuboot_emmc.h"

检查自己的这个头文件是否被其他文件引用了。

可以看到自己的头文件被很多文件引用了,说明自己移植的uboot是成功的。

下面将uboot.bin文件烧写到SD卡中。

给SD卡烧写前,现将SD卡格式化一次。

将imxdownload 烧写软件复制到当前文件夹中。

接下来向SD卡烧写u-boot.bin

将SD卡插入到开发板中,打开串口终端,重启开发板。

可以看到系统的编译时间就是刚才编译的时间,说明自己的uboot系统已经移植成功了,不过由于还未设置LCD显示和网络,所以这里显示屏和网络报错了。

下一篇:Linux学习笔记---移植官方uboot步骤(二)

Linux学习笔记---移植官方uboot步骤(一)相关推荐

  1. Linux学习笔记---移植官方uboot步骤(二)

    在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...

  2. Linux学习笔记---移植官方linux步骤(二)

    目录 修改网络驱动 修改 LAN8720 的复位 以及网络时钟 引脚驱动 修改fec1和fec2节点pinctrl-0属性 修改LAN8720A的PHY地址 修改 fec_main.c 文件 配置 L ...

  3. Linux学习笔记---移植官方linux步骤(一)

    使用的开发板是正点原子IMX6U-MINI  EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植. 这里所说的移植,其实不是自己编写驱动文件等 ...

  4. Linux学习笔记---初次编译Uboot系统

    在初次编译Uboot系统时,是按照正点原子开发指南操作的,但是开发指南上讲得不是很详细,又看了一遍视频教程才搞清楚完整步骤,为了方便学习,就将详细步骤记录下来,以便以后参考. Uboot初次编译 1. ...

  5. Linux学习笔记---使用tftp命令下载文件

    向开发板下载数据时,不仅可以通过nfs命令下载,还可以通过更简单的命令tftp下载. 用网线将开发板和笔记本连接起来,设置好网络环境.网络的具体设置方法可以参考 Linux学习笔记---网线直连电脑和 ...

  6. linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘

    [linux学习笔记]之一:ubuntu ch340调试备忘 已有 2183 次阅读2016-11-8 21:52 |个人分类:linux 最近迷上了Linux,入了一块板.电脑使用win7+ubun ...

  7. Linux学习笔记12——配置ftp、squid、Tomcat、Samba、MySQL主从

    Linux学习笔记12 Linux学习笔记12 配置FTP服务 配置pure-ftpd 开机启动 上传下载文件 配置vsftpd CentOS 70安装配置Vsftp服务器 搭好vsftp之后出现55 ...

  8. Linux学习笔记---使用BusyBox创建根文件系统(四)

    目录 软件运行测试 设置程序为后台运行 设置开机自启动 外网连接测试 软件运行测试 进入到rootfs文件夹中新建一个drivers文件夹,用于存放编写的软件. 新建hello.c文件 输入以下代码 ...

  9. Linux学习笔记---使用BusyBox创建根文件系统(二)

    目录 向 rootfs 的"/lib "目录添加库文件 向 rootfs 的usr/lib 目录添加库文件 创建其他文件夹 根文件系统初步测试 向 rootfs 的"/l ...

最新文章

  1. localhost与127.0.0.1的概念和工作原理之不同
  2. linux命令(常用)
  3. Android QEMU 高速管道
  4. 交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer
  5. 微软正式发布Azure Functions 2.0
  6. docker 部署Python项目 以及dockerfile文件的编写
  7. vs.php中使用apache或IIS7进行外部调试
  8. 【ICLR2019】Poster 论文汇总
  9. Chapter 1 First Sight——37
  10. NetBEUI协议巧安装
  11. 前端开发常用哪些工具软件?
  12. 331.验证二叉树的前序序列化
  13. 集成mybatis-generator-maven-plugin报错A required class was missing while ..org/mybatis/generator/api/dom
  14. Zabbix实现短信报警
  15. 莫纳什大学 FIT1045 assignment2课业解析
  16. 企业IT管理岗的首选认证:ITIL®4 Foundation
  17. tp6字符串解析为HTML,6.字符串 · ThinkPHP5从入门到努力之入门实践 · 看云
  18. AD637真有效值Multisim仿真电路
  19. 比菜鸟更进一步(1):Style文件和toolbar的使用
  20. [安装wireshark时,报“Error opening file for writing npf.sys”]

热门文章

  1. oracle坏块修复
  2. hdu 1106 字符串处理
  3. MapGuide应用开发系列(八)----MapGuide Studio准备地图之地图(Map)
  4. 类名作为方法和形参的返回值
  5. 字符设备驱动程序之poll机制(韦大仙)
  6. 18 TaskScheduler任务调度器抽象基类——Live555源码阅读(一)任务调度相关类
  7. UDID被禁用后的集中替代品
  8. C# 4.0 实现 Method Missing
  9. Servlet 服务器 HTTP 响应
  10. 温州服务器付费方式_新购买的服务器是选择包年包月还是按流量计费呢?