Linux学习笔记---移植官方uboot步骤(一)
目录
编写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步骤(一)相关推荐
- Linux学习笔记---移植官方uboot步骤(二)
在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...
- Linux学习笔记---移植官方linux步骤(二)
目录 修改网络驱动 修改 LAN8720 的复位 以及网络时钟 引脚驱动 修改fec1和fec2节点pinctrl-0属性 修改LAN8720A的PHY地址 修改 fec_main.c 文件 配置 L ...
- Linux学习笔记---移植官方linux步骤(一)
使用的开发板是正点原子IMX6U-MINI EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植. 这里所说的移植,其实不是自己编写驱动文件等 ...
- Linux学习笔记---初次编译Uboot系统
在初次编译Uboot系统时,是按照正点原子开发指南操作的,但是开发指南上讲得不是很详细,又看了一遍视频教程才搞清楚完整步骤,为了方便学习,就将详细步骤记录下来,以便以后参考. Uboot初次编译 1. ...
- Linux学习笔记---使用tftp命令下载文件
向开发板下载数据时,不仅可以通过nfs命令下载,还可以通过更简单的命令tftp下载. 用网线将开发板和笔记本连接起来,设置好网络环境.网络的具体设置方法可以参考 Linux学习笔记---网线直连电脑和 ...
- linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘
[linux学习笔记]之一:ubuntu ch340调试备忘 已有 2183 次阅读2016-11-8 21:52 |个人分类:linux 最近迷上了Linux,入了一块板.电脑使用win7+ubun ...
- Linux学习笔记12——配置ftp、squid、Tomcat、Samba、MySQL主从
Linux学习笔记12 Linux学习笔记12 配置FTP服务 配置pure-ftpd 开机启动 上传下载文件 配置vsftpd CentOS 70安装配置Vsftp服务器 搭好vsftp之后出现55 ...
- Linux学习笔记---使用BusyBox创建根文件系统(四)
目录 软件运行测试 设置程序为后台运行 设置开机自启动 外网连接测试 软件运行测试 进入到rootfs文件夹中新建一个drivers文件夹,用于存放编写的软件. 新建hello.c文件 输入以下代码 ...
- Linux学习笔记---使用BusyBox创建根文件系统(二)
目录 向 rootfs 的"/lib "目录添加库文件 向 rootfs 的usr/lib 目录添加库文件 创建其他文件夹 根文件系统初步测试 向 rootfs 的"/l ...
最新文章
- localhost与127.0.0.1的概念和工作原理之不同
- linux命令(常用)
- Android QEMU 高速管道
- 交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer
- 微软正式发布Azure Functions 2.0
- docker 部署Python项目 以及dockerfile文件的编写
- vs.php中使用apache或IIS7进行外部调试
- 【ICLR2019】Poster 论文汇总
- Chapter 1 First Sight——37
- NetBEUI协议巧安装
- 前端开发常用哪些工具软件?
- 331.验证二叉树的前序序列化
- 集成mybatis-generator-maven-plugin报错A required class was missing while ..org/mybatis/generator/api/dom
- Zabbix实现短信报警
- 莫纳什大学 FIT1045 assignment2课业解析
- 企业IT管理岗的首选认证:ITIL®4 Foundation
- tp6字符串解析为HTML,6.字符串 · ThinkPHP5从入门到努力之入门实践 · 看云
- AD637真有效值Multisim仿真电路
- 比菜鸟更进一步(1):Style文件和toolbar的使用
- [安装wireshark时,报“Error opening file for writing npf.sys”]