U |
您所在的位置:网站首页 › boot中usb启动 › U |
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。 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)。 ![]() 问题原因:u-boot编译配置问题。 解决方法:具体没有深究(因为暂时还不会,直接换了正点原子提供好的u-boot-14x14-ddr512-emmc.bin),加上zImage和4.3寸屏幕的设备树文件(.dts),就可以让u-boot引导启动kernel了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |