加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

mini2440 nandflash裸机驱动

发布时间:2020-12-15 07:16:15 所属栏目:百科 来源:网络整理
导读:一、开发环境 ?单板:mini2440,nanflasf:K9K8G08U0B ? ?1G 8bit 宿主机:centos 2.6.32 完成功能:从nandflash读取1page内容(4k之后的),拷贝到sdram中去运行。 二、开发过程即注意事项 ?1、nandflash 与 norflash ? ? ? ? nandflash不同于norflash,nor

一、开发环境

?单板:mini2440,nanflasf:K9K8G08U0B ? ?1G 8bit

宿主机:centos 2.6.32

完成功能:从nandflash读取1page内容(4k之后的),拷贝到sdram中去运行。


二、开发过程即注意事项

?1、nandflash 与 norflash

? ? ? ? nandflash不同于norflash,norflash的借口与ram相同,可以随意访问任意地址数据,而nandflash仅包含几个IO借口,需要串行的访问数据,一般以一个page为单位进行访问。因此:norflash可以直接运行代码,而nandflash主要用来存放数据。

2、nandflash 驱动

? ? 要完成nandflash的驱动,至少需要两方面的资料,s3c2440芯片手册中关于nandflash控制器、K9K8G08U0B 的芯片手册。对于不同的cpu以及nandflash,控制的方法都会有不同。在我的开发过程中,主要是要注意两部分内容,(1)TACLS ??TWRPH0 ??TWRPH1 ?时序设置 ?(2)读,写,擦除nandflash时,地址序列的发送。对于点1 以及其它的内容,只要参照芯片手册,我在开发过程中,主要是点2 遇到了一些问题。文章主要讲解点2.



上面两幅图是K9K8G08U0B地址序列,和命令字,我开始做的时候有个疑问,我们能用的,一个page只有2k,那为什么列地址有12位(A0---A11)呢?本该11位就够啊,后面分析,更定和1个page中后面的校验空间有关,下面两张与是另外一个信号的芯片手册,它就有两个读命令。一个读存储空间,一个读检空间,它每个page是512B,分为上,下片分开读,一片256字节,也就是列地址只要8位即可,这与它的地址序列中标注的相符合。




那么,对于K9K8G08U0B ,应该怎访问呢,要知道,我们平常说的地址,比如nandflash中的1M-2M,我们指的是page中能够让我们存储数据的,所以我目前是这么认为的,对于K9K8G08U0B,如果我们只是从page的可用部分读数据,那么A11是不需要的,我们传过去的时候,应该让A11位0,后续的行地址,经过计算,和地址序列中的一样。因此,对于地址,add 正确的发送方式为:

?

volatile unsigned char*p= (volatile unsigned char*)&s3c2440nand->NFADDR;
*p=addr&0xff;
*p=(addr>>8)&0x07; A11不需要
*p=(addr>>11)&0xff;
*p=(addr>>19)&0xff;
*p=(addr>>27)&0x07;

?或者

volatile unsigned char*p= (volatile unsigned char*)&s3c2440nand->NFADDR;	
int col,page;
col = addr & (2047);        //取得列地址,其实这里已经将A11变成0了,2047是:0111 1111 1111
page = addr / 2048;        //取得行地址
*p = col & 0xff; /* 列地址 A0~A7 */
*p = (col >> 8) & 0x0f; /* 列地址 A8~A11 */
*p = page & 0xff; /* 行地址 A12~A19 */
*p = (page >> 8) & 0xff; /* 行地址 A20~A27 */
*p = (page >> 16) & 0x07; /* 行地址 A28~A29 */


通过这次写nandflash的裸机程序,觉得很多东西要懂得原理,懂得原理再结合实际的芯片手册,总能找到问题,这侧还因为一个函数没有返回值,导致数据没有读出,很郁闷,编译器为啥没警告。

? ? ?不过目前还不知道像这类的驱动程序如何调试,现在还是往后接着学。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读