TQ2440 u-boot-2012.04.01移植四支持NAND Flash
继?u-boot-2012.04.01移植二支持NOR Flash,继续修改代码支持NAND Flash。最后直接用NOR Flash里的u-boot烧写自己移植的u-boot到NAND,方便电脑没有并口或手上没有openjtag,照样能移植u-boot,当然有openjtag更方便。
开发环境: 目标: 1.支持NOR Flash启动,串口正常输出 2.支持NAND启动 3.支持DM9000网卡 虽然单板现在支持NOR Flash,但u-boot还不支持读写NAND Flash,继续完善u-boot.修改u-boot支持NAND Flash 1.增加NAND 支持 include/configs/TQ2440.h24:去掉以前屏蔽的#define CONFIG_CMD_NAND change@change:~/Si/TQ2440/u-boot-2012.04.01$ cp drivers/mtd/nand/s3c2410_nand.c drivers/mtd/nand/s3c2440_nand.c 增加62:COBJS-$(CONFIG_NAND_S3C2440) += s3c2440_nand.o 然后在include/configs/TQ2440.h增加相关宏定义210:: #ifdef CONFIG_CMD_NAND #ifdef CONFIG_S3C2410 2.修改源码 接着修改drivers/mtd/nand/s3c2440_nand.c 129:struct s3c2410_nand *nand_reg = s3c2410_get_base_nand();改为struct s3c2440_nand *nand_reg = s3c2440_get_base_nand(); 145:#if 0 ?writel ((1<<4)|(1<<1)|(1<<0),&nand_reg->nfcont);//**add error nfconf 将s3c2410_hwcontrol替换为s3c2440_hwcontrol 将s3c2410_dev_ready替换为s3c2440_dev_ready 去掉90:#ifdef CONFIG_S3C2410_NAND_HWECC整个宏定义的代码 修改s3c2440_dev_ready函数struct s3c2410_nand *nand = s3c2410_get_base_nand();改为struct s3c2440_nand *nand = s3c2440_get_base_nand(); 修改board_nand_init函数中nand->select_chip = NULL;改为nand->select_chip = s3c2440_nand_select;,不使用默认的 修改s3c2440_hwcontrol(...)函数为 static void s3c2440_hwcontrol(struct mtd_info *mtd,int dat,unsigned int ctrl) { //struct nand_chip *chip = mtd->priv; struct s3c2440_nand *nand = s3c2440_get_base_nand(); if (ctrl & NAND_CLE) { // **send command writeb(dat,&nand->nfcmd); } else if (ctrl & NAND_ALE) { //**send address writeb(dat,&nand->nfaddr); } } 参考默认的nand_select_chip写s3c2440_nand_select static void s3c2440_nand_select(struct mtd_info *mtd,int chipnr) { //struct nand_chip *chip = mtd->priv; struct s3c2440_nand *nand = s3c2440_get_base_nand(); switch (chipnr) { case -1://* no selaect //chip->cmd_ctrl(mtd,NAND_CMD_NONE,0 | NAND_CTRL_CHANGE); nand->nfcont |= (1<<1); break; case 0://*select nand->nfcont &= ~(1<<1); break; default: BUG(); } } change@change:~$ cd Si/TQ2440/u-boot-2012.04.01/ U-Boot 2012.04.01 (Oct 25 2012 - 22:47:25) CPUID: 32440001 In:??? serial NAND erase: device 0 offset 0x0,size 0x80000 NAND write: device 0 offset 0x0,size 0x80000 烧写完毕,拨到NAND启动,上电,串口115200 8 n 1
CPUID: 32440001 In:??? serial 看到nand输出信息了,基本正常,下一步支持DM9000 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |