官网下载U-boot

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_IO07MX6UL_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
最后修改:2022 年 06 月 30 日
如果觉得我的文章对你有用,请随意赞赏