uboot移植记录之

上传人:桔**** 文档编号:431407929 上传时间:2023-01-14 格式:DOC 页数:13 大小:47.51KB
返回 下载 相关 举报
uboot移植记录之_第1页
第1页 / 共13页
uboot移植记录之_第2页
第2页 / 共13页
uboot移植记录之_第3页
第3页 / 共13页
uboot移植记录之_第4页
第4页 / 共13页
uboot移植记录之_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《uboot移植记录之》由会员分享,可在线阅读,更多相关《uboot移植记录之(13页珍藏版)》请在金锄头文库上搜索。

1、uboot移植记录之二移植可以从Nor flash启动的uboot请参考uboot移植系列的uboot移植记录之一下面介绍移植支持Nand flash驱动的uboot.加入Nand flash驱动的支持,可以在uboot命令行下操作Nand flash.但还未能从Nand flash启动,只能在Nor flash内运行.支持从Nandflash启动会在下节介绍。下面描述详细步骤:1. 打开Nandflash驱动支持要使uboot支持nand驱动,需要在smdk2410.h中将CFG_CMD_NAND部分注释取消,打开nandflash功能。修改如下:/* include/configs/smd

2、k2410.h */#define CONFIG_COMMANDS (CONFIG_CMD_DFL | CFG_CMD_CACHE | CFG_CMD_NAND | /*CFG_CMD_EEPROM |*/ /*CFG_CMD_I2C |*/ /*CFG_CMD_USB |*/ CFG_CMD_REGINFO | CFG_CMD_DATE | CFG_CMD_ELF)2. 添加nand_init()函数Uboot对SMDK2410板的NAND Flash初始化部分没有写即在lib_arm/board.c中的start_armboot函数中有这么一句:#if (CONFIG_COMMANDS &

3、 CFG_CMD_NAND)puts (NAND:);nand_init(); /* go init the NAND */#endif因为前面打开了CFG_CMD_NAND这个宏,uboot编译时会去查询nand_init()这个函数。而在board/smdk2410目录下任何源文件中都没有定义nand_init这个函数。所以需要我们补充这个函数以及这个函数涉及的底层操作。这里我们可以参考VCMA9板的nand_init函数,VCMA9板是一款用S3C2410的板子,因此这部分操作和SMDK2410 Demo Board很相似。大部分代码可以照搬。分析VCM9板的nand_init()函数,

4、发现需要拷贝如下内容:首先将board/mpl/vcma9/vcma9.h中下面代码拷贝到common/cmd_nand.c中do_nand函数前面。/* dongas - support nand driver */#if (CONFIG_COMMANDS & CFG_CMD_NAND)typedef enum NFCE_LOW,NFCE_HIGH NFCE_STATE;static inline void NF_Conf(u16 conf)S3C2410_NAND * const nand = S3C2410_GetBase_NAND();nand-NFCONF = conf;static

5、 inline void NF_Cmd(u8 cmd)S3C2410_NAND * const nand = S3C2410_GetBase_NAND();nand-NFCMD = cmd;static inline void NF_CmdW(u8 cmd)NF_Cmd(cmd);udelay(1);static inline void NF_Addr(u8 addr)S3C2410_NAND * const nand = S3C2410_GetBase_NAND();nand-NFADDR = addr;static inline void NF_SetCE(NFCE_STATE s)S3C

6、2410_NAND * const nand = S3C2410_GetBase_NAND();switch (s) case NFCE_LOW:nand-NFCONF &= (1NFCONF |= (1NFSTAT & (1NFDATA = data;static inline u8 NF_Read(void)S3C2410_NAND * const nand = S3C2410_GetBase_NAND();return(nand-NFDATA);static inline void NF_Init_ECC(void)S3C2410_NAND * const nand = S3C2410_

7、GetBase_NAND();nand-NFCONF |= (1NFECC);#endif/* dongas - support nand driver - end */再接着将board/mpl/vcma9/vcma9.c中下面代码拷贝到common/cmd_nand.c中来。/* dongas - support nand driver */* NAND flash initialization.*/#if (CONFIG_COMMANDS & CFG_CMD_NAND)extern ulongnand_probe(ulong physadr);static inline void NF_

8、Reset(void)int i;NF_SetCE(NFCE_LOW);NF_Cmd(0xFF); /* reset command */for(i = 0; i 10; i+); /* tWB = 100ns. */NF_WaitRB(); /* wait 200500us; */NF_SetCE(NFCE_HIGH);static inline void NF_Init(void)#if 0 /* a little bit too optimistic */#define TACLS 0#define TWRPH0 3#define TWRPH1 0#else#define TACLS 0

9、#define TWRPH0 4#define TWRPH1 2#endifNF_Conf(115)|(014)|(013)|(112)|(111)|(TACLS8)|(TWRPH04)|(TWRPH1NFCONF = (115)|(114)|(113)|(112)|(111)|(TACLS8)|(TWRPH04)|(TWRPH1 20);#endif/* dongas - support nand driver - end */另外还要在cmd_nand.c前面加上#include ,否则编译时会出现ERROR: S3C2410_NAND Undeclared错误!最后将include/co

10、nfigs/VCMA.9中下面代码拷贝到include/configs/smdk2410.h中来。/* dongas - support nand driver */*-* NAND flash settings*/#if (CONFIG_COMMANDS & CFG_CMD_NAND)#define CFG_MAX_NAND_DEVICE 1 /* Max number of NAND devices */#define SECTORSIZE 512#define ADDR_COLUMN 1#define ADDR_PAGE 2#define ADDR_COLUMN_PAGE 3#defin

11、e NAND_ChipID_UNKNOWN 0x00#define NAND_MAX_FLOORS 1#define NAND_MAX_CHIPS 1#define NAND_WAIT_READY(nand) NF_WaitRB()#define NAND_DISABLE_CE(nand) NF_SetCE(NFCE_HIGH)#define NAND_ENABLE_CE(nand) NF_SetCE(NFCE_LOW)#define WRITE_NAND_COMMAND(d, adr) NF_Cmd(d)#define WRITE_NAND_COMMANDW(d, adr) NF_CmdW(

12、d)#define WRITE_NAND_ADDRESS(d, adr) NF_Addr(d)#define WRITE_NAND(d, adr) NF_Write(d)#define READ_NAND(adr) NF_Read()/* the following functions are NOPs because S3C24X0 handles this in hardware */#define NAND_CTL_CLRALE(nandptr)#define NAND_CTL_SETALE(nandptr)#define NAND_CTL_CLRCLE(nandptr)#define NAND_CTL_SETCLE(nandptr)#def

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板/表格 > 财务表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号