硬件平台是 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中是有的。