當前位置:編程學習大全網 - 源碼下載 - 如何編寫Linux下Nand Flash驅動

如何編寫Linux下Nand Flash驅動

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)的測試相關部分內容。

  • 上一篇:網頁素材的特效
  • 下一篇:查快遞物流怎麽查
  • copyright 2024編程學習大全網