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.设 ...
随机推荐
- jQuery 源码分析(十四) 数据操作模块 类样式操作 详解
jQuery的属性操作模块总共有4个部分,本篇说一下第3个部分:类样式操作部分,用于修改DOM元素的class特性的,对于类样式操作来说,jQuery并没有定义静态方法,而只定义了实例方法,如下: a ...
- vscode wsl git 换行符问题autocrlf
wsl中使用code,由于windows换行符问题git会显示大量文件修改,此时需要在wsl中设置autocrlf设置 git config --global core.autocrlf input ...
- [debug] 关闭vs的增量链接
1. 什么是增量链接? 答:采用Debug模式下,函数地址并不是该函数的开始部分,而是跳转到一个 jmp 函数地址. 比如,一个函数 test(),其地址 test 对应的汇编语句是 "jm ...
- springboot 2.0 配置 spring.jackson.date-format 不生效
展开 问题:application.properties中的如下配置不生效,返回时间戳 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss 原因分析: 拦截器 ...
- CDN加速静态文件访问
CDN加速静态文件访问 全局调度 缓存技术 内容分发 带宽优化 CDN是Content Delivery Network的缩写,意思是内容分发网络.CDN的作用是把用户需要的内容分发到离用户近的地方, ...
- centos 安装gitlab
1.开始安装依赖软件:yum -y install policycoreutils openssh-server openssh-clients postfix 2.设置postfix开机自启动,po ...
- 关于vue项目中使用组件的一些心得
在编写一个可能是共组件的情况下,尽量在组件内部只处理相关组件内部的逻辑,组件外的逻辑通过事件总线emit,否则一旦当前组件涉及其他组件的逻辑就会发生耦合,在一个新的组件里面使用的时候,就会造成后悔的情 ...
- 【React Native】日常踩坑记录_以后将持续更新
作为一名有理想.有抱负的一代iOS程序员,本着“我头发够多,还能学”的原则,我选择了追随那些大佬的脚步,于2018年开始了React Native. 第一步:找文档.准备安装开发环境: 第二步:一步步 ...
- 解决iOS地图持续定位耗电问题
地图位置刷新的代理didUpdateLocations会持续调用,手机非常耗电 但是在实际开发中,有一些APP确实需要用到持续定位的功能,比如:运动类, 导航类, 天气类等等 如何进行持续定位呢?保证 ...
- django前奏
目录 前言 web框架本质 服务器程序和应用程序 python三大主流web框架 django flask torndao Django安装配置 注意事项 命令行创建项目 app的概念 pycharm ...