
开发主机上安装的是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等等命令。
如果nand flash大小没问题,建议这样试试:nand scrub -y 0xc000000 0x4000000
详情请查看u-boot中的cmd_nand.c文件中相关部分:
/*
* Syntax is:
* 01 2 34
* nand erase [clean] [off size]
*/
if (strncmp(cmd, "erase", 5) == 0 || strncmp(cmd, "scrub", 5) == 0) {
nand_erase_options_t opts
/* "clean" at index 2 means request to write cleanmarker */
int clean = argc >2 &&!strcmp("clean", argv[2])
int scrub_yes = argc >2 &&!strcmp("-y", argv[2])
int o = (clean || scrub_yes) ? 3 : 2
int scrub = !strncmp(cmd, "scrub", 5)
int spread = 0
int args = 2
const char *scrub_warn =
"Warning: "
"scrub option will erase all factory set bad blocks!\n"
" "
"There is no reliable way to recover them.\n"
" "
"Use this command only for testing purposes if you\n"
" "
"are sure of what you are doing!\n"
"\nReally scrub this NAND flash? <y/N>\n"
if (cmd[5] != 0) {
if (!strcmp(&cmd[5], ".spread")) {
spread = 1
} else if (!strcmp(&cmd[5], ".part")) {
args = 1
} else if (!strcmp(&cmd[5], ".chip")) {
args = 0
} else {
goto usage
}
}
/*
* Don't allow missing arguments to cause full chip/partition
* erases -- easy to do accidentally, e.g. with a misspelled
* variable name.
*/
if (argc != o + args)
goto usage
printf("\nNAND %s: ", cmd)
/* skip first two or three arguments, look for offset and size */
if (arg_off_size(argc - o, argv + o, &dev, &off, &size) != 0)
return 1
nand = &nand_info[dev]
memset(&opts, 0, sizeof(opts))
opts.offset = off
opts.length = size
opts.jffs2 = clean
opts.quiet = quiet
opts.spread = spread
if (scrub) {
if (!scrub_yes)
puts(scrub_warn)
if (scrub_yes)
opts.scrub = 1
else if (getc() == 'y') {
puts("y")
if (getc() == '\r')
opts.scrub = 1
else {
puts("scrub aborted\n")
return -1
}
} else {
puts("scrub aborted\n")
return -1
}
}
ret = nand_erase_opts(nand, &opts)
printf("%s\n", ret ? "ERROR" : "OK")
return ret == 0 ? 0 : 1
}
你只能通过NandFlash控制器访问NandFlash,即是只要知道Nand控制器的寄存器地址即可。NandFlash 不是一个RamLike的器件。Uboot放入nand中,在nand的0地址开始存放,移植时候需要注意页对齐,这样Uboot才可以可以通过StepingStone引导。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)