2440超详细uboot移植笔记(十一)------支持NAND FLASH
2017-05-04 17:17
381 查看
你好!这里是风筝的博客,欢迎和我一起交流。
如果本篇博客对您有帮助,或许可以在下方评论给我留个言。
a.在s3c2440_nand.c(路径:drivers\mtd\nand\s3c2440_nand.c)文件中把board_nand_init函数里的:
cfg = S3C2440_NFCONF_EN;
cfg |= S3C2440_NFCONF_TACLS(tacls - 1);
cfg |= S3C2440_NFCONF_TWRPH0(twrph0 - 1);
cfg |= S3C2440_NFCONF_TWRPH1(twrph1 - 1);
这四句去掉,替换为:
cfg = ((tacls-1)<<12)|((twrph0-1)<<8)|((twrph1-1)<<4);
/* 使能NAND Flash控制器, 初始化ECC, 禁止片选 */
b.在
writel(cfg, &nand_reg->nfconf);
这句的下面添加一句:
writel ((1<<4)|(1<<1)|(1<<0),&nand_reg->nfcont);
c.
将
nand->select_chip = null;
这句话修改为:
nand->select_chip = s3c2440_nand_select;
d.将s3c2440_nand.c(路径:drivers\mtd\nand\s3c2440_nand.c)中的:
#define S3C2440_NFCONF_nFCE (1<<11)
改成:
#define S3C2440_NFCONF_nFCE (1<<1)
f.
在board_nand_init函数前面添加s3c2440_nand_select函数:
static void s3c2440_nand_select(struct mtd_info *mtd, int chipnr)
{
struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
switch(chipnr)
{
case -1:/*取消选中*/
nand->nfcont |= (1<<1);
break;
case 0:
nand->nfcont &= ~(1<<1);
break;
default:
BUG();
}
}
g.将s3c2440_nand.c(路径:drivers\mtd\nand\s3c2440_nand.c)中的s3c24x0_hwcontrol函数修改为:
static void s3c24x0_hwcontrol(struct mtd_info *mtd, int dat, unsigned int ctrl)
{
struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
if(ctrl & NAND_CLE)
{
/*发命令*/
writeb(dat, &nand->nfcmd);
}
else if(ctrl & NAND_ALE)
{
/*发地址*/
writeb(dat, &nand->nfaddr);
}
}
h.至此,uboot以支持NAND FLASH:
如果本篇博客对您有帮助,或许可以在下方评论给我留个言。
a.在s3c2440_nand.c(路径:drivers\mtd\nand\s3c2440_nand.c)文件中把board_nand_init函数里的:
cfg = S3C2440_NFCONF_EN;
cfg |= S3C2440_NFCONF_TACLS(tacls - 1);
cfg |= S3C2440_NFCONF_TWRPH0(twrph0 - 1);
cfg |= S3C2440_NFCONF_TWRPH1(twrph1 - 1);
这四句去掉,替换为:
cfg = ((tacls-1)<<12)|((twrph0-1)<<8)|((twrph1-1)<<4);
/* 使能NAND Flash控制器, 初始化ECC, 禁止片选 */
b.在
writel(cfg, &nand_reg->nfconf);
这句的下面添加一句:
writel ((1<<4)|(1<<1)|(1<<0),&nand_reg->nfcont);
c.
将
nand->select_chip = null;
这句话修改为:
nand->select_chip = s3c2440_nand_select;
d.将s3c2440_nand.c(路径:drivers\mtd\nand\s3c2440_nand.c)中的:
#define S3C2440_NFCONF_nFCE (1<<11)
改成:
#define S3C2440_NFCONF_nFCE (1<<1)
f.
在board_nand_init函数前面添加s3c2440_nand_select函数:
static void s3c2440_nand_select(struct mtd_info *mtd, int chipnr)
{
struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
switch(chipnr)
{
case -1:/*取消选中*/
nand->nfcont |= (1<<1);
break;
case 0:
nand->nfcont &= ~(1<<1);
break;
default:
BUG();
}
}
g.将s3c2440_nand.c(路径:drivers\mtd\nand\s3c2440_nand.c)中的s3c24x0_hwcontrol函数修改为:
static void s3c24x0_hwcontrol(struct mtd_info *mtd, int dat, unsigned int ctrl)
{
struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
if(ctrl & NAND_CLE)
{
/*发命令*/
writeb(dat, &nand->nfcmd);
}
else if(ctrl & NAND_ALE)
{
/*发地址*/
writeb(dat, &nand->nfaddr);
}
}
h.至此,uboot以支持NAND FLASH:
相关文章推荐
- 2440超详细uboot移植笔记(十五)------支持YAFFFS文件系统
- 2440超详细uboot移植笔记(十)------支持NOR FLASH
- 2440超详细uboot移植笔记(三)------指定交叉编译链
- 移植uboot-1.1.6到勤研2440之二移植支持Nand Flash(和精智2440接近,仿照100ask24x0_config配置,重现韦东山的uboot-1.1.6_patch过程)
- TQ2440 u-boot-2012.04.01移植四支持NAND Flash
- 移植u-boot学习笔记7-----修改代码之支持nand flash
- u-boot移植之支持 NAND FLASH 学习笔记
- TQ2440的学习——UBOOT移植(NAND FLASH的支持)——初步分析
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###8. u-boot引导启动nand flash中内核和根文件系统cramfs和用户文件系统yaffs2支持
- U-boot-2009.03移植之十一:第一阶段之支持2440
- 2440超详细uboot移植笔记(十二)------移植网卡驱动
- 2440超详细uboot移植笔记(一)------分析源码
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###7.NAND FLASH部分移植和支持NAND FLASH启动和读写
- 【转】u-boot-2010.12移植到2440(四,支持nand flash启动)
- u-boot-2010.12移植到2440(四,支持nand flash启动)
- fl2440 移植u-boot-2010.09全纪录4---------u-boot支持从nandflash启动
- TQ2440的学习——UBOOT移植(NOR FLASH相关操作支持)
- u-boot1.1.6移植到S3C2410的详细步骤--nand flash(新代码)
- U-boot移植 (v2012.04.1 S3C2440平台) (三) Nor flash Nand flash 驱动支持
- u-boot-2011.03在mini2440/micro2440上的移植(五)——支持Nand Flash