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.设 ...
随机推荐
- Python爬取前程无忧网站上python的招聘信息
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我姓刘却留不住你的心 PS:如有需要Python学习资料的小伙伴可以 ...
- python网络爬虫进阶之HTTP原理,爬虫的基本原理,Cookies和代理介绍
目录 一.HTTP基本原理 (一)URI和URL (二)超文本 (三)HTTP和HTTPS (四)HTTP请求过程 (五)请求 1.请求方法 2.请求的网址 3.请求头 4.请求体 (六)响应 1.响 ...
- DevExpress的下拉框控件ComboBoxEdit控件的使用
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- cesium-webpack 入门开发系列一初探篇(附源码下载)
前言 cesium-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 we ...
- IDEA下新建Vue项目
1.首先需要安装nodeJS,并配置全局环境变量. 2.在IDEA中新建一个空的project 3.在setting中配置JavaScript的语言版本为6 在file types的html中添加.* ...
- momentjs在vue中的用法
js代码 import moment from 'moment'; const jsCountDown = document.getElementById('js-countdown'); const ...
- Python—文件读写操作
初识文件操作 使用open()函数打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了,根据打开文件的方式不同能够执行的操作也会有相应的差异. 打开文件的方式: r, w, a, ...
- Linux-TCP之深入浅出send和recv【转】
转自:https://www.cnblogs.com/JohnABC/p/7238417.html 内容摘自:TCP之深入浅出send和recv.再次深入理解TCP网络编程中的send和recv 建议 ...
- 初学JavaScript正则表达式(二)
正则表达式的实例化与标识符 字面量: var reg = /\bis\b/g // \b--字符边界 g全文搜索 查找单词为is的字符 He is a boy. IS He? 构造函数: var re ...
- 1. Vue - ES6
一.ES6部分知识点 1. 变量声明 <!-- var声明变量,导致变量提升 --> var name = 'ruanyifeng' function func(){ console.lo ...