- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UBOOT中关于NAND FLASH的支持
UBOOT中关于NAND FLASH的支持十分完善,从命令上可以看出来,关于NAND FLASH的操作专门有个子系统。在驱动层面,UBOOT使用了MTD驱动规范,这个规范中对NAND FLASH的各种操作实现都很规范,一般来说只改写些少量的代码(相对于MTD设备驱动来说)就可以支持起来。大大减轻了移植难度。
一般来说,各个主控芯片的NAND FALSH驱动都存放于drivers/mtd/nand/目录之下,就S3C24X0系列芯片来说,UBOOT现在只提供了S3C2410的NAND FLASH驱动,而S3C2410和S3C2440在NAND FALSH模块方面是有一定的差别的,所以需要修改。
既然这里没有现成的驱动程序,就来实现一个吧,由于S3C2410和S3C2440同属于一个系列的芯片,所以就以S3C2410的驱动为模板写S3C2440的NAND FLASH驱动。
S3C2410的驱动(drivers/mtd/nand/s3c2410_nand.c)
001 #include common.h 002 003 #include nand.h 004 #include asm/arch/s3c24x0_cpu.h 005 #include asm/io.h 006 007 #define S3C2410_NFCONF_EN (115) 008 #define S3C2410_NFCONF_512BYTE (114) 009 #define S3C2410_NFCONF_4STEP (113) 010 #define S3C2410_NFCONF_INITECC (112) 011 #define S3C2410_NFCONF_nFCE (111) 012 #define S3C2410_NFCONF_TACLS(x) ((x)8) 013 #define S3C2410_NFCONF_TWRPH0(x) ((x)4) 014 #define S3C2410_NFCONF_TWRPH1(x) ((x)0) 015 016 #define S3C2410_ADDR_NALE 4 017 #define S3C2410_ADDR_NCLE 8 018 019 #ifdef CONFIG_NAND_SPL 020 021 /* in the early stage of NAND flash booting, printf() is not available */ 022 #define printf(fmt, args...) 023 024 static void nand_read_buf(struct mtd_info *mtd, u_char *buf, int len) 025 { 026 int i; 027 struct nand_chip *this = mtd-priv; 028 029 for (i = 0; i len; i++) 030 buf[i] = readb(this-IO_ADDR_R); 031 } 032 #endif 033 034 static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) 035 { 036 struct nand_chip *chip = mtd-priv; 037 struct s3c2410_nand *nand = s3c2410_get_base_nand(); 038 039 debugX(1, hwcontrol(): 0x%02x 0x%02x\n, cmd, ctrl); 040 041 if (ctrl NAND_CTRL_CHANGE) 042 { 043 ulong IO_ADDR_W = (ulong)nand; 044 045 if (!(ctrl NAND_CLE)) 046 IO_ADDR_W |= S3C2410_ADDR_NCLE; 047 if (!(ctrl NAND_ALE)) 048 IO_ADDR_W |= S3C2410_ADDR_NALE; 049 05
您可能关注的文档
- ServerGuide_安装指南-无阵列_07年_12月版.doc
- Serv-U File Server 11.3.0.0安装—使用-注册教程.doc
- solaris下将关机权限赋予普通用户.doc
- spring框架在什么地方真正实例化了Bean.docx
- SQL Anywhere:启动ASA数据库.doc
- SQL 安装过程经常提示挂起问题.doc
- SQLServer LDF文件太大解决.docx
- SQL服务器无法启动,未能建立与(LOCAL)的连接解决方法.docx
- stanford大学-大数据挖掘-RelationExtraction-18.ppt
- Stm8s_IAP_Bootloader设计.docx
最近下载
- 01安吉县山洪灾害调查报告.pdf
- 方菱数控F162X(Ver2.3)F1620、F1621、F1627D、F1627S弧压调高器操作手册.pdf
- 中国地图可填色可编辑PPT模板.pptx VIP
- 《深度入局》 程序化数字户外媒体2025中国内地市场白皮书.pdf VIP
- 2025年高考生物复习新题之基因工程.pdf VIP
- 早产试题及答案.doc VIP
- 仁爱版七年级英语下册 动词过去式 复习课件(共28张PPT)(含音频+视频).pptx VIP
- 马丁·加德纳:啊哈!灵机一动(妙想奇思——趣味数学谜题60例).doc VIP
- (完整)小学一年级英语试卷 .pdf VIP
- 钳工基础知识培训资料.pptx VIP
文档评论(0)