U-Boot在I.MX6ULL的编译下载

uboot在i.mx6ull的编译下载

编译uboot需要使用ncurses库,所以需要安装,否则编译会报错

sudo apt-get install libncurses5-dev

我已经安装好了
在这里插入图片描述

一、uboot的编译

在Ubuntu 中创建~/imx6ull/project/uboot目录存放uboot源码,将正点原子提供的源码uboot-imx-2016.03-2.1.0-g9bd38ef-v1.0.tar.bz2拷贝到此目录中,然后解压:

tar -vxjf uboot-imx-2016.03-2.1.0-g9bd38ef-v1.0.tar.bz2

解压后得到
在这里插入图片描述
编写一个脚本,对uboot进行编译

#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2

然后修改其可执行权限,使其可执行
在这里插入图片描述
使用该脚本进行编译./mx6ull_alientek_emmc.sh
在这里插入图片描述
编译完成后可以看到有u-boot.bin文件了
在这里插入图片描述

二、uboot 的烧写

uboot编译好了后就可以烧写到SD卡了,使用imxdownlord软件烧写:

./imxdownload u-boot.bin /dev/sdb

在这里插入图片描述
烧写完成后将SD卡插到I.MX6U-ALPHA开发板后,设置从SD卡启动。

三、uboot 启动

uboot启动信息如下
在这里插入图片描述
对其输出信息进行分析

  1. U-Boot 2016.03 (Feb 07 2020 - 11:37:25 +0800)
    这是 uboot版本号和编译时间,可以看出当前的 uboot版本号是 2016.03,编译时间是 2020年1月7日11点37分
  2. CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
    CPU: Industrial temperature grade (-40C to 105C) at 22C
    这是 CPU 的信息,可以看出当前使用的CPU 是飞思卡尔的 I.MX6ULL,如果使用 528MHz 的 I.MX6ULL,此处会显示主频为528MHz。但是如果使用 800MHz 的I.MX6ULL 的话此处会显示69MHz,这个是uboot内部主频读取错误,但是不影响运行,可以不用管。不管是528MHz还是800MHz 的I.MX6ULL,此时都运行在396MHz。这颗芯片是工业级的,可以工作在-40°C~105°C。
  3. Reset cause: POR
    复位原因的信息,当前的复位原因是 POR。I.MX6ULL 芯片上有个 POR_B 引脚,将这个引脚拉低即可复位 I.MX6ULL。
  4. Board: MX6ULL 14x14 EVK
    板子名字,当前的板子名字为“MX6ULL 14x14 EVK”。
  5. I2C: ready
    提示I2C 准备就绪。
  6. DRAM: 512 MiB
    提示当前板子的DRAM(内存)为512MB。
  7. MMC: FSL_SDHC: 0, FSL_SDHC: 1
    提示当前有两个 MMC/SD 卡控制器:FSL_SDHC(0)和 FSL_SDHC(1)。I.MX6ULL支持两个MMC/SD,正点原子的I.MX6ULL EMMC核心板上FSL_SDHC(0)接的 EMMC,FSL_SDHC(1)接的 SD(TF)卡。
  8. Display: ATK-LCD-7-1024x600 (1024x600)
    显示 LCD 型号,当前的 LCD 型号是ATK-LCD-7-1024x600 (1024x600);
    Video: 1024x600x24
    分辨率为1024x600,格式为RGB888(24 位)。
  9. In: serial
    Out: serial
    Err: serial
    标准输入、标准输出和标准错误所使用的终端,这里都使用串口(serial)作为终端。
  10. switch to partitions #0, OK
    mmc0 is current device
    切换到emmc的第0个分区上,因为当前的uboot是emmc版本的,也就是从emmc启动的。我们只是为了方便将其烧写到SD卡上,但是它的“内心”还EMMC的。所以uboot启动以后会将emmc作为默认存储器,当然了也可以将SD卡作为uboot的存储器。
  11. Net: FEC1
    网口信息,提示我们当前使用的FEC1这个网口,I.MX6ULL支持两个网口。
  12. Normal Boot
    提示正常启动,也就是说uboot要从emmc里面读取环境变量和参数信息启动Linux内核了

我们可以输入version目录查看uboot版本相关信息
在这里插入图片描述
和网络相关的几个环境变量
在这里插入图片描述
dhcp命令

dhcp用于从路由器获取IP地址,前提得开发连接到路由器上的如果板是和电脑直连的,那么dhcp命令就会失效。直接输入dhcp命令即可通过路由器获IP地址。

在这里插入图片描述
可以看出,开发板通过dhcp获取到的IP地址为 192.168.1.100,和我们手动设置的不一样,这很正常。同时在图中可以看到 “warning:no boot file name;”、“TFTP from server 192.168.1.102”这样的字样。是因为DHCP不单是获取IP地址,其还会通过TFTP来启动 linux内核,输入“ ? dhcp”即可查看dhcp命令详细的信息;
在这里插入图片描述

发布了62 篇原创文章 · 获赞 13 · 访问量 5572

猜你喜欢

转载自blog.csdn.net/qq_38113006/article/details/104207343