官网下载U-boot
添加板级信息
设备树移植
在arch/arm/dts文件夹下添加设备树文件imx6ull-alientek.dts
,初始内容和imx6ull-14x14-evk.dts相同
由于正点原子的phy芯片复位引脚与evk评估板的spi4引脚冲突,所以将spi4禁用,在设备树根节点\
下添加以下代码:
spi4 {
status = "disabled";
};
还需要将引脚复用删除,并将引脚添加到phy的引脚复用节点内
&iomuxc {
pinctrl_spi4: spi4grp {
fsl,pins = <
MX6UL_PAD_BOOT_MODE0__GPIO5_IO10 0x70a1
MX6UL_PAD_BOOT_MODE1__GPIO5_IO11 0x70a1
>;
};
pinctrl_enet1: enet1grp {
fsl,pins = <
MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0
MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0
MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0
MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031
MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10b0
>;
};
pinctrl_enet2: enet2grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x1b0b0
MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x1b0b0
MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0
MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0
MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0
MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031
MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x10b0
>;
};
};
pinctrl_spi4内删除了MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07
和MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08
引脚,因为与phy的reset引脚冲突
enet1grp节点下添加了MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07
,值为0x10b0
enet2grp节点下添加了MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08
,值为0x10b0
在fec1和fec2节点分别添加复位引脚,并删除原来mdio中的ethernet-phy@2节点,重新创建节点并修改id为0
&fec1 {
phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;
phy-reset-duration = <25>;
};
&fec2 {
phy-reset-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
phy-reset-duration = <25>;
mdio {
/delete-node/ ethernet-phy@2;
ethphy0: ethernet-phy@0 {
reg = <0>;
smsc,led-mode = <1>;
clocks = <&clks IMX6UL_CLK_ENET_REF>;
clock-names = "rmii-ref";
};
ethphy1: ethernet-phy@1 {
smsc,led-mode = <1>;
};
};
};
defconfig移植
在configs文件下添加mx6ull_alientek_defconfig
文件,参考mx6ull_14x14_evk_defconfig
找到CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk",修改为imx6ull-alientek
CONFIG_TARGET_MX6ULL_14X14_EVK改为CONFIG_TARGET_MX6ULL_ALIENTEK
添加phy芯片LAN8720a的驱动支持CONFIG_PHY_SMSC=y
头文件移植
在include/configs文件夹下添加mx6ull_alientek.h
文件,参考mx6ullevk.h文件
修改__MX6ULLEVK_CONFIG_H为__MX6ULL_ALIENTEK_CONFIG_H
在#define CONFIG_EXTRA_ENV_SETTINGS
下添加网络参数信息
"ipaddr=192.168.64.10\0" \
"gatewayip=192.168.64.1\0" \
"netmask=255.255.255.0\0" \
"serverip=192.168.64.5\0" \
"ethaddr=6a:14:41:5e:86:0c\0" \
"eth1addr=6a:14:41:5e:86:0d\0" \
板级初始化文件移植
在board/freescale文件夹下添加板级文件夹mx6ull_alientek
,参考mx6ullevk文件夹
修改文件夹下所有文件的名称路径等
删除int board_phy_config(struct phy_device *phydev)函数
配置菜单Kconfig移植
修改arch/arm/mach-imx/mx6/Kconfig
下
参考TARGET_MX6ULL_14X14_EVK 新增配置选项
config TARGET_MX6ULL_ALIENTEK
bool "Support mx6ull_alientek"
depends on MX6ULL
select BOARD_LATE_INIT
select DM
select DM_THERMAL
imply CMD_DM
文件末尾endif前添加source "board/freescale/mx6ull_alientek/Kconfig"
编译
编译环境准备:
sudo apt install gcc-arm-linux-gnueabihf bison flex libssl-dev
开始编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_alientek_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
写入SD卡,其中/dev/sda替换成实际设备
sudo dd iflag=dsync oflag=dsync if=u-boot-dtb.imx of=/dev/sda bs=512 seek=2