IMX6ULL-UBOOT驱动移植

介绍

IMX6ULL正点原子开发板使用的是14x14_evk的芯片 其中14x14代表的是芯片的尺寸。
本教程的标识符以nsouther或者 NSOUTHER NSouther为主

添加板子自己的配置文件

板子的默认配置文件保存在 configs目录下,我们以mx6ull_14x14_evk_emmc_defconfig为主,将其复制一份并重命名为 mx6ull_14x14_nsouther_defconfig

cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_14x14_nsouther_emmc_defconfig 

然后修改mx6ull_14x14_nsouther_emmc_defconfig的内容 如下所示

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

image.png
其中我们需要修改的是CONFIG_SYS_EXTRA_OPTIONS 将板子的配置文件改成mx6ull_nsouther_emmc 这个文件夹我们将在下一步创建
其次是修改初始化配置CONFIG_TARGET_MX6ULL_NSOUTHER_EMMC=y 记住这个配置后面要用!!!

添加开发板对应的头文件

进入include/configs文件夹,在这里的配置文件我们主要以mx6ullevk.h为主 在它的基础上修改。

cp -rf  mx6ullevk.h mx6ull_nsouther_emmc.h 

在这里我们主要修改头文件的宏定义,因为是拷贝的evk.h中的 所以要修改这个不能和他重复就行了 这里的宏定义可以随便起 但是最好是具有辨识度并且不重复。
image.png
其次在这个文件夹中我们还要修改网口地址 将335行的PHY地址修改为**0x0 ,**6ULL板子上有两个网口 网口1的地址为0x0 网口2的地址为0x1 上面的宏定义为1 表示我们选择ETH2网口作为UBOOT网络通信的网口
image.png

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

进入board/freescale目录下 这个目录主要存放的是freescale芯片不同板子对于的配置文件,这里我们以mx6ullevk为主进行修改配置

cd board/freesacle
cp -rf mx6ullevk mx6ull_nsouther_emmc

在这个mx6ull_nsouther_emmc配置文件夹中我们主要关注以下几个文件

mx6ull_nsouther_emmc.c
imximage_lpddr2.cfg
imximage.cfg
Kconfig
MAINTAINERS
Makefile

image.png

  • mx6ull_nsouther_emmc.c

在这个文件中 我们主要修改网口的的复位管脚,使其可以成功复位
首先屏蔽掉原始的配置文件 新增和板子对应的GPIO复位管脚 对于ETN1是IO5_IO07
对于ETH2是IO5_IO08
image.png

找到下面这一段配置文件 因为前面我们已经注释掉了他的配置文件 所以将这段删除掉

static iomux_v3_cfg_t const iox_pads[] = {
/* IOX_SDI */
MX6_PAD_BOOT_MODE0__GPIO5_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
/* IOX_SHCP */
MX6_PAD_BOOT_MODE1__GPIO5_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL),
/* IOX_STCP */
MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
/* IOX_nOE */
MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
};

接下来是屏蔽74lv芯片的初始化配置功能,这里需要屏蔽两个函数 分别是
iox74lv_init iox74lv_set 这两个函数
image.png

修改fec1_pads 和fec2_pads配置信息 添加板子的复位引脚 在最后一行分别加入以下信息

//fec1
MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
//fec2
MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL)

image.png在下面的 setup_iomux_fec修改成以下的形式

static void setup_iomux_fec(int fec_id)
{
	if (fec_id == 0)
	{
		imx_iomux_v3_setup_multiple_pads(fec1_pads,
						 ARRAY_SIZE(fec1_pads));
		gpio_direction_output(ENET1_RESET, 1);
		gpio_set_value(ENET1_RESET, 0);
		mdelay(20);
		gpio_set_value(ENET1_RESET, 1);
	}
		
	else
	{
		imx_iomux_v3_setup_multiple_pads(fec2_pads,
						 ARRAY_SIZE(fec2_pads));
		gpio_direction_output(ENET2_RESET, 1);
		gpio_set_value(ENET2_RESET, 0);
		mdelay(20);
		gpio_set_value(ENET2_RESET, 1);
	}
		
}

image.png
找到**board_init() **,因为我们前面屏蔽掉了74lv的初始化函数 所以在board_init中屏蔽掉这两个函数
image.png

  • imximage_lpddr2.cfg

修改PLUGIN中的信息 替换为我们板级文件所在的地址
image.png

  • imximage.cfg

同样做替换
image.png

  • Kconfig

Kconfig中主要做以下修改 记住这个 if后面的 TARGET_MX6ULL_NSOUTHER_EMMC
与我们在上面的defconfig配置文件中的修改一致
image.png
image.png

  • MAINTAINERS

主要修改板级文件夹的路径 和.h头文件的路径

image.png

  • Makefile

在Makefile中主要修改obj-y 将其改成mx6ull_nsouther_emmc.o 有了这个目标才会去编译对应的文件
image.png

修改Kconfig图形化配置

找到 arch/arm/cpu/armv7/mx6/Kconfig,添加下面的内容注意这个config的内容与我们上面标红的 TARGET_MX6ULL_NSOUTHER_EMMC保持一致

config TARGET_MX6ULL_NSOUTHER_EMMC
	bool "Support mx6ull_nsouther_emmc"
	select MX6ULL
	select DM
	select DM_THERMAL

image.png

修改driver中的phy驱动

在** drivers/net/phy/phy.c 中 找到 genphy_update_link()函数 做以下修改。**

if (lan8720_flag == 0) {
		bmcr_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR);
		phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);
		while(phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR) & 0X8000) {
		udelay(100);
	}
		phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, bmcr_reg);
		lan8720_flag = 1;
	}

image.png

编译测试

首先先清除下工程

make distclean
make mx6ull_14x14_nsouther_emmc_defconfig
make -j6

image.png
将其下载到板子
时间正确,网络正常
image.png
image.png

测试网络信息

将ETH2通过网线连接到路由器 这里我路由器的网段是192.168.100的网段 配置的nfs服务器 以及 tftpboot服务器网址为192.168.100.20

setenv ipaddr 192.168.100.20
setenv serverip 192.168.100.80
setenv gatewayip 192.168.100.1
setenv netmask 255.255.255.0
setenv ethaddr 00:04:9f:04:f2:35

saveenv

接下来我们ping一下主机 网络正常
image.png

测试tftpboot

前提是已经搭建好了tftpboot服务端 这里我们使用tftpboot命令下载内核
下载成功
image.png

网络部分移植测试到此结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值