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.设 ...
随机推荐
- IT兄弟连 Java语法教程 流程控制语句 循环结构语句2
双重for循环 如果把一个循环放在另一个循环体中,那么就可以形成嵌套循环,也就是双重for循环,当然嵌套循环也可以是for循环嵌套while循环,也可以是while循环嵌套while循环……,即各种类 ...
- web自动化针对PO模式进行二次封装之basepage
在PO模式当中,我们做到了页面对象与测试用例的分离,但在页面对象编写时,我们仍然还有优化的空间.页面对象有一些共同的基本操作,可以封装起来,并可以在基本操作当中加上日志和异常截图的处理.比如说我们在查 ...
- pixijs shader 案例
pixijs shader 案例 const app = new PIXI.Application({ transparent: true }); document.body.appendChild( ...
- sierpinski地毯
(分形作业) 取一矩形,九等分而去其中. 每一份九等分去其中:循环往复. 方法一(传统方法) 将每个矩形映射到三个矩形中去即可. def big(a,times): k=3**tim ...
- LINUX CFS 调度tick逻辑,即check_preemt_tick解析
计算当前task在这个tick周期实际用时delta_exetime, 更新当前task的vruntime; 根据权重,重新计算调度period,计算当前task的应得时间片slice(idle_ru ...
- Docker容器 MySQL中文乱码解决方案
docker exec进入容器 sudo docker exec -it 588340b778f6 bash 执行以下命令,将 character-set-server=utf8 写入mysql配置文 ...
- js获取当前日期,包括星期几
function getCurrentDate() { var myDate = new Date(); var year = myDate.getFullYear(); // ...
- 聊聊 Vue 中 title 的动态修改
由于之前的 Vue 项目打包成果物一直是嵌入集成平台中,所以一直没有关注过项目的 title.直到最近,突然有个需求,要求点击按钮在集成平台外新开一个页面,此时我才发现,原来我的项目的 title 一 ...
- Elasticsearch Query DSL 语言介绍
目录 0. 引言 1. 组合查询 2. 全文搜索 2.1 Match 2.2 Match Phase 2.3 Multi Match 2.4 Query String 2.5 Simple Query ...
- Socket,Tcp,Http的关联
下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: TCP/IP 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议 ...