安霸flash dma操作

本文介绍了安霸芯片中Flash的DMA操作,涉及nand_control寄存器的配置,包括列地址周期、ID读取、读确认、中断使能等设置。此外,详细说明了4-KB DMA Data FIFO的地址范围及其在读写操作中的作用。根据SDK提供的代码进行操作,该过程相对直接,不需要额外的自定义操作。
摘要由CSDN通过智能技术生成

flash的dma操作

nand_init()
{
    //Flash_IO_dma_control  数据FIFO DMA使能和控制信息
    //将memory target设置为NAND Flash,就是主内存和nand flash之间进行DMA数据传输
    writel(FIO_DMACTR_REG,(readl(FIO_DMACTR_REG) & 0xcfffffff);
    //Force ReadID with 4-cycles
    writel(NAND_CTR_REG,readl(NAND_CTR_REG)|NAND_CTR_I4);
    //Reset chip 这个函数实现及过程在下面给出
    nand_wait_cmd_done(NAND_CMD_RESET);
    //Read ID
    nand_wait_cmd_done(NAND_CMD_READID);
    id = readl(NAND_ID_REG);
}

void nand_wait_cmd_done(u32 cmd)
{
    /*NAND_CMD_REG命令寄存器的后4位为命令标示位,具体命令详见芯片手册*/
    writel(NAND_CMD_REG,cmd);

    rct_timer2_reset_count();

    while(1)
    {
        /*读命令完成中断状态寄存器,命令完成后该中断标志会自动置为1*/
        if(readl(NAND_INT_REG) & NAND_INT_DI)// 0x1
        {
            break;
        }
        if(rct_timer2_get_count() >= NAND_CMD_TIMEOUT)
        {
            putstr("nand cmd timeout:");
            puthex(cmd);
            putstr("\r\n");
            while(1);
        }
    }
    /*将中断完成标志为重新置为0*/
    writel(NAND_INT_REG,0x0);
}






nand_reset()
{
    /*Reset FIO FIFO,and Exit random read mode*/
    setbitsl(FIO_CTR_REG,FIO_CTR_RR);
    rct_timer2_dly_ms(1);/*delay is must have*/
    clrbitsl(FIO_CTR_REG,FIO_CTR_RR);
    /*Clear the FIO DMA Status Register*/
    writel(FIO_DMASTA_REG,0x0);
    /*Setup FIO DMA Control Register*/
    /*FIO_DMACTR_TS4B Transfer size 在AHB总线上每次传输的数据大小4字节*/
    writel(FIO_DMACTR_REG,FIO_DMACTR_FL | FIO_DMACTR_TS4B);
    /*Setup NAND Flash Control Register*/
    /*参考下面nand_control寄存器指定的相应位*/
    writel(NAND_CTR_REG,flnand.control);
    /*清中断状态位*/
    writel(NAND_INT_REG,0x0);
    /*Setup flash timing register*/
    /*关于时序这块可参考下面详细的介绍*/
    writel(NAND_TIM0_REG,flnand.timing0);
    ........
    return 0;
}

//这些时序在nandflash的datasheet中可以查得
#define NAND_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值