NAND.c
来源:互联网 发布:工作计划制定软件 编辑:程序博客网 时间:2024/06/04 20:10
#include "nand.h"
//#include "printf.h"
static void NF_Reset()
{
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_RESET);
NF_Check_Busy();
NF_Disable();
}
#define TACLS 1
#define TWRPH0 4
#define TWRPH1 0
void NF_Init(void)
{
rGPACON &= ~(0x3f << 17);
rGPACON |= (0x3f << 17);
rNFCONF = (TACLS << 12)|(TWRPH0 << 8)|(TWRPH1 << 4);
rNFCONT = (0 << 12) | (1 << 0);
rNFSTAT = 0;
NF_Reset();
}
void NF_WritePage(unsigned int block , unsigned int page,unsigned char *buffer)
{
unsigned int i;
unsigned int blockPage = (block << 6) + page;
unsigned char *bufPt = buffer;
NF_Reset();
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_WRITE1);
NF_Send_Addr(0x00);
NF_Send_Addr(0x00);
NF_Send_Addr(blockPage & 0xff);
NF_Send_Addr((blockPage >> 8) & 0xff);
NF_Send_Addr((blockPage >> 16) & 0x01);
for(i = 0; i < 2048; i++)
{
NF_Send_Data(*bufPt++);
}
NF_Send_Cmd(NAND_CMD_WRITE2);
NF_Check_Busy();
NF_Disable();
}
void NF_ReadPage(unsigned int block ,unsigned int page,unsigned char *dstaddr)
{
unsigned int i;
unsigned int blockPage = (block << 6) + page;
NF_Reset();
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_READ0);
NF_Send_Addr(0x00);
NF_Send_Addr(0x00);
NF_Send_Addr(blockPage & 0xff);
NF_Send_Addr((blockPage >> 8) & 0xff);
NF_Send_Addr((blockPage >> 16) & 0x01);
NF_Send_Cmd(NAND_CMD_READSTART);
NF_Check_Busy();
for(i = 0; i < 2048; i++)
{
dstaddr[i] = NF_Read_Byte();
}
NF_Disable();
}
void NF_EraseBlock(unsigned int block)
{
unsigned int blocknum = block << 6;
NF_Reset();
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_ERASE1);
NF_Send_Addr(blocknum & 0xff);
NF_Send_Addr((blocknum >> 8) & 0xff);
NF_Send_Addr((blocknum >> 16) & 0xff);
NF_Send_Cmd(NAND_CMD_ERASE2);
NF_Check_Busy();
NF_Disable();
}
//#include "printf.h"
static void NF_Reset()
{
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_RESET);
NF_Check_Busy();
NF_Disable();
}
#define TACLS 1
#define TWRPH0 4
#define TWRPH1 0
void NF_Init(void)
{
rGPACON &= ~(0x3f << 17);
rGPACON |= (0x3f << 17);
rNFCONF = (TACLS << 12)|(TWRPH0 << 8)|(TWRPH1 << 4);
rNFCONT = (0 << 12) | (1 << 0);
rNFSTAT = 0;
NF_Reset();
}
void NF_WritePage(unsigned int block , unsigned int page,unsigned char *buffer)
{
unsigned int i;
unsigned int blockPage = (block << 6) + page;
unsigned char *bufPt = buffer;
NF_Reset();
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_WRITE1);
NF_Send_Addr(0x00);
NF_Send_Addr(0x00);
NF_Send_Addr(blockPage & 0xff);
NF_Send_Addr((blockPage >> 8) & 0xff);
NF_Send_Addr((blockPage >> 16) & 0x01);
for(i = 0; i < 2048; i++)
{
NF_Send_Data(*bufPt++);
}
NF_Send_Cmd(NAND_CMD_WRITE2);
NF_Check_Busy();
NF_Disable();
}
void NF_ReadPage(unsigned int block ,unsigned int page,unsigned char *dstaddr)
{
unsigned int i;
unsigned int blockPage = (block << 6) + page;
NF_Reset();
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_READ0);
NF_Send_Addr(0x00);
NF_Send_Addr(0x00);
NF_Send_Addr(blockPage & 0xff);
NF_Send_Addr((blockPage >> 8) & 0xff);
NF_Send_Addr((blockPage >> 16) & 0x01);
NF_Send_Cmd(NAND_CMD_READSTART);
NF_Check_Busy();
for(i = 0; i < 2048; i++)
{
dstaddr[i] = NF_Read_Byte();
}
NF_Disable();
}
void NF_EraseBlock(unsigned int block)
{
unsigned int blocknum = block << 6;
NF_Reset();
NF_Enable();
NF_Enable_RB();
NF_Send_Cmd(NAND_CMD_ERASE1);
NF_Send_Addr(blocknum & 0xff);
NF_Send_Addr((blocknum >> 8) & 0xff);
NF_Send_Addr((blocknum >> 16) & 0xff);
NF_Send_Cmd(NAND_CMD_ERASE2);
NF_Check_Busy();
NF_Disable();
}
0 0
- NAND.c
- NAND.c
- nand
- nand
- nand
- nand
- nand
- NAND
- omap-nand-flash.c的阅读
- s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构 【2】
- s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构
- s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构
- s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构
- 近期工作小结(nand-b/c的驱动)
- s3c2410移植nand支持到uboot, 使用nand_legacy.c 【1】
- NAND: U-Boot BUG at mtdcore.c:20
- Android 异常:NAND: could not write file C:\Users\ADMINI~1\AppData\Local\Temp\\AndroidEmulator\TMPA81B.
- Nand Flash
- android 仿 淘宝淘口令
- win7+ubuntu虚拟机+hadoop2.6.0+eclipse(实体机)环境配置
- Oracle中IS TABLE OF的使用
- 序列化二叉树
- gulp/grunt和browserify/webpack的区别
- NAND.c
- 【项目】简易http服务器流程图分析
- EffectiveJava笔记 第一章
- 把表中一列的所有数字加和
- [2017.4.21]IMWEB前端小白训练营日记(七)
- 【涨姿势】Windows下调整系统栈大小(附图)
- 凯文·凯利来华再谈人工智能,并预测未来 25 年的技术发展趋势
- jQuery开发笔记
- java面向对象思想引入,类定义的格式