NXP官方的i.mx6ul板级uboot源码适配
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源码适配的更多相关文章
- (三)uboot源码分析
一.九鼎官方uboot和三星原版uboot对比(1)以九鼎官方的uboot为蓝本来学习的,以三星官方的这份为对照.(2)不同版本的uboot或者同一版本不同人移植的uboot,可能目录结构和文件内容都 ...
- u-boot 源码分析(1) 启动过程分析
u-boot 源码分析(1) 启动过程分析 文章目录 u-boot 源码分析(1) 启动过程分析 前言 配置 源码结构 api arch board common cmd drivers fs Kbu ...
- u-boot源码分析
Uboot源码分析 源码以u-boot-1.3.4为基准,主芯片采用at91sam9260,主要介绍uboot执行流程. uboot官网:http://www.denx.de/wiki/U-Boot/ ...
- u-boot源码分析之C语言段
题外话: 最近一直在学习u-boot的源代码,从代码量到代码风格,都让我认识到什么才是真正的程序.以往我所学到的C语言知识和u-boot的源代码相比,实在不值一提.说到底,机器都是0和1控制的.感觉这 ...
- Exynos 4412 Uboot源码解析
原文地址:http://www.cnblogs.com/jacklu/p/6226330.html Exynos 4412 Uboot的汇编代码就不贴了,没有的可以私信我. 这是我当时阅读代码时的思维 ...
- 转:用 git 下载 uboot 源码
1. 起因: 想下载 uboot 源码,原先的方法都是下载压缩包,然后放到虚拟机上的 Ubuntu ,再解压. 在看 uboot 源码的时候,发现 v2016.01 版本的uboot中关于 board ...
- u-boot源码下载
1. 使用git下载u-boot源码 1.1 clone u-boot源码仓库 可以使用git.HTTP.和 rsync协议来下载u-boot源码.你可以使用如下方法来克隆源码树: $ git cl ...
- 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法
迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...
- uboot源码整体框架
源码解压以后,我们可以看到以下的文件和文件夹: cpu 与处理器相关的文件.每个子目录中都包括cpu.c和interrupt.c.start.S.u-boot.lds. cpu.c:初始化CPU.设 ...
随机推荐
- Selenium+java - 通过Robot对象上传文件
思路: 1.将文件路径复制到剪切板 2.用robot对象模拟键盘操作即可 复制文件代码: public void setClipboardData(String data) { StringSelec ...
- flex——justify-content属性引起的一个样式问题
前言 在flex布局出现以前,我一般习惯使用浮动布局(float)来实现下列布局 现在尽量少用浮动布局,虽然好用,但有时会带来一些意想不到的问题,甚至导致布局错位, 一开始浮动布局只是为了 ...
- jQuery 源码分析(十四) 数据操作模块 类样式操作 详解
jQuery的属性操作模块总共有4个部分,本篇说一下第3个部分:类样式操作部分,用于修改DOM元素的class特性的,对于类样式操作来说,jQuery并没有定义静态方法,而只定义了实例方法,如下: a ...
- 分词 | 双向匹配中文分词算法python实现
本次实验内容是基于词典的双向匹配算法的中文分词算法的实现.使用正向和反向最大匹配算法对给定句子进行分词,对得到的结果进行比较,从而决定正确的分词方法. 算法描述正向最大匹配算法先设定扫描的窗口大小ma ...
- WPF自定义控件的制作
因为有时候需要定制化的控件,需要多个控件的组合及复杂功能的集成,这样可以考虑自定义用户控件.下面分享一个简单的数值增减功能的自定义控件作为说明. 效果图如下: 1.创建自定义用户控件(添加->新 ...
- Dynamics CRM 2015/2016新特性之七:有了文档模板,打印分析So Easy
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复190或者20160216可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 从CRM 2015 UR1开始, ...
- hadoop mapreduce求解有序TopN(高效模式)
1.在map阶段对数据先求解改分片的topN,到reduce阶段再合并求解一次,求解过程利用TreeMap的排序特性,不用自己写算法. 2.样板数据,类似如下 1 13682846555 192.16 ...
- CODING 告诉你硅谷项目经理的项目管理之道
写在前面 优秀的项目管理者是怎么工作的,如何把一个研发团队的绩效激发到最大? 我们精心挑选了几篇硅谷科技公司研发管理者的 README 进行翻译. README 主要用来向团队成员展示项目管理者的工作 ...
- python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题
爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题.那为什么会造成这种结果呢? 其原因是由于Spider的速率比较快,而scapy操作数据库操作比较慢,导致pipelin ...
- nginx+php+redis+ssl 配置
php的接触得很少,记录一下 环境:CentOS 7.4 安装软件 # 安装 nginx yum install nginx # 配置PHP7的源,安装 PHP 7.0 及扩展 yum install ...