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

NAND FLASH学习笔记之MTD下nand flash驱动(七)---我的调试

发布时间:2020-12-15 17:43:59 所属栏目:百科 来源:网络整理
导读:转载请注明出处: http://blog.csdn.net/wang_zheng_kai 七、如何调试新的NAND FLASH芯片 调试新的NAND FLASH芯片步骤如下: 一、驱动程序的修改,例如:jz4780_nand.c中的修改 (1)加入NAND flash 名称和 Nand flash 设备id????? ?????????????????? 在???

转载请注明出处:http://blog.csdn.net/wang_zheng_kai

七、如何调试新的NAND FLASH芯片

调试新的NAND FLASH芯片步骤如下:

一、驱动程序的修改,例如:jz4780_nand.c中的修改

(1)加入NAND flash 名称和 Nand flash 设备id?????

?????????????????? 在??? *******************************************************

??????????????????????????? *? NAND flash chip name & ID????

??????????????????????????? *******************************************************

?????????????????? 加入NAND flash 名称 和 Nand flash 设备id????????

?????????????????? 例如:

??????????????????????????? #defineNAND_FLASH_MT29F32G08CBACAWP_NAME???"MT29F32G08CBACAWP“

??????????????????????????? #defineNAND_FLASH_MT29F32G08CBACAWP_ID????? 0x68

(2)加入 NAND flash 匹配信息(这里用的是重载)

?????????????????? 在??? *******************************************************

??????????????????????????? *???? Supported NAND flash chips????????

??????????????????????????? *******************************************************

?????????????????? 中builtin_nand_flash_table[]加入 NAND flash匹配信息?????

?????????????????? 例如:

?????????????????? ??????? { NAND_FLASH_MT29F32G08CBACAWP_NAME,NAND_FLASH_MT29F32G08CBACAWP_ID,4096,LP_OPTIONS ?},? ? ??

(3)加入NAND flash 芯片信息

?????????????????? 在??? *******************************************************

??????????????????????????? *???? Supported NAND flash chips????????

??????????????????????????? *******************************************************

?????????????????? 中加入NAND flash芯片信息????

?????????????????? 例如:

?????????????????? {??? /*

??????????????????????????? ?* Datasheet of MT29F32G08CBACA,Rev-E,P109,Table-17???????????????

??????????????????????????? ?* ECC : 24bit/1080bytes????????????????

??????????????????????????? ?*/??????????????? COMMON_NAND_CHIP_INFO(NAND_FLASH_MT29F32G08CBACA3W_NAME,NAND_MFR_MICRON,?????????????????????????????????????NAND_FLASH_MT29F32G08CBACA3W_ID,1024,24,

10,5,10,15,7,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 20,20,70,200,100,60,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100,100 *1000,BUS_WIDTH_8,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NAND_OUTPUT_NORMAL_DRIVER,? NAND_RB_DOWN_FULL_DRIVER,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?micron_nand_pre_init)???? ???

?????????????????? },

?????????????????? 其中包含了针对特定Nandflash的:??????????????????

???????????????????????????????????? .ECC 强度???????????????

???????????????????????????????????? .时序信息?????????????

???????????????????????????????????? .驱动力调整?????????????????

???????????????????????????????????? .预初始化函数???

???????? ???? 更具体的定义请参考arch/mips/xburst/soc-4780/include/mach/jz4780_nand.h

(4)修改于预始化函数

?????????????????? 根据目标芯片的芯片手册,配置Timing mode 、Programmable output drive strength以及ProgrammableRB# pull-down strength等等。

?????????????????? 例如:

??????????????????????????? 根据MT29F32G08CBCAC手册中的ConfigurationOperations

??????????????????????????? 在函数micron_nand_pre_init(structjz4780_nand *nand)中进行相关配置

?

二、修改mtd/nand/nand_ids.c文件

? 定义了两个全局类型的结构体:

? structnand_flash_devnand_flash_ids[ ]

? structnand_manufacturersnand_manuf_ids[ ]

? 其中前者定义了一些NAND芯片的类型,后者定义了NAND芯片的几个厂商。NAND芯片的ID至少包含两项内容:厂商ID和厂商为自己的NAND芯片定义的芯片ID

? NAND驱动被加载的时候,它会去读取具体NAND芯片的ID,然后根据读取的内容到上述定义的nand_manuf_ids[ ]nand_flash_ids[ ]两个结构体中去查找,以此判断该NAND芯片是那个厂商的产品,以及该NAND芯片的类型。若查找不到,则NAND驱动就会加载失败,因此在开发NAND驱动前必须事先将你的NAND芯片添加到这两个结构体中去(其实这两个结构体中已经定义了市场上绝大多数的NAND芯片,所以除非你的NAND芯片实在比较特殊,否则一般不需要额外添加)。

? 例如:

? nand_manuf_ids[]

? {NAND_MFR_MICRON,"Micron"},

?

? nand_flash_ids[]

? {"NAND 4GiB 3,3V 8-bit",0x68,LP_OPTIONS},

三、对bootloader中相关文件的修改

? 1)在bootable/bootloader/xboot/boot/nand/nand_ids.c中添加相应的nand的相关信息,这里以MT29F32G08为例:

??????? {"MICRON_MT29F32G08CBADAWP",0x2C44,0x00A94B44,2,1,8192,2048*1024,744,3,74,2128,? 1024,40,8,MICRON_NAND,0x03,0x02,?0x01,? 0x00,0x04},

? 以上关于nand的信息,包括idextidplane的个数,页大小,块大小,冗余区大小,采用多少位的ecc,以及对应的几个时间参数都要按照芯片手册上的说明进行填写,这样才可以进行nand的读取写入等操作??

? 2)在bootable/bootloader/xboot/include/asm/jz_mem_nand_configs/目录下添加新增nand对应的头文件:NAND_MT29F32G08CBACA.h,内容如下:?

? #ifndef __NAND_CONFIG_H#define__NAND_CONFIG_H

? /* *? *This file contains the nand configuration parameters for thecygnusboard. *?? */

? /*-----------------------------------------------------------------------

? ?*? * NAND FLASH configuration *?? */

? #define CONFIG_NAND_K9GAG08U0D#defineCFG_NAND_BCH_BIT???? 24?????? /*Speif () {

? y the hardware BCH algorithm for nand(4|8) */

? #define CFG_NAND_BW8??????????? 1???????? /* Data bus width: 0-16bit,1-8bit */

? #define CFG_NAND_PAGE_SIZE????? 4096

? #define CFG_NAND_OOB_SIZE?????? 224??????/* Size of OOB space per page (e.g. 64 128 etc.) */

? #define CFG_NAND_ROW_CYCLE????? 3

? #define CFG_NAND_BLOCK_SIZE???? (1024 << 10)? /* NAND chip block size*/

? #define CFG_NAND_BADBLOCK_PAGE? 0????????????/* NAND bad block was marked at this page in a ? block,starting from 0 */

? #define CFG_NAND_TOTAL_BLOCKS?? (1024*4)?????/*4Gnand*/

? #define X_DELAY_TRR???????????? 20

? #define X_DELAY_TADL??????????? 70

? #define X_DELAY_TWHR??????????? 60

? #endif /* __NAND_CONFIG_H */~

? 这里同样要正确设置nand的相关信息,比如ecc是多少位,页大小,块大小,冗余区大小等,如果这里设置的不对,在启动时候会出错。

??3)在bootable/bootloader/xboot/include/configs/grus.h中包含新加的头文件:#include“asm/jz_mem_nand_configs/NAND_MT29F32G08CBACA.h”

(编辑:李大同)

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

    推荐文章
      热点阅读