嵌入式Linux学习之旅(5)— 使用正点原子的uboot进行编译、烧录和启动

使用正点原子的uboot进行编译、烧录和启动

一、准备

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

sudo apt-get install libncurses5-dev

安装好后如下所示
在这里插入图片描述

二、获取uboot源码,进行编译

在Ubuntu 中创建~/imx6u_alpha/u-boot/atk_uboot目录存放uboot源码,将正点原子资料包里【阿尔法Linux开发板光盘资料(A盘)–> 1、例程源码 --> 3、正点原子修改后的Uboot和Linux】目录下提供的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进行编译,touch imx6ull_atk_uboot_emmc.sh

#!/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

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

三、uboot 的烧写

uboot编译好了后就可以烧写到SD卡了,将正点原子提供的imxdownload文件复制到工程目录下,使用imxdownlord软件烧写:

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

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

四、uboot 启动

在MobaXterm下新建串口会话,波特率设为115200,无硬件流控
在这里插入图片描述
然后可以看到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版本相关信息
在这里插入图片描述

五、设置环境变量,连接到网络

和网络相关的几个环境变量
在这里插入图片描述
使用如下命令进行设置

setenv ipaddr 192.168.0.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv serverip 192.168.0.106
saveenv

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命令详细的信息;
在这里插入图片描述
接下来我们测试使用ping命令连接到Ubuntu,可以看到,ping通过了
在这里插入图片描述
这里要注意,如是ping命令连接Windows系统的话,大概率会失败。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值