uboot的nandflash启动saveenv时Writing to Nand... FAILED问题解决办法
来源:互联网 发布:科比各项数据荣誉 编辑:程序博客网 时间:2024/05/17 08:27
之前碰到问题是saveenv命令时,出现Writing to Nand... FAILED!,说明写入nand有问题,上网查了之后解决了该问题。
http://www.arm9home.net/simple/index.php?t8091.html
http://www.linuxidc.com/Linux/2011-05/35982p3.htm
第一个网址是一个网友对此问题的说明,第二个是我在修改程序时参照的,而且第二个网址介绍了很多uboot移植经验,可以以后参照。
现在说明此问题的根源,我们前面重写了s3c2440_nand.c文件,而且是仿照s3c2410_nand.c文件写的,其中有个函数s3c2440_hwcontrol很重要,完成了三个功能:【1】选择写入命令还是写入地址【2】完成片选功能【3】完成发送命令功能,
该函数在board_nand_init函数中被赋值给chip->cmd_ctrl
该函数的重要体现在nand_chip中的两个函数指针成员
chip->select_chip=nand_select_chip
chip->cmdfunc = nand_command
被赋的值nand_select_chip和nand_command都通过调用chip->cmd_ctrl,即s3c2440_hwcontrol来完成主要功能。
在s3c2440_hwcontrol中chip->IO_ADDR_W = (void *)IO_ADDR_W;这句命令修改了chip->IO_ADDR_W 的值,但实际上该值的初始化在之前nand_init_chip函数中nand->IO_ADDR_R = nand->IO_ADDR_W = (void __iomem *)base_addr;之后再修改该值出现了问题(究其根本原因,本人也说不上),所以不应该修改该值,所以将该s3c2440_hwcontrol函数修改如下:
ulong IO_ADDR_W=NF_BASEX;
static void s3c2440_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
{
// struct nand_chip *chip = mtd->priv;
struct s3c2440_nand *nand = s3c2440_get_base_nand();
debugX(1, "hwcontrol(): 0x%02x 0x%02x\n", cmd, ctrl);
if (ctrl & NAND_CTRL_CHANGE) {
// ulong IO_ADDR_W = (ulong)nand;
IO_ADDR_W=NF_BASEX;
if (!(ctrl & NAND_CLE))
IO_ADDR_W |= S3C2440_ADDR_NCLE;
if (!(ctrl & NAND_ALE))
IO_ADDR_W |= S3C2440_ADDR_NALE;
// chip->IO_ADDR_W = (void *)IO_ADDR_W;
if (ctrl & NAND_NCE)
writel(readl(&nand->NFCONT) & ~S3C2440_NFCONT_nFCE, &nand->NFCONT);
else
writel(readl(&nand->NFCONT) | S3C2440_NFCONT_nFCE, &nand->NFCONT);
}
if (cmd != NAND_CMD_NONE)
//writeb(cmd, chip->IO_ADDR_W);
writeb(cmd,(void*)IO_ADDR_W);
}
- uboot的nandflash启动saveenv时Writing to Nand... FAILED问题解决办法
- uboot 启动 linux ----2 ----set setevn saveenv 命令 保存介质
- 从nand的启动的uboot
- 从Nand flash启动的uboot
- uboot saveenv解决
- nand flash uboot 启动
- uboot启动(nand)
- uboot从nand启动
- 支持nandflash启动,具有USB功能的UBOOT移植
- Server Tomcat v7.0 Server at localhost failed to start.的问题解决办法
- Re-installation failed due to different application signatures.问题解决办法
- <php+mysql>failed to open stream: Permission denied问题解决办法
- 微信小程序Failed to load resource: net::ERR_NAME_NOT_RESOLVED问题解决办法
- [NAND]UBOOT从NAND FLASH启动分析
- [NAND]UBOOT从NAND FLASH启动分析
- 关于AM335X uboot启动的时候找不到nand的问题
- Writing Kernel Image to NAND Flash
- uboot 的nand驱动
- 关于读书
- 华为andriod智能手机通讯录整理程序
- 《HTTP权威指南》读书笔记---缓存
- App Engine
- wince6.0 兼容位图CreateCompatibleBitmap和非兼容位图CreateDIBSection的区别
- uboot的nandflash启动saveenv时Writing to Nand... FAILED问题解决办法
- [设计模式]总结
- 杭电ACM 2043 密码
- iphone5适配总结
- Linux 的整体认识第一节笔记
- Ubuntu 下配置 SSH服务全过程及问题解决
- markdown
- Linux + C - 程序语言的发展以及程序的基本组成 (必备内容)
- 营销中的定位