UBOOT移植(基于百问网IMX6ULL_PRO开发板)

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文件后生成
.gitignoregit工具相关文件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打印出如下信息:
uboot启动界面
可以看到图片中有 Net: No ethernet found字样,即没有发现网卡。 然后,在uboot的命令行使用如下命令测试emmc是否正常:

mmc list	# 查询mmc设备列表
mmc dev x	# 查询指定的emmc设备
mmcinfo		# 打印mmc信息

结果如下:
测试emmc
可以看出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

接下来需要逐一进行修改。

  1. 首先,将mx6ullevk.c文件重命名为mx6ull_100ask_pro_emmc.c命令如下:
    mv mx6ullevk.c mx6ull_100ask_pro_emmc.c
    
  2. 然后,因为修改了.c文件,所以需要修改一下Makefile文件。先使用如下命令用vim编辑器打开Makefiile文件。
    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
    
    修改后Makefile文件如下:
      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
    
  3. 接着,修改imximage.cfg文件。先使用vim编辑器打开该文件:
    vi imximage.cfg
    
    该文件只需要修改第35行,修改前如下:
     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
    
  4. 之后,修改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
    
  5. 最后,需要修改的是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 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
    
    主要修改了第1、4、5、6行,因为我们没有用两个配置文件,所以删除掉第7行。至此,板级文件夹就添加完成了。

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 修改驱动

修改网络驱动主要涉及两个文件,如下:

  1. mx6ull_100ask_pro_emmc.h文件,该文件在uboot源码中的路径为uboot-2017.03/include/configs
  2. 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)写得很详细,很好,可以参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值