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.1.15_2.1.0_ga.tar.bz2 $ cd uboot-imx-rel_imx_4.1.15_2.1.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.1.15_2.1.0_ga uboot-imx-rel_imx_4.1.15_comp6ul/ $ cd uboot-imx-rel_imx_4.1.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 4 0x020c4068 0xffffffff DATA 4 0x020c406c 0xffffffff DATA 4 0x020c4070 0xffffffff DATA 4 0x020c4074 0xffffffff DATA 4 0x020c4078 0xffffffff DATA 4 0x020c407c 0xffffffff DATA 4 0x020c4080 0xffffffff DATA 4 0x020E04B4 0x000C0000 DATA 4 0x020E04AC 0x00000000 DATA 4 0x020E027C 0x00000028 DATA 4 0x020E0250 0x00000028 DATA 4 0x020E024C 0x00000028 DATA 4 0x020E0490 0x00000028 DATA 4 0x020E0288 0x00000028 DATA 4 0x020E0270 0x00000000 DATA 4 0x020E0260 0x00000028 DATA 4 0x020E0264 0x00000028 DATA 4 0x020E04A0 0x00000028 DATA 4 0x020E0494 0x00020000 DATA 4 0x020E0280 0x00000028 DATA 4 0x020E0284 0x00000028 DATA 4 0x020E04B0 0x00020000 DATA 4 0x020E0498 0x00000028 DATA 4 0x020E04A4 0x00000028 DATA 4 0x020E0244 0x00000028 DATA 4 0x020E0248 0x00000028 DATA 4 0x021B001C 0x00008000 DATA 4 0x021B0800 0xA1390003 DATA 4 0x021B080C 0x00000000 DATA 4 0x021B083C 0x0154014C DATA 4 0x021B0848 0x40404246 DATA 4 0x021B0850 0x4040564E DATA 4 0x021B081C 0x33333333 DATA 4 0x021B0820 0x33333333 DATA 4 0x021B082C 0xF3333333 DATA 4 0x021B0830 0xF3333333 DATA 4 0x021B08C0 0x00921012 DATA 4 0x021B08b8 0x00000800 DATA 4 0x021B0004 0x0002002D DATA 4 0x021B0008 0x1B333030 DATA 4 0x021B000C 0x3F4352F3 DATA 4 0x021B0010 0xB66D0B63 DATA 4 0x021B0014 0x01FF00DB DATA 4 0x021B0018 0x00211740 DATA 4 0x021B001C 0x00008000 DATA 4 0x021B002C 0x000026D2 DATA 4 0x021B0030 0x00431023 DATA 4 0x021B0040 0x00000047 DATA 4 0x021B0000 0x83180000 DATA 4 0x021B001C 0x02008032 DATA 4 0x021B001C 0x00008033 DATA 4 0x021B001C 0x00048031 DATA 4 0x021B001C 0x15208030 DATA 4 0x021B001C 0x04008040 DATA 4 0x021B0020 0x00000800 DATA 4 0x021B0818 0x00000227 DATA 4 0x021B0004 0x0002556D DATA 4 0x021B0404 0x00011006 DATA 4 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板級源碼的整個過程。