手上有一块Demo板,电路设计完全按照bb-black设计的,除了网口设计为千兆,以及把emmc改成了nand flash。
所以现在只能通过串口来烧写板子,源码使用ti官网的sdk8.0,修改了uboot,屏蔽了eeprom的读写,
添加了对nand的初始化,并按照官网手册(如下)通过串口烧录了MLO、u-boot.img,uImage的镜像到nand flash。
http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#UART_2
1、从串口烧录u-boot-spl.bin、u-boot.img并启动,打印信息如下:
CCCCCCCCCCCCCCCCCCCCCCC
Starting xmodem transfer. Press Ctrl+C to cancel.
100% 74 KB 4 KB/s 00:00:18 0 Errors
C
100% 435 KB 4 KB/s 00:01:36 3 Errors
Loaded 445972 bytes
U-Boot 2014.07-00107-gd28f2b9-dirty (Mar 10 2015 – 16:16:45)
I2C: ready
DRAM: 512 MiB
NAND: 256 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Card did not respond to voltage select!
** Bad device mmc 0 **
Using default environment
Net: <ethaddr> not set. Validating first E-fuse MAC
Phy not found
cpsw, usb_ether
Hit any key to stop autoboot: 0Card did not respond to voltage select!
Card did not respond to voltage select!
Card did not respond to voltage select!
Card did not respond to voltage select!
Booting from nand …
NAND read: device 0 offset 0x80000, size 0x40000
262144 bytes read: OK
NAND read: device 0 offset 0x200000, size 0x800000
8388608 bytes read: OK
Bad Linux ARM zImage magic!
U-Boot#
2、从NAND启动:打印信息如下:
U-Boot SPL 2014.07-00107-gd28f2b9-dirty (Mar 10 2015 – 16:16:45)
问题:=========================================
a、sdk8.0、sdk7.0的内核分别用omap2plug_defconfig、tisdk_am335x-evm_defconfig配置文件编译完成。
但是都会出现1中“Bad Linux ARM zImage magic!”,我在github上下载了一个3.3版本的内核,使用
omap2plug_defconfg编译完成,但是它的打印信息为“。。。。。done, booting the kernel”,证明
我串口烧录uImage的方法是没错的,是sdk8.0内核本身有问题吗?
b、如果从NAND启动,为何不能进入到uboot的命令行了呢?如果串口启动则可以进入到uboot 的命令行,
这要怎么修改呢?
Eason Wang:
MOve to sitara forum
Jian Zhou:
SDK07和SDK08用的3.12的内核,应该把zImage和dts放到文件系统中一起烧写。
NAND不能跳转,要跟踪下SPL的代码
cc cc2:
回复 Jian Zhou:
把zimge、dts放在文件系统烧写有操作手册吗?官网上找到从uart烧录方法也只有到uboot就没有了
如果用sdk6.0的源码会不会更容易一点?
Jian Zhou:
回复 cc cc2:
zImage和dtb这部分请参考:http://processors.wiki.ti.com/index.php/Linux_Kernel_Users_Guide#Compiling_the_Sources
如果不熟悉device tree个人建议用SDK06
Yaoming Qin:
你的这些image,如果用sd卡启动是ok的吗
cc cc2:
回复 Yaoming Qin:
MLO、uboot.img、u-boot-spl.bin可以正常启动,内核除了github上下载的一个3.3内核可以跑一点点,sdk8.0/7.0的内核都没有反应
我还有一个疑问,通过串口往nand中写入MLO和u-boot.img,不烧写kernel,然后从nand启动,出现打印信息如下:
======
U-Boot SPL 2014.07-00107-gd28f2b9-dirty (Mar 10 2015 – 16:16:45)The Expected Linux image was not found. Please check your NAND configuration.Trying to start u-boot now…
======
然后隔一会重启,uboot的命令行再也进不去了,uboot到底有没有启动?还是spl检测内核失败就不出现uboot了?
Steven Liu1:
回复 cc cc2:
log中提示找不到对应的image,可否确认一下,你往nand flash中烧写的MLO,u-boot.img等文件是否放对了对应的layout区域?有修改过NAND FLASH的配置吗?
cc cc2:
回复 Steven Liu1:
nand flash的配置我是没有改过的,而且MLO,u-boot.img都是按照文档提示的地址烧录,这些地址在哪里可以找到修改呢?
Steven Liu1:
回复 cc cc2:
在你使用nand write命令的时候,你会指定写在哪个区域的。NAND的layout分布可以参考如下:
http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#NAND_Layout
另外,建议你写入的时候,注意下,NAND写入的数据空间大小是否大于读入image的大小,在地址正确的情况下,确保你完整的把image烧录进去了。
cc cc2:
回复 Steven Liu1:
非常感谢steven的提醒,确实是u-boot.img没有烧录完整,,使用sdk6.0的源码完全可以了,如果使用sdk8.0的u-boot.img却不行,他们之间烧录地址有改变吗?