从NXP获取uboot并且安装NXP官方开发板配置编译
1、NXP官方获取:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
2、解压缩:tar -vxjf boot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
3、打开configs目录
4、利用官方的配置文件编译uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
命令敲打之后会自动编译uboot
5、编译成功画面
6、避免每次编译uboot需要重新输入命令麻烦,可以创建sh脚本文件
imx_6ull_evk_defconfig.sh
#
!
/bin/bash
make ARCH
=
arm CROSS_COMPILE
=
arm
-
linux
-
gnueabihf
-
distclean
make ARCH
=
arm CROSS_COMPILE
=
arm
-
linux
-
gnueabihf
mx6ull_14x14_evk_emmc_defconfig
make V
=
1
ARCH
=
arm CROSS_COMPILE
=
arm
-
linux
-
gnueabihf
- -
j16
赋予权限:chmod 777 imx_6ull_evk_defconfig.sh
执行:./imx_6ull_evk_defconfig.sh
将uboot移植匹配 到自己的开发板atk
1、打开configs文件,将官方配置文件复制一份,并且改名
cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig
将mx6ull_alientek_emmc_defconfig内容做如下修改:
1
CONFIG_SYS_EXTRA_OPTIONS
=
"IMX_CONFIG=board/freescale/mx6ull_alientek_
emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
2
CONFIG_ARM
=
y
3
CONFIG_ARCH_MX6
=
y
4
CONFIG_TARGET_MX6ULL_ALIENTEK_EMMC
=
y
5
CONFIG_CMD_GPIO
=
y
2、添加开发板对应的头文件
include/configs目录下
cp include/configs/mx6ullevk.h include/configs/mx6ull_alientek_emmc.h
将
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
改为
#ifndef __MX6ULL_ALIENTEK_EMMC_CONFIG_H
#define __MX6ULL_ALIENTEK_EMMC_CONFIG_H
mx6ull_alientek_emmc.h
里面的内容比较多,这个头文件是用作配置剪裁uboot功能的:
示例代码 33.2.2.1 mx6ull_alientek_emmc.h 文件
1
/*
2
* Copyright (C) 2016 Freescale Semiconductor, Inc.
3
*
4
* Configuration settings for the Freescale i.MX6UL 14x14 EVK board.
5
*
6
* SPDX-License-Identifier: GPL-2.0+
7
*/
8
#ifndef __MX6ULL_ALEITENK_EMMC_CONFIG_H
9
#define __MX6ULL_ALEITENK_EMMC_CONFIG_H
10
11
12
#include
<
asm
/
arch
/
imx
-
regs
.
h
>
13
#include
<
linux
/
sizes
.
h
>
14
#include
"mx6_common.h"
15
#include
<
asm
/
imx
-
common
/
gpio
.
h
>
16
......
28
29
#define is_mx6ull_9x9_evk
()
CONFIG_IS_ENABLED
(
TARGET_MX6ULL_9X9_EVK
)
30
31
#ifdef CONFIG_TARGET_MX6ULL_9X9_EVK
32
#define PHYS_SDRAM_SIZE SZ_256M
33
#define CONFIG_BOOTARGS_CMA_SIZE
"cma=96M "
34
#
else
35
#define PHYS_SDRAM_SIZE SZ_512M
36
#define CONFIG_BOOTARGS_CMA_SIZE
""
37
/* DCDC used on 14x14 EVK, no PMIC */
38
#undef CONFIG_LDO_BYPASS_CHECK
39
#endif
40
41
/* SPL options */
42
/* We default not support SPL
43
* #define CONFIG_SPL_LIBCOMMON_SUPPORT
44
* #define CONFIG_SPL_MMC_SUPPORT
45
* #include "imx6_spl.h"
46
*/
47
48
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
49
50
#define CONFIG_DISPLAY_CPUINFO
51
#define CONFIG_DISPLAY_BOARDINFO
52
53
/* Size of malloc() pool */
54
#define CONFIG_SYS_MALLOC_LEN
(
16
*
SZ_1M
)
55
56
#define CONFIG_BOARD_EARLY_INIT_F
57
#define CONFIG_BOARD_LATE_INIT
58
59
#define CONFIG_MXC_UART
60
#define CONFIG_MXC_UART_BASE UART1_BASE
61
62
/* MMC Configs */
63
#ifdef CONFIG_FSL_USDHC
64
#define CONFIG_SYS_FSL_ESDHC_ADDR USDHC2_BASE_ADDR
65
66
/* NAND pin conflicts with usdhc2 */
67
#ifdef CONFIG_SYS_USE_NAND
68
#define CONFIG_SYS_FSL_USDHC_NUM
1
69
#
else
70
#define CONFIG_SYS_FSL_USDHC_NUM
2
71
#endif
72
#endif
73
74
/* I2C configs */
75
#define CONFIG_CMD_I2C
76
#ifdef CONFIG_CMD_I2C
77
#define CONFIG_SYS_I2C
78
#define CONFIG_SYS_I2C_MXC
79
#define CONFIG_SYS_I2C_MXC_I2C1
/* enable I2C bus 1 */
80
#define CONFIG_SYS_I2C_MXC_I2C2
/* enable I2C bus 2 */
81
#define CONFIG_SYS_I2C_SPEED
100000
82
......
89
90
#define CONFIG_SYS_MMC_IMG_LOAD_PART
1
91
92
#ifdef CONFIG_SYS_BOOT_NAND
93
#define CONFIG_MFG_NAND_PARTITION
"mtdparts=gpmi
nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs) "
94
#
else
95
#define CONFIG_MFG_NAND_PARTITION
""
96
#endif
97
98
#define CONFIG_MFG_ENV_SETTINGS \
99
"mfgtool_args=setenv bootargs console=${console},${baudrate} "
\
......
111
"bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr}
${fdt_addr};\0"
\
112
113
#
if
defined
(
CONFIG_SYS_BOOT_NAND
)
114
#define CONFIG_EXTRA_ENV_SETTINGS \
115
CONFIG_MFG_ENV_SETTINGS \
116
"panel=TFT43AB\0"
\
......
126
"bootz ${loadaddr} - ${fdt_addr}\0"
127
128
#
else
129
#define CONFIG_EXTRA_ENV_SETTINGS \
130
CONFIG_MFG_ENV_SETTINGS \
131
"script=boot.scr\0"
\
......
202
"fi;\0"
\
203
204
#define CONFIG_BOOTCOMMAND \
205
"run findfdt;"
\
......
216
"else run netboot; fi"
217
#endif
218
219
/* Miscellaneous configurable options */
220
#define CONFIG_CMD_MEMTEST
221
#define CONFIG_SYS_MEMTEST_START
0x80000000
222
#define CONFIG_SYS_MEMTEST_END
(
CONFIG_SYS_MEMTEST_START
+
0x8000000
)
223
224
#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
225
#define CONFIG_SYS_HZ
1000
226
227
#define CONFIG_STACKSIZE SZ_128K
228
229
/* Physical Memory Map */
230
#define CONFIG_NR_DRAM_BANKS
1
231
#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
232
233
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
234
#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
235
#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
236
237
#define CONFIG_SYS_INIT_SP_OFFSET \
238
(
CONFIG_SYS_INIT_RAM_SIZE
-
GENERATED_GBL_DATA_SIZE
)
239
#define CONFIG_SYS_INIT_SP_ADDR \
240
(
CONFIG_SYS_INIT_RAM_ADDR
+
CONFIG_SYS_INIT_SP_OFFSET
)
241
242
/* FLASH and environment organization */
243
#define CONFIG_SYS_NO_FLASH
244
......
255
256
#define CONFIG_SYS_MMC_ENV_DEV
1
/* USDHC2 */
257
#define CONFIG_SYS_MMC_ENV_PART
0
/* user area */
258
#define CONFIG_MMCROOT
"/dev/mmcblk1p2"
/* USDHC2 */
259
260
#define CONFIG_CMD_BMODE
261
......
275
276
/* NAND stuff */
277
#ifdef CONFIG_SYS_USE_NAND
278
#define CONFIG_CMD_NAND
279
#define CONFIG_CMD_NAND_TRIMFFS
280
281
#define CONFIG_NAND_MXS
282
#define CONFIG_SYS_MAX_NAND_DEVICE
1
283
#define CONFIG_SYS_NAND_BASE
0x40000000
284
#define CONFIG_SYS_NAND_5_ADDR_CYCLE
285
#define CONFIG_SYS_NAND_ONFI_DETECTION
286
287
/* DMA stuff, needed for GPMI/MXS NAND support */
288
#define CONFIG_APBH_DMA
289
#define CONFIG_APBH_DMA_BURST
290
#define CONFIG_APBH_DMA_BURST8
291
#endif
292
293
#define CONFIG_ENV_SIZE
SZ_8K
294
#
if
defined
(
CONFIG_ENV_IS_IN_MMC
)
295
#define CONFIG_ENV_OFFSET
(
12
*
SZ_64K
)
296
#elif defined
(
CONFIG_ENV_IS_IN_SPI_FLASH
)
297
#define CONFIG_ENV_OFFSET
(
768
*
1024
)
298
#define CONFIG_ENV_SECT_SIZE
(
64
*
1024
)
299
#define CONFIG_ENV_SPI_BUS
CONFIG_SF_DEFAULT_BUS
300
#define CONFIG_ENV_SPI_CS
CONFIG_SF_DEFAULT_CS
301
#define CONFIG_ENV_SPI_MODE
CONFIG_SF_DEFAULT_MODE
302
#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
303
#elif defined
(
CONFIG_ENV_IS_IN_NAND
)
304
#undef CONFIG_ENV_SIZE
305
#define CONFIG_ENV_OFFSET
(
60
<<
20
)
306
#define CONFIG_ENV_SECT_SIZE
(
128
<<
10
)
307
#define CONFIG_ENV_SIZE
CONFIG_ENV_SECT_SIZE
308
#endif
309
310
311
/* USB Configs */
312
#define CONFIG_CMD_USB
313
#ifdef CONFIG_CMD_USB
314
#define CONFIG_USB_EHCI
315
#define CONFIG_USB_EHCI_MX6
316
#define CONFIG_USB_STORAGE
317
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
318
#define CONFIG_USB_HOST_ETHER
319
#define CONFIG_USB_ETHER_ASIX
320
#define CONFIG_MXC_USB_PORTSC
(
PORT_PTS_UTMI
|
PORT_PTS_PTW
)
321
#define CONFIG_MXC_USB_FLAGS
0
322
#define CONFIG_USB_MAX_CONTROLLER_COUNT
2
323
#endif
324
325
#ifdef CONFIG_CMD_NET
326
#define CONFIG_CMD_PING
327
#define CONFIG_CMD_DHCP
328
#define CONFIG_CMD_MII
329
#define CONFIG_FEC_MXC
330
#define CONFIG_MII
331
#define CONFIG_FEC_ENET_DEV
1
332
333
#
if
(
CONFIG_FEC_ENET_DEV
==
0
)
334
#define IMX_FEC_BASE
ENET_BASE_ADDR
335
#define CONFIG_FEC_MXC_PHYADDR
0x2
336
#define CONFIG_FEC_XCV_TYPE RMII
337
#elif
(
CONFIG_FEC_ENET_DEV
==
1
)
338
#define IMX_FEC_BASE
ENET2_BASE_ADDR
339
#define CONFIG_FEC_MXC_PHYADDR
0x1
340
#define CONFIG_FEC_XCV_TYPE
RMII
341
#endif
342
#define CONFIG_ETHPRIME
"FEC"
343
344
#define CONFIG_PHYLIB
345
#define CONFIG_PHY_MICREL
346
#endif
347
348
#define CONFIG_IMX_THERMAL
349
350
#ifndef CONFIG_SPL_BUILD
351
#define CONFIG_VIDEO
352
#ifdef CONFIG_VIDEO
353
#define CONFIG_CFB_CONSOLE
354
#define CONFIG_VIDEO_MXS
355
#define CONFIG_VIDEO_LOGO
356
#define CONFIG_VIDEO_SW_CURSOR
357
#define CONFIG_VGA_AS_SINGLE_DEVICE
358
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
359
#define CONFIG_SPLASH_SCREEN
360
#define CONFIG_SPLASH_SCREEN_ALIGN
361
#define CONFIG_CMD_BMP
362
#define CONFIG_BMP_16BPP
363
#define CONFIG_VIDEO_BMP_RLE8
364
#define CONFIG_VIDEO_BMP_LOGO
365
#define CONFIG_IMX_VIDEO_SKIP
366
#endif
367
#endif
368
369
#define CONFIG_IOMUX_LPSR
370
......
375
#endif
第
29~39
行,设置
DRAM
的大小,宏
PHYS_SDRAM_SIZE
就是板子上
DRAM
的大小,
如果用的
NXP
官方的
9X9 EVK
开发板的话
DRAM
大小就为
256MB
。否则的话默认为
512MB
,
正点原子的
I.MX6U-ALPHA
开发板用的是
512MB DDR3
。
第
50
行,定义宏
CONFIG_DISPLAY_CPUINFO
,
uboot
启动的时候可以输出
CPU
信息。
第
51
行,定义宏
CONFIG_DISPLAY_BOARDINFO
,
uboot
启动的时候可以输出板子信息。
第
54
行,
CONFIG_SYS_MALLOC_LEN
为
malloc
内存池大小,这里设置为
16MB
。
第
56
行,定义宏
CONFIG_BOARD_EARLY_INIT_F
,这样
board_init_f
函数就会调用
board_early_init_f
函数。
第
57
行,定义宏
CONFIG_BOARD_LATE_INIT
,这样
board_init_r
函数就会调用
board_late_init
函数。
第
59
、
60
行,使能
I.MX6ULL
的串口功能,宏
CONFIG_MXC_UART_BASE
表示串口寄
存器基地址,这里使用的串口
1
,基地址为
UART1_BASE
,
UART1_BASE
定义在文件
arch/arm/include/asm/arch-mx6/imx-regs.h
中,
imx-regs.h
是
I.MX6ULL
寄存器描述文件,根据
imx-regs.h
可得到
UART1_BASE
的值如下:
UART1_BASE= (ATZ1_BASE_ADDR + 0x20000)
=AIPS1_ARB_BASE_ADDR + 0x20000
=0x02000000 + 0x20000
=0X02020000
第
63
、
64
行,
EMMC
接在
I.MX6ULL
的
USDHC2
上,宏
CONFIG_SYS_FSL_ESDHC_ADDR
为
EMMC
所使用接口的寄存器基地址,也就是
USDHC2
的基地址。
第
67~72
行,跟
NAND
相关的宏,因为
NAND
和
USDHC2
的引脚冲突,因此如果使用
NAND
的只能使用一个
USDHC
设备
(SD
卡
)
。如果没有使用
NAND
,那么就有两个
USDHC
设
备
(EMMC
和
SD
卡
)
,宏
CONFIG_SYS_FSL_USDHC_NUM
表示
USDHC
数量。
EMMC
版本的
核心版没有用到
NAND
,所以
CONFIG_SYS_FSL_USDHC_NUM=2
。
第
75~81
,和
I2C
有关的宏定义,用于控制使能哪个
I2C
,
I2C
的速度为多少。
第
98~111
行,宏
CONFIG_MFG_ENV_SETTINGS
定义了一些环境变量,使用
MfgTool
烧
写系统时候会用到这里面的环境变量。
第
113~202
行,通过条件编译来设置宏
CONFIG_EXTRA_ENV_SETTINGS
, 宏
CONFIG_EXTRA_ENV_SETTINGS
也是设置一些环境变量,此宏会设置
bootargs
这个环境变
量,后面我们会详细分析这个宏定义。
第
204~217
行,设置宏
CONFIG_BOOTCOMMAND
,此宏就是设置
环境变量 bootcmd
的
值。后面会详细的分析这个宏定义。
第
220~222
行,设置命令
memtest
相关宏定义,比如使能命令
memtest
,设置
memtest
测试
的内存起始地址和内存大小。
第
224
行,宏
CONFIG_SYS_LOAD_ADDR
表示
linux kernel
在
DRAM
中的加载地址,也
就是
linux kernel
在
DRAM
中的存储首地址,
CONFIG_LOADADDR=0X80800000
。
第
225
行,宏
CONFIG_SYS_HZ
为系统时钟频率,这里为
1000Hz
。
第
227
行,宏
CONFIG_STACKSIZE
为栈大小,这里为
128KB
。
第
230
行,宏
CONFIG_NR_DRAM_BANKS
为
DRAM BANK
的数量,
I.MX6ULL
只有一
个
DRAM BANK
,我们也只用到了一个
BANK
,所以为
1
。
第
231
行,宏
PHYS_SDRAM
为
I.MX6ULL
的
DRAM
控制器
MMDC0
所管辖的
DRAM
范
围起始地址,也就是
0X80000000
。
第
233
行,宏
CONFIG_SYS_SDRAM_BASE
为
DRAM
的起始地址。
第
234
行,宏
CONFIG_SYS_INIT_RAM_ADDR
为
I.MX6ULL
内部
IRAM
的起始地址
(
也
就是
OCRAM
的起始地址
)
,为
0X00900000
。
第
235
行,宏
CONFIG_SYS_INIT_RAM_SIZE
为
I.MX6ULL
内部
IRAM
的大小
(OCRAM
的大小
)
,为
0X00040000=128KB
。
第
237~240
行,宏
CONFIG_SYS_INIT_SP_OFFSET
和
CONFIG_SYS_INIT_SP_ADDR
与
初始
SP
有关,第一个为初始
SP
偏移,第二个为初始
SP
地址。
第
256
行,宏
CONFIG_SYS_MMC_ENV_DEV
为默认的
MMC
设备,这里默认为
USDHC2
,
也就是
EMMC
。
第
257
行,宏
CONFIG_SYS_MMC_ENV_PART
为模式分区,默认为第
0
个分区。
第
258
行,宏
CONFIG_MMCROOT
设置进入
linux
系统的根文件系统所在的分区,这里设
置为
"/dev/mmcblk1p2"
,也就是
EMMC
设备的第
2
个分区。第
0
个分区保存
uboot
,第
1
个分
区保存
linux
镜像和设备树,第
2
个分区为
Linux
系统的根文件系统。
第
277~291
行,与
NAND
有关的宏定义,如果使用
NAND
的话。
第
293
行,宏
CONFIG_ENV_SIZE
为环境变量大小,默认为
8KB
。
第
294~308
行,宏
CONFIG_ENV_OFFSET
为环境变量偏移地址,这里的偏移地址是相对
于存储器的首地址。如果环境变量保存在
EMMC
中的话,环境变量偏移地址为
12*64KB
。如
果环境变量保存在
SPI FLASH
中的话,偏移地址为
768*1024
。如果环境变量保存在
NAND
中
的话,偏移地址为
60<<20(60MB)
,并且重新设置环境变量的大小为
128KB
。
第
312~323
行,与
USB
相关的宏定义。
第
325~342
行,与网络相关的宏定义,比如使能
dhcp
、
ping
等命令。第
331
行的宏
CONFIG_FEC_ENET_DEV
指定
uboot
所使用的网口,
I.MX6ULL
有两个网口,为
0
的时候使
用
ENET1
,为
1
的时候使用
ENET2
。宏
IMX_FEC_BASE
为
ENET
接口的寄存器首地址,宏
CONFIG_FEC_MXC_PHYADDR
为网口
PHY
芯片的地址。宏
CONFIG_FEC_XCV_TYPE
为
PHY
芯片所使用的接口类型,
I.MX6U-ALPHA
开发板的两个
PHY
都使用的
RMII
接口。
第
344~END
,剩下的都是一些配置宏,比如
CONFIG_VIDEO
宏用于开启
LCD
,
CONFIG_VIDEO_LOGO
使能
LOGO
显示,
CONFIG_CMD_BMP
使能
BMP
图片显示指令。这
样就可以在
uboot
中显示图片了,一般用于显示
logo
。
3、添加开发板对应板级文件夹
3.1 NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下
cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_emmc
进 入
mx6ull_alientek_emmc
目 录 中 , 将 其 中 的
mx6ullevk.c
文 件 重 命 名 为
mx6ull_alientek_emmc.c
,如下:
cd mx6ull_alientek_emmc
mv mx6ullevk.c mx6ull_alientek_emmc.c
3.2修改mx6ull_alientek_emmc 目录下的 Makefile 文件
1
#
(
C
)
Copyright
2015
Freescale Semiconductor
,
Inc
.
2
#
3
# SPDX
-
License
-
Identifier
:
GPL
-
2.0
+
4
#
5
6
obj
-
y
:=
mx6ull_alientek_emmc
.
o
7
8
extra
-
$
(
CONFIG_USE_PLUGIN
) :=
plugin
.
bin
9
$
(
obj
)/
plugin
.
bin
:
$
(
obj
)/
plugin
.
o
10
$
(
OBJCOPY
) -
O binary
--
gap
-
fill
0xff
$
<
$@
重点是第
6
行的
obj-y
,改为
mx6ull_alientek_emmc.o,这样才会编译 mx6ull_alientek_emmc.c这个文件
3.3修改改 mx6ull_alientek_emmc 目录下的 imximage.cfg 文件
将
imximage.cfg
中的下面一句:
PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000
改为:
PLUGIN board/freescale/mx6ull_alientek_emmc /plugin.bin 0x00907000
3.4 修改 mx6ull_alientek_emmc 目录下的 Kconfig 文件
1
if
TARGET_MX6ULL_ALIENTEK_EMMC
2
3
config SYS_BOARD
4
default
"mx6ull_alientek_emmc"
5
6
config SYS_VENDOR
7
default
"freescale"
8
9
config SYS_SOC
10
default
"mx6"
11
12
config SYS_CONFIG_NAME
13
default
"mx6ull_alientek_emmc"
14
15
endif
3.5 修改 mx6ull_alientek_emmc 目录下的 MAINTAINERS 文件
1
MX6ULL_ALIENTEK_EMMC BOARD
2
M
:
Peng Fan
<
peng
.
fan@nxp
.
com
>
3
S
:
Maintained
4
F
:
board
/
freescale
/
mx6ull_alientek_emmc
/
5
F
:
include
/
configs
/
mx6ull_alientek_emmc
.
h
3.6 修改
U-Boot
图形界面配置文件
修改文件 arch/arm/cpu/armv7/mx6/Kconfig
在207行加入如下内容:
1
config TARGET_MX6ULL_ALIENTEK_EMMC
2
bool
"Support mx6ull_alientek_emmc"
3
select MX6ULL
4
select DM
5
select DM_THERMAL
在最后一行的
endif
的前一行添加如下内容:
1
source
"board/freescale/mx6ull_alientek_emmc/Kconfig"
4、使用新的板子配置文件编译uboot
新建
mx6ull_alientek_emmc.sh 文件,输入如下内容:
1
#
!
/bin/bash
2
make ARCH
=
arm CROSS_COMPILE
=
arm
-
linux
-
gnueabihf
-
distclean
3
make ARCH
=
arm CROSS_COMPILE
=
arm
-
linux
-
gnueabihf
- (
加空格
)
mx6ull_alientek_emmc_defconfig
4
make V
=
1
ARCH
=
arm CROSS_COMPILE
=
arm
-
linux
-
gnueabihf
- -
j16
给脚本文件赋予权限并且运行:
chmod 777 mx6ull_alientek_emmc.sh
./mx6ull_alientek_emmc.sh
编译完成之后,执行如下指令,看新添加的mx6ull_alientek_emmc.h是否被编译进去:
grep -nR "mx6ull_alientek_emmc.h"
5、uboot LCD驱动修改适配
要考虑的点:
LCD
所使用的
GPIO
,查看
uboot
中
LCD
的
IO
配置是否正确。
LCD
背光引脚
GPIO
的配置。
LCD
配置参数是否正确。
打开文件
mx6ull_alientek_emmc.c
,查看修改LCD配置参数:
1
struct
display_info_t
const
displays
[] = {{
2
.
bus
=
MX6UL_LCDIF1_BASE_ADDR
,
3
.
addr
=
0
,
4
.
pixfmt
=
24
,
5
.
detect
=
NULL
,
6
.
enable
=
do_enable_parallel_lcd
,
7
.
mode
= {
8
.
name
=
"TFT7016"
,
9
.
xres
=
1024
,
10
.
yres
=
600
,
11
.
pixclock
=
19531
, //修改的适配TFT70167寸显示屏参数
12
.
left_margin
=
140
,
//HBPD
13
.
right_margin
=
160
,
//HFPD
14
.
upper_margin
=
20
,
//VBPD
15
.
lower_margin
=
12
,
//VFBD
16
.
hsync_len
=
20
,
//HSPW
17
.
vsync_len
=
3
,
//VSPW
18
.
sync
=
0
,
19
.
vmode
=
FB_VMODE_NONINTERLACED
20
} } };
打开
mx6ull_alientek_emmc.h
,找到所有如下语句:
panel=TFT43AB
将其改为:
panel=TFT7016
也就是设置
panel
为
TFT7016
,
panel
的值要与示例代码
33.2.6.4
中的
.name
成员变量的值 一致。修改完成以后重新编译一遍 uboot
并烧写到
SD
中启动。
重新启动uboot,打印panel的值,有可能还是TFT43AB,
因为之前有将环境变量保存到
EMMC
中,
uboot
启动以后会先从
EMMC
中读取环境
变量,如果
EMMC
中没有环境变量的话才会使用
mx6ull_alientek_emmc.h
中的默认环境变量.
setenv panel TFT7016
saveenv
uboot系统会打印enc write to emmc ... Ok