打印
[技术问答]

NUC972 读写擦NANDFLASH的驱动

[复制链接]
1322|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qianqiandenian|  楼主 | 2018-12-5 09:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我根据BSP里面的NAND YAFFS2的例程调试NANDFLASH。
我现在不想使用YAFFS2文件系统。想直接调NANDflash驱动写。
int main(void)
{
    char *ptr;
    char mtpoint[] = "user";
    char buf[8];
    int volatile i;
  
        sysInitializeUART();
    sysprintf("\n");
    sysprintf("==========================================\n");
    sysprintf("          FMI NAND YAFFS2                 \n");
    sysprintf("==========================================\n");

        sysDisableCache();
        sysInvalidCache();
        sysSetMMUMappingMethod(MMU_DIRECT_MAPPING);
        sysEnableCache(CACHE_WRITE_BACK);

    SYS_Init();

    nand_init();                       
       
//         cmd_yaffs_devconfig(mtpoint, 0, 0x10, 0x14);
//     cmd_yaffs_dev_ls();
//           cmd_yaffs_mount(mtpoint);
//     cmd_yaffs_dev_ls();
nand_read_chip();

while(1)
{
}

}



void nand_read_chip(void)
{
        struct mtd_info *mtd = &nand_info[0];
        struct nand_chip *nand = &nand_chip[0];

  size_t retlen;

        u_char buf1[2048];
       u_char buf[2048];
        unsigned int i=0;

       struct erase_info ei;
        int retval = 0;
//擦除
        ei.mtd = mtd;
        ei.addr = 0x1600000;
////        ei.len = dev->data_bytes_per_chunk * dev->param.chunks_per_block;
        ei.len = 2048*64;
        ei.time = 1000;
        ei.retries = 2;
        ei.callback = NULL;
        ei.priv = 0;

        /* Todo finish off the ei if required */
        retval = mtd->erase(mtd, &ei);

//写
        memset(buf, 0x88, 2048);
        mtd->write(mtd ,0x1600000,2048,&retlen,buf);       


//读       
        mtd->read(mtd ,0x1600000,2048,&retlen,buf1);       
       
                for(i =0; i < 2048; i++)
                sysPutChar(buf1[i]);
}

擦除,写,读数据不成功,有没有人调试过
沙发
734774645| | 2018-12-5 14:38 | 只看该作者
应该跟这个芯片有关吧,或者看看你之前的那个底层驱动怎么实现的。

使用特权

评论回复
板凳
qianqiandenian|  楼主 | 2018-12-5 15:08 | 只看该作者
734774645 发表于 2018-12-5 14:38
应该跟这个芯片有关吧,或者看看你之前的那个底层驱动怎么实现的。

使用的是W29N01芯片,使用自带的NAND YAFFS2这个例程就可以写进去,使用mtd层的接口函数就不可以了。擦除的时候第一页最后200多个字节不是0xFF,第二页是全0,但是擦除函数返回的值是对的

使用特权

评论回复
地板
qianqiandenian|  楼主 | 2018-12-5 15:10 | 只看该作者
那个大神有nuc972的NAND flash的驱动啊

使用特权

评论回复
5
heisexingqisi| | 2018-12-6 17:25 | 只看该作者
你去新唐的github看看,都在那提供各种驱动。

使用特权

评论回复
6
heisexingqisi| | 2018-12-6 17:25 | 只看该作者
之前有人发帖发过那个链接。等我找找给你分享来。

使用特权

评论回复
7
heisexingqisi| | 2018-12-6 17:26 | 只看该作者
8
李程峰| | 2019-9-6 11:59 | 只看该作者
问题解决了吗,为最近也遇上了同样的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝