U

您所在的位置:网站首页 boot中usb启动 U

U

2024-02-01 11:05| 来源: 网络整理| 查看: 265

U-boot使用实验(网络启动kernel)

原文链接:uboot使用实验

文章目录 U-boot使用实验(网络启动kernel)描述步骤步骤一:编译、烧写U-boot步骤二:配置NFS,并将镜像文件和设备树文件拷贝到DRAM中步骤三:启动linux kernel 问题及解决方法问题一:使用ping命令报错data abort问题二:使用NFS下载文件,报错loading:*** ERROR: File lookup fail问题三:启动kernel卡在Starting kernel...

描述

使用U-boot命令,通过NFS将镜像文件和设备树文件从Ubuntu服务器拷贝到开发板DRAM中,然后启动linux kernel。

步骤 步骤一:编译、烧写U-boot

根据正点原子提供的源码,编译u-boot。

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- -j8

使用正点原子提供的imxdownload工具,将编译好的u-boot.bin烧写到SD卡中。

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

注意:如果烧写速度在几百KB,基本是烧写成功了。另外,要烧写到sdb(根据你自己SD卡的设备名字而定)中,而不是sdb1/2/3等(即不同的分区)中。

步骤二:配置NFS,并将镜像文件和设备树文件拷贝到DRAM中

Ubuntu端的NFS配置,请点击arm-linux开发板通过NFS(网络文件系统)快捷访问和操作Ubuntu文件系统。使用u-boot命令配置板端的网络环境。

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.55 saveenv

配置完环境后,使用ping命令ping一下服务器,如果能ping到,说明网络连接正常。

ping 192.168.1.55

注意:如果报错data abort,是由于内存地址对齐错误的检查功能造成的,具体的问题和解决方法请点击问题一。

正常ping效果见下图。

然后使用nfs命令将镜像文件和设备树文件下载到DRAM中(具体的设备树文件根据自己使用的LCD屏设备确定)。

nfs 80800000 192.168.1.55:/home/sigma-poet/work/nfs_files/zImage nfs 83000000 192.168.1.55:/home/sigma-poet/work/nfs_files/imx6ull-14x14-emmc-7-1024x600-c.dtb

注意:如果报错:loading:*** ERROR: File lookup fail,是由于u-boot和Ubuntu的NFS版本不兼容造成的,具体的问题和解决方法请点击问题二。

下载成功效果见下图。

步骤三:启动linux kernel

使用启动命令,启动linux kernel。

bootz 80800000 - 83000000

注意:如果卡在starting kernel,具体解决方法请点击问题三。

linux kernel启动成功效果见下图。

至此,已经通过u-boot命令行的方式成功启动了linux kernel,后面会报VFS(虚拟文件系统的kernel panic错误,是正常的,因为没烧文件系统,但是足以证明u-boot已经引导启动了kernel)。

问题及解决方法 问题一:使用ping命令报错data abort

问题原因:似乎早期arm架构不支持非对齐内存访问,在开启对齐内存访问模式后,使用对齐模式去访问非对齐地址就会报错。

解决方法:关闭内存地址对齐错误的检查功能。

在编译u-boot的源码中,在start.S(路径为:arch/arm/armv7/start.S)找到以下代码,

mrc p15,0,r0,c1,c0,0 bic r0,r0,#0x00002000 @clear bits 13(--V-) bic r0,r0,#0x00000007 @clear bits 2:0(-CAM) orr r0,r0,#0x00000002 @set bit 1 (--A-) Align orr r0,r0,#0x00000800 @set bit 11 (Z---) BTB

修改为

mrc p15,0,r0,c1,c0,0 bic r0,r0,#0x00002000 @clear bits 13(--V-) bic r0,r0,#0x00000007 @clear bits 2:0(-CAM) orr r0,r0,#0x00000000 @set bit 1 (--A-) Align orr r0,r0,#0x00000800 @set bit 11 (Z---) BTB 问题二:使用NFS下载文件,报错loading:*** ERROR: File lookup fail

问题原因:u-boot中使用的NFS版本为V2版本,ubuntu中的NFS版本高,两个版本不兼容。

解决方法:按下图修改ubuntu端nfs-kernel-server文件(路径为/etc/default/nfs-kernel-server)。

问题三:启动kernel卡在Starting kernel…

问题原因:u-boot编译配置问题。

解决方法:具体没有深究(因为暂时还不会,直接换了正点原子提供好的u-boot-14x14-ddr512-emmc.bin),加上zImage和4.3寸屏幕的设备树文件(.dts),就可以让u-boot引导启动kernel了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3