当前位置:首页 > 编程笔记 > 正文
已解决

(二)正点原子I.MX6ULL u-boot移植

来自网友在路上 11038103提问 提问时间:2023-11-12 15:51:48阅读次数: 103

最佳答案 问答题库1038位专家为你答疑解惑

一、概述

        这里使用的是NXP官方2022.04发布的uboot,移植到正点原子阿尔法开发板(v2.1)

        u-boot下载:git@github.com:nxp-imx/uboot-imx.git

        移植是基于NXP的mx6ull_14x14_evk

二、编译NXP官方uboot

        进入NXP的u-boot目录

         先在Makefile里把CROSS_COMPILE改了       

        打开终端

make mx6ull_14x14_evk_defconfigmake -j16

        

三、添加开发板

        这一步基本上和正点原子里的教程是一样的,把板子文件给复制一下

make distclean
cp configs/mx6ull_14x14_evk_defconfig configs/mx6ull_alientek_defconfig
cp board/freescale/mx6ullevk/ board/freescale/mx6ull_alientek -rf
cp arch/arm/dts/imx6ull-14x14-evk.dts arch/arm/dts/imx6ull-alientek.dts
cp arch/arm/dts/imx6ul-14x14-evk.dtsi arch/arm/dts/imx6ull-alientek.dtsi
cp arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi arch/arm/dts/imx6ull-alientek-u-boot.dtsicp include/configs/mx6ullevk.h include/configs/mx6ull_alientek.h
cd board/freescale/mx6ull_alientek/
mv mx6ullevk.c mx6ull_alientek.c

1.修改mx6ull_alientek_defconfig

打开configs/mx6ull_alientek_defconfig,第10行和第14行

CONFIG_TARGET_MX6ULL_14X14_EVK=yCONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk"修改为:CONFIG_TARGET_MX6ULL_ALIENTEK=y
CONFIG_DEFAULT_DEVICE_TREE="imx6ull-alientek"

2.修改 board文件夹文件

打开board/freescale/mx6ull_alientek/Kconfig

第一行改为刚才defconfig里一样的TARGET即可

if TARGET_MX6ULL_14X14_EVK || TARGET_MX6ULL_9X9_EVK改为:if TARGET_MX6ULL_ALIENTEK

第12行,修改路径

config IMX_CONFIGdefault "board/freescale/mx6ullevk/imximage.cfg"修改为:config IMX_CONFIGdefault "board/freescale/mx6ull_alientek/imximage.cfg"

打开MAINTAINERS

F:    board/freescale/mx6ullevk/
F:    include/configs/mx6ullevk.h
F:    configs/mx6ull_14x14_evk_defconfig
F:    configs/mx6ull_14x14_evk_plugin_defconfig
F:    configs/mx6ulz_14x14_evk_defconfig修改为:F:    board/freescale/mx6ull_alientek/
F:    include/configs/mx6ull_alientek.h
F:    configs/mx6ull_mx6ull_alientek_defconfig

打开Makefile

obj-y := mx6ullevk.o修改为:obj-y := mx6ull_alientek.o

imximage_lpddr2.cfg和imximage.cfg的 34行和33行那个路径,全都改成当前板子路径:board/freescale/mx6ull_alientek/plugin.bin

3.修改Kconfig

        打开arch/arm/mach-imx/mx6/Kconfig,找到第615行的config TARGET_MX6ULL_14X14_EVK

config TARGET_MX6ULL_14X14_EVKbool "Support mx6ull_14x14_evk"depends on MX6ULLselect BOARD_LATE_INITselect DMselect DM_THERMALselect IMX_MODULE_FUSEselect OF_SYSTEM_SETUPimply CMD_DM

复制一份,粘贴到它后面,然后修改如下:

config TARGET_MX6ULL_ALIENTEKbool "Support mx6ull_alientek"depends on MX6ULLselect BOARD_LATE_INITselect DMselect DM_THERMALselect IMX_MODULE_FUSEselect OF_SYSTEM_SETUPimply CMD_DM

找到第873行:

source "board/freescale/mx6ullevk/Kconfig"

复制一份,然后改成alientek板子路径:

source "board/freescale/mx6ull_alientek/Kconfig"

打开include/configs/mx6ull_alientek.h

在第235行前加入:

#define	CONFIG_PHY_SMSC
#define	CONFIG_CMD_MII

做完以上这些,就将板子添加进去了,可以尝试编译一下:

make distclean
make mx6ull_alientek_defconfig
make -j16

        打开mx6ull_alientek.c,找到checkboard函数,修改成阿尔法开发板:

int checkboard(void)
{puts("Board: MX6ULL ALIENTEK ALPHA\n");return 0;
}

        

四、修改设备树

        所谓移植,其实就是改设备树,而且正点原子基本参照着NXP官方板子做的,没什么太多特别的地方需要改,主要是网络驱动

1.imx6ull-alientek.dts

        把include引用改为我们复制好的,注意一下自己的是imx6ull还是imx6ul,官方这里两个都是imx6ul

#include "imx6ul-14x14-evk.dtsi"#include "imx6ul-14x14-evk-u-boot.dtsi"修改为#include "imx6ull-alientek.dtsi"#include "imx6ull-alientek-u-boot.dtsi"

2.imx6ull-alientek.dtsi

        这个就是移植的主阵地,最主要的还是网络驱动,正点原子使用的LAN8720(V2.1及之前的版本)

        找到fec2节点:ethphy0是fec0,地址改为0,ethph1是fec2,地址改为1,修改后如下:

&fec2 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_enet2>;phy-mode = "rmii";phy-handle = <&ethphy1>;status = "okay";mdio {#address-cells = <1>;#size-cells = <0>;ethphy0: ethernet-phy@0 {reg = <0>;micrel,led-mode = <1>;clocks = <&clks IMX6UL_CLK_ENET_REF>;clock-names = "rmii-ref";};ethphy1: ethernet-phy@1 {reg = <1>;micrel,led-mode = <1>;clocks = <&clks IMX6UL_CLK_ENET2_REF>;clock-names = "rmii-ref";};};
};

然后按照正点原子的教程,修改drivers/net/phy/phy.c

        如果是emmc的板子,再修改一下usdhc2,不改也能用:

&usdhc2 {pinctrl-names = "default", "state_100mhz", "state_200mhz";pinctrl-0 = <&pinctrl_usdhc2_8bit>;pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;bus-width = <8>;non-removable;no-1-8-v;broken-cd;keep-power-in-suspend;wakeup-source;status = "okay";
};

打开imx6ull-alientek.dts

修改一下model和compatible(不改也没事,只是打印输出一个信息而已)

/ {model = "I.MX6ULL Alientek ALPHA ";compatible = "fsl,imx6ull-alientek", "fsl,imx6ull";
};

至此,uboot的移植就结束了,设备树里不需要用到的东西删掉即可。

可以看到输出Model:I.MX6ULL Alientek ALPHA

Board:MX6ULL ALIENTEK ALPHA

        测试一下网络:先配置网络

setenv ipaddr 192.168.1.3
setenv eth1addr 00:01:02:03:04:05
setenv netmaks 255.255.255.0
setenv serverip 192.168.1.2
saveenv

        然后ping一下电脑

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"(二)正点原子I.MX6ULL u-boot移植":http://eshow365.cn/6-38203-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!