TI中文支持网
TI专业的中文技术问题搜集分享网站

如何将U-boot烧录到Nand中?如何用tftp,nfs加载内核和文件系统?

硬件平台是 XAM335x的SKEVM板子。

开发主机上安装的是ubuntu14.04。

SDK是 PROCESSOR-SDK-LINUX-AM335X 02_00_00_00。

1,运行了SDK下面的setup.sh,创建了/tftpboot,以及targetNFS目录了。

2,在sdk的更目录make都是成功的。

然后我也可以用做卡的方式把我自己编译的kernel, uboot以及系统带的 targetNFS目录下的文件系统,写到SD卡中。而且能够通过SD卡正常启动。

现在我想脱离SD卡启动方式。

1,所以要先把U-boot烧录到Nand中,(这里我不知道怎么下载。请告诉我下载方法。)

2,然后开机进入U-boot命令,设置好开发板IP以及serverip等配置。

3,通过tftp命令 (tftp c0008000 zImage-am335x-evm.bin)命令,串口段打印一大串###,也没报错,好像是下载内核成功了。(这里请问下,tftp命令里的地址 0xc0008000是否正确?应该用什么地址?)

4,NFS下载文件系统,(这一步我也不知道怎么做,网上有命令 setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=ttyS0,115200等等命令,我也知道正确与否。请告诉我正确的方法,谢谢。

chen Miche:

我找了这篇文档看了下  http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#UART

1,实验了其中的用TeraTerm 通过UART往板子里传送u-boot.bin以及u-boot.img的方式。但是总是在传送u-boot.bin时卡在31%的位置不动了。然后我用sdk里自带的u-boot-am335x-evm.img和u-boot-spl.bin-am335x-evm文件往板子传输,虽然没卡住,但是传完u-boot-am335x-evm.img后板子还是往外打印4个C,而不是像文档中说的会出现“U-Boot# ”。

所以烧录也不成功,请问是为什么?

2,然后我又试着通过插SD的方式进到Uboot命令后,出现“U-Boot# ”时,通过tftp分别下载u-boot-am335x-evm.img和u-boot-spl.bin-am335x-evm这两个文件到板子上,然后通过nand write的方式写到板子上去。

但是问题来了,不管是nand eraser命令还是nand write命令都会报 no devices available的错误。

请问是为什么?

leo chen:

回复 chen Miche:

启动的时候uboot有没有找到nand呢?

chen Miche:

回复 leo chen:

下面是刚刚启动到进入uboot命令行时的log. 

U-Boot SPL 2015.07 (Oct 07 2015 – 14:27:57)reading argsspl_load_image_fat_os: error reading image args, err – -1reading u-boot.imgreading u-boot.img

U-Boot 2015.07 (Oct 07 2015 – 14:27:57 -0400)

Watchdog enabledI2C: readyDRAM: 256 MiBNAND: 0 MiBMMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1reading uboot.env

** Unable to read "uboot.env" from mmc0:1 **Using default environment

Net: <ethaddr> not set. Validating first E-fuse MACcpsw, usb_etherHit any key to stop autoboot: 0U-Boot#

chen Miche:

回复 chen Miche:

刚刚看了下硬件,我们这个板子确实不带nand,只有SD来存内核文件。

然后我想问下。对于没有nand的这款板子,我能用TFTP和NFS下载内核和文件系统吗?

不然我每次调试,每次改了内核文件之后,都要重新做卡,很耗时间。

请帮我解答下,谢谢。

Yaoming Qin:

回复 chen Miche:

您可以参考 http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide 

chen Miche:

回复 Yaoming Qin:

你好,这个文档我看过没有我想要的内容。

我现在通过TFTP加载kernel的方法如下,但是还是不成功。请帮我检查下。

另外我这个板子是不带nand的,只有SD卡来存东西。

我的方法如下:

u-boot#setenv ipaddr 192.168.1.20u-boot#setenv serverip 192.168.1.100

u-boot# setenv bootcmd ‘tftp 30800000 uImage; bootm’

同时用U-boot/tool下的 mkimage工具将我的zImage 转成uImage了,并将uImage放在我的tftpboot目录下了。

(sudo mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008000 -n "linux kerner" -d /opt/ti-processor-sdk-linux-am335x-evm-02.00.00.00/board-support/prebuilt-images/zImage-am335x-evm.bin uImage)

然后执行boot命令。

u-boot# boot

发现kernel是下载下来了,但是就是引导启动不了。 请帮我看看啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

log如下:

U-Boot# bootlink up on port 0, speed 100, full duplexUsing cpsw deviceTFTP from server 192.168.1.100; our IP address is 192.168.1.20Filename 'uImage'.Load address: 0x80000000Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ############################################### 1016.6 KiB/sdoneBytes transferred = 3232560 (315330 hex)## Booting kernel from Legacy Image at 80000000 … Image Name: linux kerner Created: 2015-12-17 9:00:02 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3232496 Bytes = 3.1 MiB Load Address: 30008000 Entry Point: 30008000 Verifying Checksum … OK Loading Kernel Image … data abortpc : [<8ff85d38>] lr : [<8ff63dab>]reloc pc : [<80832d38>] lr : [<80810dab>]sp : 8ef32bb0 ip : 00000000 fp : 30008000r10: 00000000 r9 : 8ef32ed8 r8 : 00010000r7 : 00010000 r6 : 003052f0 r5 : 80000040 r4 : 00000000r3 : 80010040 r2 : 30007fff r1 : 80000041 r0 : 30008000Flags: Nzcv IRQs off FIQs on Mode SVC_32Resetting CPU …

resetting …

U-Boot SPL 2015.07 (Oct 07 2015 – 14:27:57)reading argsspl_load_image_fat_os: error reading image args, err – -1reading u-boot.imgreading u-boot.img

U-Boot 2015.07 (Oct 07 2015 – 14:27:57 -0400)

Watchdog enabledI2C: readyDRAM: 256 MiBNAND: 0 MiBMMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1reading uboot.envNet: cpsw, usb_etherHit any key to stop autoboot: 0 cpsw Waiting for PHY auto negotiation to complete……..

Yaoming Qin:

回复 chen Miche:

请问您用的是什么版本的sdk? ezsdk 6.0 还是processor sdk 2.0。

如果您用的是processor sdk 2.0,那么没必要把zImage转成uImage, 可以参考http://processors.wiki.ti.com/index.php/Linux_Kernel_Users_Guide#Compiling_the_Kernel, 关于uboot,可以参考 

http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User%27s_Guide

没有nand没关系,uboot会读取板子上的eeprom来判断板子类型,再判断是否要把uboot的环境变量放到nand flash。

Yaoming Qin:

回复 chen Miche:

如果您不熟悉device tree,可以参考我们的ezsdk 6.0,这个在我给您的slides中是有的。

赞(0)
未经允许不得转载:TI中文支持网 » 如何将U-boot烧录到Nand中?如何用tftp,nfs加载内核和文件系统?
分享到: 更多 (0)