1. 引言
本文使用的开发板是百问网IMX6ULL_PRO开发板,使用的Uboot源码版本为2017.03。
1.1 Uboot源码目录
类型 | 名字 | 描述 | 备注 |
---|---|---|---|
文件夹 | api | 与硬件无关的API函数 | |
arch | 与架构体系有关的代码 | ||
board | 不同开发板的定制代码 | ||
cmd | 命令相关代码 | ||
common | 通用代码 | ||
configs | 配置文件 | ||
disk | 磁盘分区相关代码 | ||
doc | 文档 | ||
drivers | 驱动代码 | ||
dts | 设备树 | ||
examples | 实例代码 | ||
fs | 文件系统 | ||
include | 头文件 | ||
lib | 库文件 | ||
Licenses | 许可证相关代码 | ||
net | 网络相关代码 | ||
post | 上电自检程序 | ||
sripts | 脚本文件 | ||
test | 测试代码 | ||
tools | 工具文件夹 | ||
文件 | .config | 配置文件,Makefile根据此文件编译Uboot或内核 | 编译defconfig文件后生成 |
.gitignore | git工具相关文件 | uboot自带 | |
.mailmap | 邮件列表 | ||
.u-boot.xxx.cmd | 这是一系列的文件,用于保存一些命令 | 编译生成的文件 | |
config.mk | 某个Makefile会调用此文件 | uboot自带 | |
imxdownload | 正点原子编写的SD卡烧写软件 | 正点原子提供 | |
Kbuild | 用于生成一些和汇编有关的文件 | uboot自带 | |
Kconfig | 图形配置界面描述文件 | ||
MAINTAINERS | 维护者联系方式文件 | ||
MAKEALL | 一个shell脚本文件,帮助编译uboot的 | ||
Makefile | 主Makefile | ||
README | 说明文档 | ||
isnapshot.commit | 不知道是干啥的 | ||
System.map | 系统映像文件 | 编译出来的文件 | |
u-boot | 编译出来的u-boot文件 | ||
u-boot.xxx | 生成的一些u-boot相关文件,包括u-boot.bin、u-boot.imx等 |
1.2 与移植相关的目录
目录 | 说明 | 备注 |
---|---|---|
configs | 该文件夹下存放的是不同开发板的默认配置文件 | 默认配置文件决定编译哪个文件,不编译哪个文件 |
board/freescale | 飞思卡尔开发板的定制代码文件夹。imx6ull是飞思卡尔的芯片,飞思卡尔被恩智浦收购了 | |
include/configs | 该文件夹也是配置文件夹,与板子的特性相关的配置文件 |
2. 烧写NXP官方开发板的uboot编译测试
2.1 查找官方开发板的默认配置文件
找到NXP官网开发板的默认配置文件mx6ull_14x14_evk_emmc_defconfig
,文件路径为Uboot-2017.03/configs
。
2.2 编译并烧写
2.2.1 编译uboot
在uboot源码的根目录下执行以下命令,编译uboot。
make distclean # 清除之前编译时生成的所有文件
make mx6ull_14x14_evk_emmc_defconfig # 编译NXP官方evk开发板的默认配置文件,编译后会生成.config文件
make -j4 # 根据Makefile指定规则编译uboot
使用以上命令编译Uboot后,会在uboot源码的根目录下生成u-boot-dtb.imx
文件
2.2.2 烧写uboot至开发板
生成u-boot-dtb.imx
文件后就可以将其烧写至开发板EMMC或SD卡中,烧写方式有三种,如下:
- 使用开发板上的Linux系统来烧写
- 在windows下使用百问网提供的USB烧写工具100ask_imx6ull_flashing_tool.exe来烧写
- 在windows下使用正点原子提供的USB烧写工具imxdownload来烧写
本文使用第一种方法来烧写uboot至开发板,使用该方法的前提是开发板上已经运行了Linux系统并且挂在了nfs共享文件夹。如果要烧写至EMMC,则执行如下命令:
echo 0 > /sys/block/mmcblk1boot0/force_ro # 取消此分区的只读保护
dd if=u-boot-dtb.imx of=/dev/mmcblk1boot0 bs=512 seek=2 # 实际烧写命令
echo 1 > /sys/block/mmcblk1boot0/force_ro # 打开此分区的只读保护
如果要烧写至SD卡,则执行如下命令:
dd if=u-boot-dtb.imx of=/dev/mmcblk0 bs=512 seek=2
2.3 问题分析
将u-boot-dtb.imx文件烧写至emmc后重启开发板,可以看到uboot打印出如下信息:
可以看到图片中有 Net: No ethernet found
字样,即没有发现网卡。 然后,在uboot的命令行使用如下命令测试emmc是否正常:
mmc list # 查询mmc设备列表
mmc dev x # 查询指定的emmc设备
mmcinfo # 打印mmc信息
结果如下:
可以看出emmc正常。
因此,移植uboot时,可以对NXP官方imx6ullevk开发板的uboot文件进行修改,然后修复网络驱动,作为我们自己开发板的uboot。
3. 在Uboot中添加自己的开发板
3.1 添加并修改开发板的默认配置文件
1. 添加
在路径uboot-2017.03/configs
下复制一份nxp官方imx6ullevk开发板的默认配置文件并重命名,作为我们自己开发板的默认配置文件。指令如下:
cp configs/mx6ull_14x14_evk_emmc_defconfig configs/mx6ull_100ask_pro_emmc_defconfig
此处的mx6ull_100ask_pro_emmc_defconfig
即为我们自己开发板的默认配置文件。
2. 修改
创建好默认配置文件之后,要对其进行修改。首先使用如下命令用vim编辑器打开默认配置文件:
vi configs/mx6ull_100ask_pro_emmc_defconfig
修改前文件内容如下:
1 CONFIG_ARM=y
2 CONFIG_ARCH_MX6=y
3 CONFIG_TARGET_MX6ULL_14X14_EVK=y # 目标板名字
4 CONFIG_VIDEO=y
5 CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk-emmc" # 设备树名字,不带.dtb
6 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg" # 系统外部操作
7 CONFIG_BOOTDELAY=3
8 CONFIG_BOARD_EARLY_INIT_F=y
9 CONFIG_HUSH_PARSER=y
此时,要修改的分别为第1、5、6行,修改后的配置文件如下:
1 CONFIG_ARM=y
2 CONFIG_ARCH_MX6=y
3 CONFIG_TARGET_MX6ULL_100ASK_PRO_EMMC=y
4 CONFIG_VIDEO=y
5 CONFIG_DEFAULT_DEVICE_TREE="imx6ull-100ask-pro-emmc"
6 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_100ask_pro_emmc/imximage.cfg"
7 CONFIG_BOOTDELAY=3
8 CONFIG_BOARD_EARLY_INIT_F=y
9 CONFIG_HUSH_PARSER=y
至此,我们自己开发板的默认配置文件就添加好了。
3.2 添加并修改开发板对应的头文件
1. 添加
在路径uboot-2017.03/include/configs
下复制一份nxp官方imx6ullevk开发板的头文件文件并重命名,作为我们自己开发板的头文件。指令如下:
cp include/configs/mx6ullevk.h include/configs/mx6ull_100ask_pro_emmc.h
此处的mx6ull_100ask_pro_emmc.h
即为我们自己开发板的头文件。在该头文件中定义了许多uboot后续会用到的宏,并且对开发板的相关特性进行了配置,比如配置开发板的哪个网卡作为默认网卡。
2. 修改
添加完头文件之后,需要对头文件进行修改。使用如下命令用vim编辑器打开头文件:
vi include/configs/mx6ull_100ask_pro_emmc.h
修改前头文件第9、10行如下:
9 #ifndef __MX6ULLEVK_CONFIG_H
10 #define __MX6ULLEVK_CONFIG_H
修改后,头文件的第9、10行如下:
9 #ifndef __MX6ULL_100ASK_PRO_EMMC_CONFIG_H
10 #define __MX6ULL_100ASK_PRO_EMMC_CONFIG_H
头文件到此添加完成。
3.3 添加并修改开发板对应的板级文件夹
uboot中的每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。NXP的I.MX系列芯片的所有板级文件都存放在board/freescale目录下。
1.添加
在路径uboot-2017.03/board/freescale
赋值NXP官方EVK 开发板的板级文件夹并重命名,指令如下:
cp -r /board/freescale/mx6ullevk/ /board/freescale/mx6ull_100ask_pro_emmc
其中mx6ull_100ask_pro_emmc
即为我们自己的板级文件夹。
2. 修改
使用如下命令进入到mx6ull_100ask_pro_emmc
目录中:
cd /board/freescale/mx6ull_100ask_pro_emmc
使用ls命令可以看到如下文件:
book@100ask:~/100ask_imx6ull-sdk/Uboot-2017.03/board/freescale/mx6ull_100ask_pro_emmc$ ls
imximage.cfg imximage_lpddr2.cfg Kconfig MAINTAINERS Makefile mx6ullevk.c plugin.S README
接下来需要逐一进行修改。
- 首先,将
mx6ullevk.c
文件重命名为mx6ull_100ask_pro_emmc.c
命令如下:mv mx6ullevk.c mx6ull_100ask_pro_emmc.c
- 然后,因为修改了
.c
文件,所以需要修改一下Makefile
文件。先使用如下命令用vim编辑器打开Makefiile
文件。
修改前Makefile文件如下:vi Makefile
修改后Makefile文件如下:1 # (C) Copyright 2016 Freescale Semiconductor, Inc. 2 # 3 # SPDX-License-Identifier: GPL-2.0+ 4 # 5 6 obj-y := mx6ullevk.o
1 # (C) Copyright 2016 Freescale Semiconductor, Inc. 2 # 3 # SPDX-License-Identifier: GPL-2.0+ 4 # 5 6 obj-y := mx6ull_100ask_pro_emmc.o
- 接着,修改
imximage.cfg
文件。先使用vim编辑器打开该文件:
该文件只需要修改第35行,修改前如下:vi imximage.cfg
修改后如下:33 #ifdef CONFIG_USE_IMXIMG_PLUGIN 34 /*PLUGIN plugin-binary-file IRAM_FREE_START_ADDR*/ 35 PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000 36 #else
33 #ifdef CONFIG_USE_IMXIMG_PLUGIN 34 /*PLUGIN plugin-binary-file IRAM_FREE_START_ADDR*/ 35 PLUGIN board/freescale/mx6ull_100ask_pro_emmc/plugin.bin 0x00907000 36 #else
- 之后,修改
Kconfig
文件。同样,先使用vim编辑器打开该文件,如下:vi Kconfig
Kconfig
文件主要修改第1、4、10行,修改前Kconfig
文件如下:
修改后1 if TARGET_MX6ULL_14X14_EVK || TARGET_MX6ULL_9X9_EVK 2 3 config SYS_BOARD 4 default "mx6ullevk" 5 6 config SYS_VENDOR 7 default "freescale" 8 9 config SYS_CONFIG_NAME 10 default "mx6ullevk" 11 12 endif
Kconfig
文件如下:1 if TARGET_MX6ULL_1100ASK_PRO_EMMC 2 3 config SYS_BOARD 4 default "mx6ull_100ask_pro_emmc" 5 6 config SYS_VENDOR 7 default "freescale" 8 9 config SYS_CONFIG_NAME 10 default "mx6ull_100ask_pro_emmc" 11 12 endif
- 最后,需要修改的是
MAINTAINERS
文件。使用vim编辑器打开:
修改前该文件如下:vi MAINTAINERS
修改后如下:1 MX6ULLEVK BOARD 2 M: Peng Fan <peng.fan@nxp.com> 3 S: Maintained 4 F: board/freescale/mx6ullevk/ 5 F: include/configs/mx6ullevk.h 6 F: configs/mx6ull_14x14_evk_defconfig 7 F: configs/mx6ull_14x14_evk_plugin_defconfig
主要修改了第1、4、5、6行,因为我们没有用两个配置文件,所以删除掉第7行。至此,板级文件夹就添加完成了。1 MX6ULL_100ASK_PRO_EMMC BOARD 2 M: Peng Fan <peng.fan@nxp.com> 3 S: Maintained 4 F: board/freescale/mx6ull_100ask_pro_emmc/ 5 F: include/configs/mx6ull_100ask_pro_emmc.h 6 F: configs/mx6ull_100ask_pro_emmc_defconfig
3.4 修改Uboot图形化配置界面的相关文件
在路径uboot-2017.03/arch/arm/cpu/armv7/mx6/
下找到Kconfig
文件,并使用vim编辑器打开。在文件中添加代码:
332 select DM_THERMAL
333
334 config TARGET_MX6ULL_14X14_EVK
335 bool "Support mx6ull_14x14_evk"
336 select BOARD_LATE_INIT
337 select MX6ULL
338 select DM
339 select DM_THERMAL
340
341 config TARGET_MX6ULL_100ASK_PRO_EMMC
342 bool "Support mx6ull_100ask_pro_emmc"
343 select BOARD_LATE_INIT
344 select MX6ULL
345 select DM
346 select DM_THERMAL
347
348 config TARGET_MX6ULL_9X9_EVK
如上,341~346行是我们添加的代码。之后,在文档的末尾,endif
之前添加代码,如下:
537 source "board/freescale/mx6sxscm/Kconfig"
538 source "board/freescale/mx6ull_100ask_pro_emmc/Kconfig"
539
540 endif
其中,第538行是我们添加的代码。
至此,图形化配置界面就修改完成了。
3.5 添加并修改设备树文件
因为我们在3.1节的默认配置文件中修改了设备树的名字,所以,我们还应该在uboot中添加我们自己的设备树文件。
1. 添加
在路径arch/arm/dts/
下复制一份nxp官方imx6ullevk开发板的设备树文件并重命名,作为我们自己开发板的设备树文件。指令如下:
cp arch/arm/dts/imx6ull-14x14-evk.dts arch/arm/dts/imx6ull-100ask-pro-emmc.dts
此处的imx6ull-100ask-pro-emmc.dts
即为我们自己开发板的设备树文件。
2. 修改
因为我们添加了一个.dts
文件,所以需要修改Makefile
把这个文件编译出来,不然会报错.
在路径arch/arm/dts/
下找到Makefile
文件,使用vim编辑器打开,进行修改,如下:
364 imx6dqscm-1gb-qwks-rev3-fix-ldo.dtb \
365 imx6dqscm-1gb-qwks-rev2-interleave-android-ldo.dtb \
366 imx6dqscm-1gb-qwks-rev3-interleave-android-ldo.dtb \
367 imx6sxscm-1gb-evb-ldo.dtb \
368 imx6ull-100ask-pro-emmc.dtb
369
370 dtb-$(CONFIG_MX7) += imx7-colibri.dtb \
其中,第368行是添加的我们自己的设备树文件。
3.6 编译Uboot并烧写至开发板
经过以上过程,就在uboot中添加了我们自己的开发板相关文件,接下来就可以进行编译并烧写uboot了,过程与2.2小节相同。
注意:编译默认配置文件的时候应该编译我们自己的默认配置文件mx6ull_100ask_pro_emmc_defconfig
,如下:
make mx6ull_100ask_pro_emmc_defconfig
3.6 问题分析
到目前为止我们添加的文件其实还是nxp官方的,只是换了名字而已,所以烧进板子之后还是会显示没有发现网卡。
4. 修改网络驱动
4.1 相关基础
ETHERNET的接口实质是MAC通过MII总线控制PHY通信的过程。在发送数据时,MAC协议可以判断是否可以发送数据,如果可以发送,则给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息是否发生了传输错误,如果没有,则去掉控制信息发送至LLC层。
1. PHY
物理接口收发器,它实现了物理层。IEEE-802.3标准定义了以太网PHY,它包括了MII/GMII(介质独立接口)子层,PCS(物理编码子层),PMA(物理介质附加)子层,PMD(物理介质相关)子层,MDI子层。
2. MAC
MAC即Media Access Control,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。
3. MII总线
在IEEE-802.3中规定的,MII总线是一种用于将不同类型的PHY与相同网络控制器(MAC)相连接的通用总线,使用网络控制器可以用同样的硬件接口与任何PHY通信。
IMX6ULL芯片内部有个以太网MAC外设,也就是ENET,需要外接一个PHY芯片来实现网络通信功能,也就是内部MAC+外部PHY芯片的方案。NXP官方的EVK开发板使用的外部PHY芯片为KSZ1081,而百问网的6ULL_PRO开发板使用的外部PHY芯片为LAN8720A,这就是为什么用NXP官方的默认配置文件会找不到网络的原因。接下来对网络驱动进行修改。
4.2 修改驱动
修改网络驱动主要涉及两个文件,如下:
mx6ull_100ask_pro_emmc.h
文件,该文件在uboot源码中的路径为uboot-2017.03/include/configs
mx6ull_100ask_pro_emmc.c
文件,该文件在我们上面创建的板级文件夹中,路径为uboot-2017.03/board/freescale/mx6ull_100ask_pro_emmc
4.2.1 修改mx6ull_100ask_pro_emmc.h文件
使用vim编辑器打开该文件:
vi include/configs/mx6ull_100ask_pro_emmc.h
在文件中找到关于网卡的定义,如下:
308 #ifdef CONFIG_CMD_NET
309 #define CONFIG_CMD_MII
310 #define CONFIG_FEC_MXC
311 #define CONFIG_MII
312 #define CONFIG_FEC_ENET_DEV 1
313
314 #if (CONFIG_FEC_ENET_DEV == 0)
315 #define IMX_FEC_BASE ENET_BASE_ADDR
316 #define CONFIG_FEC_MXC_PHYADDR 0x0
317 #define CONFIG_FEC_XCV_TYPE RMII
318 #ifdef CONFIG_DM_ETH
319 #define CONFIG_ETHPRIME "eth0"
320 #else
321 #define CONFIG_ETHPRIME "FEC0"
322 #endif
323 #elif (CONFIG_FEC_ENET_DEV == 1)
324 #define IMX_FEC_BASE ENET2_BASE_ADDR
325 #define CONFIG_FEC_MXC_PHYADDR 0x1
326 #define CONFIG_FEC_XCV_TYPE RMII
327 #ifdef CONFIG_DM_ETH
328 #define CONFIG_ETHPRIME "eth1"
329 #else
330 #define CONFIG_ETHPRIME "FEC1"
331 #endif
332 #endif
333
334 #define CONFIG_PHYLIB
335 #define CONFIG_LIB_RAND
336 #define CONFIG_PHY_SMSC
337 #define CONFIG_FEC_MXC_MDIO_BASE ENET2_BASE_ADDR
338 #endif
第312行的宏CONFIG_FEC_ENET_DEV
用于选择使用哪个网口,默认为1,也就是选择ENET2。
第325行的宏CONFIG_FEC_MXC_PHYADDR
表示所使用网口的PHY地址(ENET2的PHY地址),默认为0x1。查看开发板的原理图如下:
可以看出百问网IMX6ULL_PRO开发板的PHY芯片地址为0x1,因此此处ENET2的PHY地址就不用修改。
第336行定义了一个宏,该宏用于使能PHY芯片的产厂家提供的驱动。NXP官方使用的KSZ8081芯片是Micrel公司生产的,所以该宏为CONFIG_PHY_MICREL
;百问网的IMX6ULL_PRO开发板使用的外部PHY芯片是SMSC公司生产的,所以该宏为CONFIG_PHY_SMSC
。
4.2.2 修改mx6ull_100ask_pro_emmc.c文件
使用vim编辑器打开该文件:
vi board/freescale/mx6ull_100ask_pro_emmc/mx6ull_100ask_pro_emmc.c
可以看出该文件内是一些板载设备的驱动,比如LCD屏的驱动、Nand Flash的驱动,但是我们没有找到关于网卡的引脚定义或初始化函数,因此我们需要自己添加。
1. 添加引脚数组
根据开发板的原理图在文件中添加网卡的引脚数组,如下:
477 static iomux_v3_cfg_t const fec2_pads[] = {
478 /* MX6_PAD_GPIO1_IO06__ENET2_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL), */
479 MX6_PAD_GPIO1_IO06__ENET2_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),
480
481 MX6_PAD_GPIO1_IO07__ENET2_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
482
483 MX6_PAD_ENET2_TX_DATA0__ENET2_TDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL),
484 MX6_PAD_ENET2_TX_DATA1__ENET2_TDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL),
485
486 /* MX6_PAD_ENET2_TX_CLK__ENET2_TX_CLK | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL), */
487 MX6_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
488
489 MX6_PAD_ENET2_TX_EN__ENET2_TX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
490
491 MX6_PAD_ENET2_RX_DATA0__ENET2_RDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL),
492 MX6_PAD_ENET2_RX_DATA1__ENET2_RDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL),
493 MX6_PAD_ENET2_RX_EN__ENET2_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
494 MX6_PAD_ENET2_RX_ER__ENET2_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),
495
496 MX6_PAD_SNVS_TAMPER6__GPIO5_IO06 | MUX_PAD_CTRL(NO_PAD_CTRL),
497
498 };
2. 添加初始化代码
定义好引脚数组后,添加初始化函数,如下:
499/* 初始化网卡需要的IO口,复位一下外部PHY芯片 */
500 static void setup_iomux_fec(int fec_id)
501 {
502 if (fec_id == 0)
503 return;
504 else{
505 /* 初始化引脚 */
506 imx_iomux_v3_setup_multiple_pads(fec2_pads,ARRAY_SIZE(fec2_pads));
507 /* 初始化LAN8720A 复位引脚不同需要修改*/
508 gpio_request(IMX_GPIO_NR(5,6), "net reset");
509
510 gpio_direction_output(IMX_GPIO_NR(5,6),1);
511 gpio_direction_output(IMX_GPIO_NR(5,6),0);
512 mdelay(20);
513 gpio_direction_output(IMX_GPIO_NR(5,6),1);
514
515 }
516 }
517/* 初始化网卡 */
518 int board_eth_init(bd_t *bis)
519 {
520 int ret;
521
522 setup_iomux_fec(CONFIG_FEC_ENET_DEV);
523
524 ret = fecmxc_initialize_multi(bis, CONFIG_FEC_ENET_DEV,
525 CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
526
527 return ret;
528 }
3. 添加宏定义以及头文件
在添加引脚数组和初始化函数时,引入了新的宏ENET_PAD_CTRL
和函数fecmxc_initialize_multi
,所以需要在文件中添加宏的定义和函数的所在的头文件,如下:
定义宏:
46 #define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \
47 PAD_CTL_SPEED_HIGH | \
48 PAD_CTL_DSE_48ohm | PAD_CTL_SRE_FAST)
49
50 #define ENET_CLK_PAD_CTRL (PAD_CTL_SPEED_MED | \
51 PAD_CTL_DSE_120ohm | PAD_CTL_SRE_FAST)
添加头文件:
25 #include <netdev.h>
最后,因为我们没有用到设备树,所以需要在configs/mx6ull_100ask_pro_emmc_defconfig
中注释掉CONFIG_DM_ETH
这个控制选项,该选项用来控制是否从设备树取相关的资源。如下:
46 CONFIG_USB_EHCI_HCD=y
47 CONFIG_USB_STORAGE=y
48 CONFIG_FSL_QSPI=y
49 # CONFIG_DM_ETH=y
第49行是注释的CONFIG_DM_ETH
控制选项。
4.3 编译与烧写Uboot
编译与烧写Uboot的过程如2.2节所示,此处不再重复,结果如下:
U-Boot 2017.03-g8ba4c5bb19-dirty (Mar 24 2023 - 05:02:26 -0400)
CPU: Freescale i.MX6ULL rev1.1 696 MHz (running at 396 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 40C
Reset cause: POR
Model: Freescale i.MX6 ULL 14x14 EVK Board
Board: MX6ULL 100ASK_PRO_EMMC
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Display: TFT7016 (1024x600)
Video: 1024x600x24
In: serial
Out: serial
Err: serial
Net: , FEC1
Normal Boot
Hit any key to stop autoboot: 0
可以看到已经检测到了网卡2。
至此Uboot就移植完了,本文参考了正点原子和百问网的用户手册以及这篇文章基于百问网IMX6ULL_PRO开发板的Uboot移植(Uboot-2017.03)写得很详细,很好,可以参考。