linux怎么查看nand flash型号

linux怎么查看nand flash型号,第1张

添加了ONFI,LBA规范的介绍

添加了Unique ID介绍

添加了对应的MTD中检测不同类型芯片的代码

增加了关于Nand Flash的软件和硬件的ECC算法的简介

1. 了解硬件的nand

flash的各个参数和工作原理

具体参考nand flash的datasheet,主要包括,自己nand

flash的厂商,型号等。

Nand flash的页大小,oob大小,块大小,位宽8bit还是16bit。

工作原理,上面已经做了一定描述,不清楚的,可以参考datasheet,多看看,就会明白很多。

2. 按照linux下驱动编写规范编写nand

flash驱动,

可以参考其他已经有的驱动,比如内核源码中已经有的

drivers/mtd/nand/s3c2410.c

就是个很好的例子。

自己以其为模板,实现自己板子的nand flash驱动。

其实主要工作就是,实现

static struct platform_driver s3c2410_nand_driver =

{

.probe=

s3c2410_nand_probe,

.remove =

s3c2410_nand_remove,

.suspend =

s3c24xx_nand_suspend,

.resume =

s3c24xx_nand_resume,

.driver= {

.name =

"s3c2410-nand",

.owner=

THIS_MODULE,

},

}

中的

XXX_nand_probe函数

XXX_nand_remove函数

XXX_nand_enable_hwecc,如果支持硬件ecc的话。

对nand flash的读写,这两个函数,实现了对nand的具体 *** 作。

【Linux下Nand Flash驱动编写简单步骤】

软件和硬件知识,都已经了解的话,由于上层的linux的 mtd框架中,已经完全封装好了,对nand

flash的write page,write oob等相关函数的实现,那么剩下的只是相对来说已经是很少量的,关于nand

驱动具体内部 *** 作方面的工作:

1.初始化

先是在nand 芯片初始化的时候,对其

XXX_nand_init_chip()

给对应的芯片chip赋给对应的

XXX_nand_read_buf和XXX_nand_write_buf等函数:

chip->cmd_ctrl =

XXX_nand_hwcontrol

chip->dev_ready =

XXX_nand_devready

chip->read_buf =

XXX_nand_read_buf

chip->write_buf =

XXX_nand_write_buf

以实现后续的对nand芯片的 *** 作。

然后根据ecc类型,赋给对应的ecc的校验与纠错函数:

chip->ecc.hwctl =

XXX_nand_enable_hwecc

chip->ecc.calculate = XXX

_nand_calculate_ecc

3.

实现上面提到的对应的各个函数,关于如何实现,参考一下其他nand驱动,就会理解很多了。

4. 驱动测试,参考具体的 ldd3(Linux

Device Driver version 3)的测试相关部分内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7437449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存