PC操作系统:(下载)ubuntu 12.04
使用的开发板:am335x Beaglebone am335x Beaglebone
开发板使用的操作系统:linux 3.2
step1:安装linux开发环境。(下载)ti-sdk-am335x-evm-05.07.00.00-Linux-x86-Install。
err1:建议搭配的Ubuntu系统版本是10.04和12.04。我电脑原本装的是11.04版本,结果安装sdk的时候各种错误,改了两天,总是旧错误改完出新错误,最后干脆下载文件链接就出错,弃用。下载了12.04,重新安装,果然这次安装sdk的时候很顺利。不过安装还是需要耗时1小时左右。
参考资料:安装推荐帮助文档,Ubuntu的相关命令qq
err2:05.07的uboot在sd卡上不能正常启动,我直接将(下载)u-boot-2011.09-psp04.06.00.07放到sdk的安装目录中。配置好环境变量之后,编译了一下,报错信息是找不到.h文件。将需要的文件拷贝到对应的位置上去,再编译,成功!
step2:nand 启动环境配置
参考资料:uboot-user-guide
首先,将SD卡格式化为fat32文件系统,将u-boot和MLO拷贝到sd卡上,SD启动。不进入系统。通过SD卡烧写NAND。uboot-guide里面有清晰的NAND Layout。下面是敲入的command。
SD 卡启动配置SW3[8:1]00010111/SW4[8:1]01000000。
NAND启动配置SW3[8:1]00010010/SW4[8:1]01000010
参考资料:am335x从nandflash启动遇到的问题解决方法
################################################################################
##nand 格式化
Hit any key to stop autoboot: 0
U-Boot# nand scrub.chip
##SPL烧写
U-Boot# mmc rescan
U-Boot# mw.b 0x82000000 0xFF 0x20000
U-Boot# fatload mmc 0 0x82000000 nMLO
U-Boot# nandecc hw 2
U-Boot# nand erase 0x0 0x20000
U-Boot# nand write.i 0x82000000 0x0 0x20000
##u-boot.img烧写
U-Boot# mmc rescan
U-Boot# mw.b 0x82000000 0xFF 0x40000
U-Boot# fatload mmc 0 0x82000000 nu-boot.img
U-Boot# nandecc hw 2
U-Boot# nand erase 0x80000 0x40000
U-Boot# nand write.i 0x82000000 0x80000 0x40000
##操作系统烧写
U-Boot# mmc rescan
U-Boot# mw.b 0x81000000 0xFF 0x500000
U-Boot# fatload mmc 0 0x81000000 nsystem
U-Boot# nandecc hw 2
U-Boot# nand erase 0x280000 0x500000
U-Boot# nand write.i 0x81000000 0x280000 0x500000
################################################################################
err1:nandflash写操作错误,丢页。写到nandflash上的数据,通过读nand到ram上,查看是否写入正确,查看命令:
U-Boot#nand read 0x82000000 0x0 0x20000
U-Boot#md 0x82000000 1024
原因:nandflash虚焊。解决办法:把nandflash重新走一遍焊锡。
err2:MLO烧写到nand上以后,切换到nand启动,串口没有输出。原因:SW4[2]ecc校验没设置。
step3:修改u-boot,nand启动修改
对u-boot的设置,基本都在am335x_evm.h中。
原版 | nand启动,改动 |
"kloadaddr=0x80007fc0\0" \ | "kloadaddr=0x81000000\0" \ |
"bootm ${kloadaddr}\0" \ | "go ${kloadaddr}\0" \ |
#define CONFIG_BOOTCOMMAND \ "if mmc rescan; then " \ "echo SD/MMC found on device ${mmc_dev};" \ "if run loadbootenv; then " \ "echo Loaded environment from ${bootenv};" \ "run importbootenv;" \ "fi;" \ "if test -n $uenvcmd; then " \ "echo Running uenvcmd ...;" \ "run uenvcmd;" \ "fi;" \ "if run mmc_load_uimage; then " \ "run mmc_args;" \ "bootm ${kloadaddr};" \ "fi;" \ "fi;" \ "run nand_boot;" \ | #define CONFIG_BOOTCOMMAND \ "echo NAND Boot Start by qq 2013;" \ "run nand_boot;" \ /*"if mmc rescan; then " \ "echo SD/MMC found on device ${mmc_dev};" \ "if run loadbootenv; then " \ "echo Loaded environment from ${bootenv};" \ "run importbootenv;" \ "fi;" \ "if test -n $uenvcmd; then " \ "echo Running uenvcmd ...;" \ "run uenvcmd;" \ "fi;" \ "if run mmc_load_uimage; then " \ "run mmc_args;" \ "bootm ${kloadaddr};" \ "fi;" \ "fi;" \*/ |