编译u-boot(硬件: atk-dl6y2c)和NFS/EMMC模式启动Linux Kernel

目录

概述

1 编译u-boot

1.1 解压文件

1.2 编译u-boot

2 配置环境

2.1 在Ubunt 搭建TFTP

2.2 建立下载目录

3 烧写bootloader到SD

4 使用NFS模式启动板卡

5 从EMMC 启动 Linux 系统

5.1 通过配置参数方式

5.2 使用命令直接启动内核


文中使用的代码下载地址:

【免费】atk-dl6y3c-build-uboot相关资料资源-CSDN文库

【免费】Ubuntu下裸机烧写软件-ATK-DL6Y2C资源-CSDN文库

概述

本文主要介绍使用编译ATK-DL6Y2C板卡配套的u-boot源码包( uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2 ),交叉编译器版本为:gcc-linaro-4.9.4-arm-linux-gnueabihf。编译该代码包,并生成.bin文件,使用其提供的imxdownload功能将其下载到SD中,测试u-boot的命令,使用该u-boot通过NFS和EMMC启动Linux kernel。还简要介绍了NFS的搭建方法。

1 编译u-boot

1.1 解压文件

ATK-DL6Y2C使用的板卡标配u-boot代码包为:

tar -vxjf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2  -C atk_u_boot

解压之后,列出文件信息:

进入atk_u_boot目录中修改build.sh的执行权限,使用命令:

chmod 777 build.sh

1.2 编译u-boot

在编译u-boot之前,确保ubuntu中已经安装编译环境,安装编译环境的执行命令如下:

chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

安装完成编译环境后,进入atk_u_boot目录中,执行./build.sh 编译u-boot,执行命令之后:

编译完成后,在atk_u_boot/tmp目录下生成.bin文件

2 配置环境

2.1 在Ubunt 搭建TFTP

step-1: 安装xinetd,使用命令

sudo apt-get install xinetd

step-2: 执行以下程序安装 tftp-hpa 和 tftpd-hpa 服务程序 ,使用命令:

sudo apt-get install tftp-hpa tftpd-hpa

step-3: 执行以下指令打开 tftpd-hpa 配置文件,修改 tftp 目录为 TFTP 服务器工作目录。使用命令:

sudo vi /etc/default/tftpd-hpa

NFS的下目录为:/home/mftang/tftp

step-4: 执行以下指令创建/etc/xinetd.d/tftp 配置文件 ,使用命令:

sudo vi /etc/xinetd.d/tftp

添加如下代码:

server tftp
{
   socket_type = dgram
   wait = yes
   disable = no
   user = root
   protocol = udp
   server = /usr/sbin/in.tftpd
   server_args = -s /home/mftang/tftp -c
   #log_on_success += PID HOST DURATION
   #log_on_failure += HOST
   per_source = 11
   cps =100 2
   flags =IPv4
}

step-5: 修改/添加 tftp 文件后, 执行以下指令重启 tftpd-hpa。

sudo service tftpd-hpa restart

step-6: 重启 xinetd 服务。

sudo service xinetd restart

2.2 建立下载目录

使用如下命令创建目录,并修改目录的权限。

mkdir /home/mftang/tftp
chmod 777 /home/mftang/tftp

将编译生成的内核zImage和设备树文件.dtb文件,放到如下目录中。所需的文件如下:

3 烧写bootloader到SD

进入到bootloader的编译目录,使用如下命令烧写.bin文件:

./imxdownload  u-boot-imx6ull-14x14-ddr512-emmc.bin /dev/sdb

如果没有任何提示错误,说明下载数据完成。

在板卡上将启动方式调至:SD启动模式

重新上电启动系统,u-boot已经工作了

4 使用NFS模式启动板卡

step 1:设置板卡ip

setenv ipaddr 192.168.1.50
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
​
setenv serverip 192.168.1.11
saveenv

 step-2: nfs 启动板卡:

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-4.3-480x272-c.dtb; bootz 80800000 - 83000000'

运行结果:

执行上述命令后,板卡会从tftp下载内核zImage和设备树文件到内存,出现如下log:说明内核启动成功了

5 从EMMC 启动 Linux kernel

5.1 通过配置参数方式

配置参数

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
​
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 0x80800000 zImage; fatload mmc 1:1 0x83000000
imx6ull-14x14-emmc-4.3-480x272-c.dtb; bootz 0x80800000 - 0x83000000;'
​
saveenv

执行命令后,显示如下错误:

查询mmc中的内容:

ls mmc 1:1

结论: 

根据文档《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81.pdf》page: 909 中提供的方法,无法正常启动内核。

5.2 使用命令直接启动内核

使用u-boot命令,从 EMMC 中读取 zImage 镜像文件和设备树文件 ,并启动内核。使用如下命令执行:

mmc dev 1
fatload mmc 1:1 0x80800000 zImage
fatload mmc 1:1 0x83000000 imx6ull-14x14-emmc-4.3-480x272-c.dtb
bootz 0x80800000 - 0x83000000

启动内核之后,运行的log信息: 

结论:

单独运行每一条命令,可以从EMMC中启动内核

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值