100ASK-IMX6ULL开发板移值NXP官方UBOOT

1. 开发环境

  1. gcc: 100ask_imx6ull-sdk\ToolChain\gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf
  2. uboot: uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
    gcc可以在百问网提供的bsp包找到,uboot使用的是nxp官方的uboot, 点击下载uboot。本文参考了正点原子的imx6ull左神的uboot移值教程(非常感谢左神的教程)。

2. 在UBOOT中添加自己的开发板

2.1 添加开发板配置文件

configs目录下创建开发板配置文件,复制configs/mx6ull_14x14_evk_emmc_defconfig并重命名为mx6ull_100ask_emmc_defconfig,并修改内容为:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_100ask_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_100ASK_EMMC=y
CONFIG_CMD_GPIO=y

PS:将MX6ULL_EVK_EMMC_REWORK修改为MX6ULL_100ASK_EMMC_REWORK后,uboot的MMC驱动不能用了,识别不了sd卡和eMMC,不知道为什么。

2.2 添加开发板对应的头文件

在目录include/configs下添加100ask开发板对应的头文件,复制include/configs/mx6ullevk.h,并重命名为mx6ull_100ask_emmc.h,将:

#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H

修改为:

#ifndef __MX6ULL_100ASK_EMMC_CONFIG_H
#define __MX6ULL_100ASK_EMMC_CONFIG_H

2.3 添加开发板对应的板级文件夹

uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等,nxp的imx系列芯片的板级文件夹都存放在board/freescale中,因为飞思卡尔被nxp收购了,所以文件夹名字是freescale

  1. 复制board/freescale/mx6ullevk文件夹并重命名为mx6ull_100ask_emmc
  2. board/freescale/mx6ull_100ask_emmc下的mx6ullevk.c重命为mx6ull_100ask_emmc.c
  3. 修改board/freescale/mx6ull_100ask_emmc下的Makefile文件,将
obj-y  := mx6ullevk.o

修改为:

obj-y  := mx6ul_100ask_emmc.o

这样才会编译mx6ull_100ask_emmc.c
   4. 修改board/freescale/mx6ull_100ask_emmc下的imximage.cfg 文件,将34行的

PLUGIN	board/freescale/mx6ullevk/plugin.bin 0x00907000

修改为:

PLUGIN	board/freescale/mx6ull_100ask_emmc/plugin.bin 0x00907000
  1. 修改board/freescale/mx6ull_100ask_emmc目录下的 Kconfig 文件,修改后内容如下:
if TARGET_MX6ULL_100ASK_EMMC

config SYS_BOARD
	default "mx6ull_100ask_emmc"

config SYS_VENDOR
	default "freescale"

config SYS_CONFIG_NAME
	default "mx6ull_100ask_emmc"

endif
  1. 修改board/freescale/mx6ull_100ask_emmc目录下的 MAINTAINERS 文件,修改后内容如下:
MX6ULL_100ASK_EMMC BOARD
M:	Peng Fan <peng.fan@nxp.com>
S:	Maintained
F:	board/freescale/mx6ull_100ask_emmc/
F:	include/configs/mx6ull_100ask_emmc.h
F:	configs/mx6ull_100ask_emmc_defconfig

2.4 修改UBOOT图形界面配置文件

修改文件修改文件arch/arm/cpu/armv7/mx6/Kconfig,在207行加入以下内容:

config TARGET_MX6ULL_100ASK_EMMC
	bool "Support mx6ull_100ask_emmc"
	select MX6ULL
	select DM
	select DM_THERMAL

在endif前加入:

source "board/freescale/mx6ull_100ask_emmc/Kconfig"

2.5 编译下载测试新添加的开发板

编译新添加的开发板:

make distclean
make mx6ull_100ask_emmc_defconfig
make -j4

查看串口输出如下:
uboot输出
从上图可看出uboot的LCD和网络是不能用的,接下来需要修改LCD和网络驱动。

3. LCD驱动修改

一般uboot的驱动都是在xxx.c和xxx.h中修改,xxx为板子名称,比如mx6ull_100ask_emmc.cmx6ull_100ask_emmc.h两个文件,修改LCD驱动时应注意一下几点:

  1. LCD所使用的GPIO。
  2. LCD背光控制和RESET引脚。
  3. LCD参数配置。

imx6ull的LCD有固定的引脚,所以只需要修改背光引脚和参数。

3.1 LCD背光和RESET引脚修改

mx6ull_100ask_emmc.c中的第777行可以看出,nxp官方使用的也是GPIO1_IO8来控制LCD背光的,所以不用修改,而RESET引脚在100ask开发板中是接了电阻上拉的,如下图所示:
在这里插入图片描述
这里的电路应该是上电自动复位,上电后通过电容c18复位一下LCD,所以不需要设置RESET引脚,但是nxp官方使用了LCD的reset引脚,代码如下:

771 /* Reset the LCD */
772 gpio_direction_output(IMX_GPIO_NR(5, 9) , 0);
773 udelay(500);
774 gpio_direction_output(IMX_GPIO_NR(5, 9) , 1);

直接注释掉该代码即可。

3.2 LCD参数配置

由于nxp官方的开发板是不支持100ask的1024x600的屏的,所以需要修改,在mx6ull_100ask_emmc.c中的第780的display_info_t结构体中定义了LCD相关参数:

struct display_info_t const displays[] = {
   {
   
	.bus = MX6UL_LCDIF1_BASE_ADDR,
	.addr = 0,
	.pixfmt = 24,
	.detect = NULL,
	.enable	
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值