- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NandFlash驱动.doc
Nand Flash 驱动详解
1 nand_chip 结构
位于 \include\linux\mtd\nand.h,是NandFlash 驱动的一个核心数据结构。
IO_ADDR_R/IO_ADDR_W:读写Flash的地址,本系统中,该地址为0CS3)
read_byte / write_byte :读写字节的函数,根据数据总线的不同,可分别使用nand_read_byte16或nand_read_byte / nand_write_byte16或nand_write_byte
read_word / write_word :读写字的函数,具体使用nand_read_word / nand_write_word实现
read_buf / write_buf :读写缓存的函数,根据数据总线的不同,可分别使用nand_read_buf16或nand_read_buf / nand_write_buf16 或 nand_write_buf 实现
verify_buf:缓存校验,验证从Flash中读取的内容是否与缓存中一致,根据数据总线的不同,可分别使用nand_verify_buf16 或 nand_verify_buf 实现
select_chip:选择芯片,当参数为0时,置CS3为低,当参数为-1时,置CS3为高。具体由nand_select_chip实现,其实是通过调用hwcontrol实现的。
block_bad:读取指定页的Bad标记(badblockpos处,在使用小块NandFlash时,该变量为5,使用大块的NandFlash时,该变量为0),如果读到的内容为0xFF,则认为该Block未坏。具体由nand_block_bad实现。函数中用到nand_get_device,该函数用于处理多线程同时访问NandFlash的互锁。
block_markbad:具体由nand_default_block_markbad实现,该函数在bbt中将指定偏移所属块标志为坏块,并利用write_bbt函数将其存储到Flash中。最后该函数在坏块的坏块标记(badblockpos)处写入0x00,表示该块为坏块。
hwcontrol:执行命令锁存(NAND_CTL_SETCLE)、地址锁存(NAND_CTL_SETALE)以及片选信号控制(NAND_CTL_CLRNCE、NAND_CTL_SETNCE)等命令。其中由于ALE、CLE均是地址线,因此命令锁存、地址锁存只需要改变写地址(IO_ADDR_W)即可,而片选信号控制需要直接控制PC14管脚。具体由at91sam9260ek_nand_hwcontrol实现
dev_ready:具体由at91sam9260ek_nand_ready函数实现,该函数返回Flash的R/B脚状态。
cmdfunc:具体由nand_command函数实现,对于大块的Flash,采用nand_command_lp实现。注意对于写命令,首先得利用read0/read1/readoob命令选中目标数据块
waitfunc:具体由nand_wait函数实现,该函数根据命令的不同设定不同的超时时间。该函数时刻检查R/B管脚或状态寄存器中的R/B位,直到R/B状态进入Ready状态,或总体超时。
calculate_ecc:具体由nand_calculate_ecc函数实现,该函数利用软件法计算256字节的3字节ECC编码。
correct_data:具体由nand_correct_data函数实现,该函数检测并纠正256字节块中的1位错误。
enable_hwecc:具体由at91sam9260ek_nand_enable_hwecc函数实现,使能硬件计算ECC码
erase_cmd :具体由single_erase_cmd函数实现,擦除指定块。
scan_bbt:具体由nand_default_bbt函数实现。nand_default_bbt函数在调用nand_scan_bbt之前,根据options确定bbt是否存在于Flash中,如果不存在与Flash中,则将this-bbt_td设置为NULL,在nand_scan_bbt中自然会创建一个this-bbt。否则将从Flash中读取bbt。
eccmode:ECC的计算方法,现在采用NAND_ECC_SOFT,意指软件运算,即采用calculate_ecc进行运算,利用correct_data进行校正
eccsize:ECC校准的数据长度,现利用calculate_ecc进行校准,数据长度固定为256字节
eccbyte:ECC校验码字节数,软件校准为3字节
eccsteps:ECC校验的步骤,由于FLASH每页的字节数为
您可能关注的文档
最近下载
- 数学学科课和数学活动课.docx
- 推台锯操作规程.pdf VIP
- Unit1Music测试卷2024-2025学年沪教版(五四制)七年级英语下册.docx VIP
- DB51∕T 940-2009 草原有害生物防治农药安全使用规范.pdf
- 医疗器械注册质量管理体系核查指南.pdf
- 江苏省南京市第二十九学校2023-2024学年九年级下学期第一次月考英语试题和答案详解.pdf
- 二年级上册语文素材指鹿为马人教部编版.ppt
- 2024年宁夏银川市单招职业倾向性测试题库及答案(全优).docx VIP
- 第五课 为什么我一个人站着吃.pptx VIP
- 17J925-1_压型金属板建筑构造.docx VIP
文档评论(0)