博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NandFlash驱动框架
阅读量:4621 次
发布时间:2019-06-09

本文共 1455 字,大约阅读时间需要 4 分钟。

1.首先和前面的几个驱动程序相似,需要分配一个nand_chip结构体

  s3c_nand = kzalloc(sizeof(struct nand_chip), GFP_KERNEL);

然后填充该结构体

 

/* 2. 设置nand_chip */

/* 设置nand_chip是给nand_scan函数使用的, 如果不知道怎么设置, 先看nand_scan怎么使用
* 它应该提供:选中,发命令,发地址,发数据,读数据,判断状态的功能
*/

  s3c_nand->select_chip = s3c2440_select_chip;//片选函数    s3c_nand->cmd_ctrl    = s3c2440_cmd_ctrl;//发送指令函数    s3c_nand->IO_ADDR_R   = &s3c_nand_regs->nfdata;//读    s3c_nand->IO_ADDR_W   = &s3c_nand_regs->nfdata;//写    s3c_nand->dev_ready   = s3c2440_dev_ready;//状态识别    s3c_nand->ecc.mode    = NAND_ECC_SOFT;//使用ecc校验

 

2.在设置硬件之前先使能nandflash时钟:

  struct clk *clk;

  clk = clkget(NULL, "nand");

  clk_enable(clk);

3.接着进行硬件寄存器的配置,nandflash寄存器较多且是连续的,这里可以用一个nand_regs结构体实现ioremap 

 

struct s3c_nand_regs {    unsigned long nfconf  ;    unsigned long nfcont  ;    unsigned long nfcmd   ;    unsigned long nfaddr  ;    unsigned long nfdata  ;    unsigned long nfeccd0 ;    unsigned long nfeccd1 ;    unsigned long nfeccd  ;    unsigned long nfstat  ;    unsigned long nfestat0;    unsigned long nfestat1;    unsigned long nfmecc0 ;    unsigned long nfmecc1 ;    unsigned long nfsecc  ;    unsigned long nfsblk  ;    unsigned long nfeblk  ;};

4.使用nand_scan 

  s3c_mtd = kzalloc(sizeof(struct mtd_info), GFP_KERNEL);

  s3c_mtd->owner = THIS_MODULE;
  s3c_mtd->priv = s3c_nand;

  nand_scan(s3c_mtd, 1);//识别NANDFLASH,构造mtd_info

 5.增加mtd分区

  add_mtd_partitions(s3c_mtd, s3c_nand_parts, 4);

转载于:https://www.cnblogs.com/izhangzhne/p/4937062.html

你可能感兴趣的文章
vSphere、Hyper-V与XenServer 你选哪个?
查看>>
java.lang.UnsupportedClassVersionError
查看>>
实现接口必须要加注解@Override吗
查看>>
apicloud UISearchBar 使用方法
查看>>
【spring+websocket的使用】
查看>>
mongo二维数组操作
查看>>
localStorage之本地储存
查看>>
Archlinux 交换左Ctrl和Cap键
查看>>
java与数据结构(6)---java实现链栈
查看>>
#openstack故障处理汇总
查看>>
搜索旋转排序数组 II
查看>>
20、docker swarm
查看>>
psp工具软件前景与范围文档
查看>>
day06-三元表达式
查看>>
C# DateTime.Now详细用法
查看>>
Php中"{}"大括号的用法总结(转)
查看>>
JavaScript内存优化
查看>>
BZOJ1059: [ZJOI2007]矩阵游戏(二分图匹配)
查看>>
P3385 【模板】负环
查看>>
URI、URL 和 URN的区别
查看>>