1、前言

CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码的过程进行介绍。

2、开发环境

目标板:CoM-P6UL(RAM:256MB,Nand Flash:256MB)

主机:Linux ubuntu 4.15.0-70-generic

交叉编译工具链:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf

源码下载链接:http://git.freescale.com/git/

3、官方uboot移植适配

下载源码后,先对NXP官方的i.mx6ul evk的评估板源码进行编译,检查是否能编译成功:

解压uboot源码,并进入到uboot源码根目录:

$ tar -xvjf uboot-imx-rel_imx_4..15_2..0_ga.tar.bz2
$ cd uboot-imx-rel_imx_4..15_2..0_ga/

接下来,尝试开始编译NXP官方的uboot源码:

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ul_14x14_evk_nand_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

如果在源码根目录出现uboot.imx文件则编译通过,如下所示:

当NXP官方uboot源码能编译通过后,接下来开始将源码适配CoM-P6UL核心板,因为我们编译的只是NXP官方的Demo评估板源码而已,评估板的RAM和Nand Flash的大小和配置和Com-P6UL核心板的都是不一样的,所以需要进行适配。

修改uboot源码文件夹:

$ mv uboot-imx-rel_imx_4..15_2..0_ga uboot-imx-rel_imx_4..15_comp6ul/
$ cd uboot-imx-rel_imx_4..15_comp6ul/

修改uboot源码顶层Makefile,指定ARCH架构和CROSS_COMPILE交叉编译工具链,如下:

$ vim Makefile

接下来添加开发板的默认配置文件deconfig:

$ cd configs/
$ cp mx6ul_14x14_evk_nand_defconfig mx6ul_comp6ul_nand_defconfig
$ vim mx6ul_comp6ul_nand_defconfig

将defconfig文件配置修改如下所示:

defconfig文件修改完成后,保存后并退出vim编辑器。

接下来添加comp6ul核心板的头文件,目录为include/configs下:

$ cd include/configs
$ cp mx6ul_14x14_evk.h mx6ul_comp6ul_nand.h
$ vim mx6ul_comp6ul_nand.h

***

接下来添加开发板对应的板级文件:

$ cd board/freescale
$ cp -r mx6ul_14x14_evk/ mx6ul_comp6ul_nand

修改新添加目录下的文件:

$ cd mx6ul_comp6ul_nand/
$ mv mx6ul_14x14_evk.c mx6ul_comp6ul_nand.c

接下来修改新添加的板级目录下的Makefile文件:

$ vim Makefile

修改如下,编译的时候才能将添加的.c文件进行编译:

接下来修改imximage.cfg文件,该文件用于添加输出的uboot.bin文件的IVT和DCD数据:

$ vim imximage.cfg

该文件修改如下所示:

NXP官方的i.mx6ul评估板的DDR容量是512MB的,但是现在这个目标板Com-P6UL是256MB的,因此,需要修改imximage.cfg中有关DDR控制寄存器的相关值,先使用NXP官方的ddr_stress_tester工具对DDR进行较准,然后根据对应的.inc文件进行寄存器的值修改,关于ddr_stress_tester工具的使用,可以参考下面的链接:

https://www.cnblogs.com/Cqlismy/p/11968276.html

寄存器值修改后如下:

/* Enable all clocks */
DATA 0x020c4068 0xffffffff
DATA 0x020c406c 0xffffffff
DATA 0x020c4070 0xffffffff
DATA 0x020c4074 0xffffffff
DATA 0x020c4078 0xffffffff
DATA 0x020c407c 0xffffffff
DATA 0x020c4080 0xffffffff DATA 0x020E04B4 0x000C0000
DATA 0x020E04AC 0x00000000
DATA 0x020E027C 0x00000028
DATA 0x020E0250 0x00000028
DATA 0x020E024C 0x00000028
DATA 0x020E0490 0x00000028
DATA 0x020E0288 0x00000028
DATA 0x020E0270 0x00000000
DATA 0x020E0260 0x00000028
DATA 0x020E0264 0x00000028
DATA 0x020E04A0 0x00000028
DATA 0x020E0494 0x00020000
DATA 0x020E0280 0x00000028
DATA 0x020E0284 0x00000028
DATA 0x020E04B0 0x00020000
DATA 0x020E0498 0x00000028
DATA 0x020E04A4 0x00000028
DATA 0x020E0244 0x00000028
DATA 0x020E0248 0x00000028
DATA 0x021B001C 0x00008000
DATA 0x021B0800 0xA1390003
DATA 0x021B080C 0x00000000
DATA 0x021B083C 0x0154014C
DATA 0x021B0848 0x40404246
DATA 0x021B0850 0x4040564E
DATA 0x021B081C 0x33333333
DATA 0x021B0820 0x33333333
DATA 0x021B082C 0xF3333333
DATA 0x021B0830 0xF3333333
DATA 0x021B08C0 0x00921012
DATA 0x021B08b8 0x00000800
DATA 0x021B0004 0x0002002D
DATA 0x021B0008 0x1B333030
DATA 0x021B000C 0x3F4352F3
DATA 0x021B0010 0xB66D0B63
DATA 0x021B0014 0x01FF00DB
DATA 0x021B0018 0x00211740
DATA 0x021B001C 0x00008000
DATA 0x021B002C 0x000026D2
DATA 0x021B0030 0x00431023
DATA 0x021B0040 0x00000047
DATA 0x021B0000 0x83180000
DATA 0x021B001C 0x02008032
DATA 0x021B001C 0x00008033
DATA 0x021B001C 0x00048031
DATA 0x021B001C 0x15208030
DATA 0x021B001C 0x04008040
DATA 0x021B0020 0x00000800
DATA 0x021B0818 0x00000227
DATA 0x021B0004 0x0002556D
DATA 0x021B0404 0x00011006
DATA 0x021B001C 0x00000000

接下来,修该新添加的板级目录下的Kconfig文件:

$ vim Kconfig

修改内容如下所示:

接下来修改MAINTAINERS文件:

$ vim MAINTAINERS

修改的内容如下所示:

接下来修改uboot图形界面的Kconfig配置文件,目录如下:

uboot/arch/arm/cpu/armv7/mx6/

Kconfig修改如下所示:

再把新添加的板级目录的Kconfig文件目录加入,如下:

到这里,uboot源码的修改基本完成,接下则是进行编译:

$ make clean
$ make mx6ul_comp6ul_nand_defconfig
$ make

编译成功如下所示:

接下来,就可以使用NXP官方提供的MfgTools软件进行uboot更新到Nand Flash中了,并检测uboot是否能适配成功。

4、小结

本文主要简单介绍了对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码的整个过程。

NXP官方的i.mx6ul板级uboot源码适配的更多相关文章

  1. (三)uboot源码分析

    一.九鼎官方uboot和三星原版uboot对比(1)以九鼎官方的uboot为蓝本来学习的,以三星官方的这份为对照.(2)不同版本的uboot或者同一版本不同人移植的uboot,可能目录结构和文件内容都 ...

  2. u-boot 源码分析(1) 启动过程分析

    u-boot 源码分析(1) 启动过程分析 文章目录 u-boot 源码分析(1) 启动过程分析 前言 配置 源码结构 api arch board common cmd drivers fs Kbu ...

  3. u-boot源码分析

    Uboot源码分析 源码以u-boot-1.3.4为基准,主芯片采用at91sam9260,主要介绍uboot执行流程. uboot官网:http://www.denx.de/wiki/U-Boot/ ...

  4. u-boot源码分析之C语言段

    题外话: 最近一直在学习u-boot的源代码,从代码量到代码风格,都让我认识到什么才是真正的程序.以往我所学到的C语言知识和u-boot的源代码相比,实在不值一提.说到底,机器都是0和1控制的.感觉这 ...

  5. Exynos 4412 Uboot源码解析

    原文地址:http://www.cnblogs.com/jacklu/p/6226330.html Exynos 4412 Uboot的汇编代码就不贴了,没有的可以私信我. 这是我当时阅读代码时的思维 ...

  6. 转:用 git 下载 uboot 源码

    1. 起因: 想下载 uboot 源码,原先的方法都是下载压缩包,然后放到虚拟机上的 Ubuntu ,再解压. 在看 uboot 源码的时候,发现 v2016.01 版本的uboot中关于 board ...

  7. u-boot源码下载

    1. 使用git下载u-boot源码  1.1 clone u-boot源码仓库 可以使用git.HTTP.和 rsync协议来下载u-boot源码.你可以使用如下方法来克隆源码树: $ git cl ...

  8. 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法

    迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...

  9. uboot源码整体框架

    源码解压以后,我们可以看到以下的文件和文件夹:  cpu 与处理器相关的文件.每个子目录中都包括cpu.c和interrupt.c.start.S.u-boot.lds. cpu.c:初始化CPU.设 ...

随机推荐

  1. Zookeeper集群的"脑裂"问题处理 - 运维总结

    关于集群中的"脑裂"问题,之前已经在这里详细介绍过,下面重点说下Zookeeper脑裂问题的处理办法.ooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调 ...

  2. 12-UA池和代理池

    一.UA池和代理池 1.UA池                                      scrapy的下载中间件: 下载中间件(Downloader Middlewares) 位于s ...

  3. 配置sshd的免密码登录

    在客户端上生成密钥: ssh-keygen -t rsa 然后上传到服务器上即可: ssh-copy-id username@remote-server -p22

  4. OpenGL入门1.5:矩阵与变换

    每一个小步骤的源码都放在了Github 的内容为插入注释,可以先跳过 前言 在阅读本篇博客之前,你必须对向量和矩阵有基本的认识,并且能熟练进行向量和矩阵的运算 我们已经知道了如何创建一个物体.着色.加 ...

  5. Docker是什么、为什么是一种趋势

    Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响.那么我就不需要专门运送水果的船和专门运 ...

  6. go-数据结构

    数据结构 数据结构(算法)的介绍 数据结构的介绍 1) 数据结构是一门研究算法的学科,只从有了编程语言也就有了数据结构.学好数据结构可以编写 出更加漂亮,更加有效率的代码. 2) 要学习好数据结构就要 ...

  7. 版本管理·玩转git(远程仓库配置和配置公钥免密登录)

    git系列的最后一部分内容,我们先来看看如何查看远程仓库. 输入 git remote -v 我们还可以删除远程库,输入 git remote remove origin 删除后再次查询,信息为空. ...

  8. mac 下删除 python 2.7

    删除 mac os 自带的 python 2.7, 以方便安装 python 3 的虚拟环境. 删除 Python 2.7 framework   sudo rm -rf /Library/Frame ...

  9. Linux--简单实现nfs的目录挂载,ntp时间同步

    一.NFS (Network FileSystem) 网络文件系统 是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源. 在NFS的应用中,本地NFS的客户端 ...

  10. 8.Python网络编程_多线程死锁

    死锁:指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死 ...