亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

linux nand flash驅動編寫

2024-09-05 23:04:42
字體:
來源:轉載
供稿:網友

很長一段時間,nand flash都是嵌入式的標配產品。nand flash價格便宜,存儲量大,適用于很多的場景?,F在很普及的ssd,上面的存儲模塊其實也是由一塊一塊nand flash構成的。對于linux嵌入式來說,開始uboot的加載是硬件完成的,中期的kernel加載是由uboot中的nand flash驅動完成的,而后期的rootfs加載,這就要靠kernel自己來完成了。當然,這次還是以三星s3c芯片為例進行說明。

1、nand flash驅動在什么地方,可以從drviers/mtd/Makefile來看

obj-y    += chips/ lpddr/ maps/ devices/ nand/ onenand/ tests/ 

2、nand在mtd下面,是作為一個單獨目錄保存的,這時應該查看nand下的Kconfig

config MTD_NAND_S3C2410   tristate "NAND Flash support for Samsung S3C SoCs"   depends on ARCH_S3C24XX || ARCH_S3C64XX   help    This enables the NAND flash controller on the S3C24xx and S3C64xx    SoCs     No board specific support is done by this driver, each board    must advertise a platform_device for the driver to attach.  config MTD_NAND_S3C2410_DEBUG   bool "Samsung S3C NAND driver debug"   depends on MTD_NAND_S3C2410   help    Enable debugging of the S3C NAND driver  config MTD_NAND_S3C2410_CLKSTOP   bool "Samsung S3C NAND IDLE clock stop"   depends on MTD_NAND_S3C2410   default n   help    Stop the clock to the NAND controller when there is no chip    selected to save power. This will mean there is a small delay    when the is NAND chip selected or released, but will save    approximately 5mA of power when there is nothing happening. 

3、不難發現,MTD_NAND_S3C2410才是那個真正的macro,嘗試在Makefile找文件

obj-$(CONFIG_MTD_NAND_S3C2410)   += s3c2410.o 

4、查看s3c2410.c文件,看看基本結構構成

static struct platform_driver s3c24xx_nand_driver = {   .probe   = s3c24xx_nand_probe,   .remove   = s3c24xx_nand_remove,   .suspend  = s3c24xx_nand_suspend,   .resume   = s3c24xx_nand_resume,   .id_table  = s3c24xx_driver_ids,   .driver   = {     .name  = "s3c24xx-nand",     .of_match_table = s3c24xx_nand_dt_ids,   }, };  module_platform_driver(s3c24xx_nand_driver); 

5、繼續分析s3c24xx_nand_probe函數

s3c2410_nand_init_chip(info, nmtd, sets); 

6、之所以從中摘出了s3c2410_nand_init_chip這個函數,是因為里面進行了函數注冊

類似的函數還有s3c2410_nand_update_chip函數

chip->write_buf  = s3c2410_nand_write_buf; chip->read_buf   = s3c2410_nand_read_buf; chip->select_chip = s3c2410_nand_select_chip; chip->chip_delay  = 50; nand_set_controller_data(chip, nmtd); chip->options    = set->options; chip->controller  = &info->controller;  switch (info->cpu_type) { case TYPE_S3C2410:   chip->IO_ADDR_W = regs + S3C2410_NFDATA;   info->sel_reg  = regs + S3C2410_NFCONF;   info->sel_bit  = S3C2410_NFCONF_nFCE;   chip->cmd_ctrl = s3c2410_nand_hwcontrol;   chip->dev_ready = s3c2410_nand_devready;   break;  case TYPE_S3C2440:   chip->IO_ADDR_W = regs + S3C2440_NFDATA;   info->sel_reg  = regs + S3C2440_NFCONT;   info->sel_bit  = S3C2440_NFCONT_nFCE;   chip->cmd_ctrl = s3c2440_nand_hwcontrol;   chip->dev_ready = s3c2440_nand_devready;   chip->read_buf = s3c2440_nand_read_buf;   chip->write_buf = s3c2440_nand_write_buf;   break;  case TYPE_S3C2412:   chip->IO_ADDR_W = regs + S3C2440_NFDATA;   info->sel_reg  = regs + S3C2440_NFCONT;   info->sel_bit  = S3C2412_NFCONT_nFCE0;   chip->cmd_ctrl = s3c2440_nand_hwcontrol;   chip->dev_ready = s3c2412_nand_devready;    if (readl(regs + S3C2410_NFCONF) & S3C2412_NFCONF_NANDBOOT)     dev_info(info->device, "System booted from NAND/n");    break; } 

7、抓住了函數接口,就找到了基本邏輯。

對于框架來說,它不關心你的代碼如何實現。只要你按照它的接口寫,就能讓上層正常獲得數據。platform、usb、pci這都是一種接口形式,具體實現還要按照各個具體功能模塊來實現才行。

8、為什么我們都用s3c芯片進行舉例

因為它用的場景最多,學習資料最全,對于新手來說,這會少很多麻煩。

9、這個驅動依賴的kernel版本是什么

這里最有的代碼都是按照最新4.16的版本進行分析的,大家可以直接查看這里的地址。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人在线视频福利| 91九色国产社区在线观看| 伊人久久精品视频| 青草成人免费视频| 91精品国产高清自在线| 国产午夜精品一区二区三区| 亚洲国产欧美日韩精品| 日本精品va在线观看| 日韩欧美国产黄色| 亚洲iv一区二区三区| 亚州av一区二区| 91久久久亚洲精品| 欧美性猛交xxxx富婆| 久久色免费在线视频| 中文字幕日本欧美| 国产欧美一区二区三区久久| 欧美激情精品在线| 久久精品电影一区二区| 在线成人激情视频| 欧美国产极速在线| 韩国v欧美v日本v亚洲| 91久久久久久久| 久久久女人电视剧免费播放下载| 亚洲tv在线观看| 成人免费淫片视频软件| 欧美成人免费va影院高清| 成人av资源在线播放| 日韩中文av在线| 青草青草久热精品视频在线网站| 超碰日本道色综合久久综合| 日韩有码在线观看| 91在线看www| 久久中文字幕在线| 国产欧美精品va在线观看| 日韩在线不卡视频| 日韩精品有码在线观看| 国产精品一香蕉国产线看观看| 青青青国产精品一区二区| 欧美日韩亚洲精品一区二区三区| 国产亚洲欧洲高清| 欧美日韩aaaa| 欧美激情一级二级| 日韩一区二区福利| 日韩美女视频在线观看| 久久精品视频在线观看| 欧美乱大交做爰xxxⅹ性3| 国产91露脸中文字幕在线| 欧美电影免费观看| 欧美性猛交xxxx黑人| 欧洲亚洲女同hd| 成人黄色av网站| 色偷偷88888欧美精品久久久| 91精品久久久久久久久| 欧美黑人巨大精品一区二区| 欧美在线精品免播放器视频| 欧美日韩亚洲91| 草民午夜欧美限制a级福利片| 日韩中文在线中文网在线观看| 在线观看国产精品淫| 欧美激情一二三| 久久亚洲精品一区| 九九九久久久久久| 久久久亚洲国产| 日韩麻豆第一页| 欧美在线www| 亚洲影院污污.| 中文字幕亚洲综合久久| 色老头一区二区三区在线观看| 日韩在线国产精品| 久久久国产精品x99av| 亚洲最大的免费| 播播国产欧美激情| 中文字幕日韩精品有码视频| 亚洲男人av电影| 国产亚洲欧洲黄色| 国产99在线|中文| 亚洲成人久久久久| 欧美精品18videos性欧美| 精品亚洲va在线va天堂资源站| 亚洲国产欧美一区| 成人国产精品免费视频| 91社影院在线观看| 青草青草久热精品视频在线观看| 国产精品成人av性教育| 欧美午夜宅男影院在线观看| 亚洲直播在线一区| 国产精品pans私拍| 欧美成人免费一级人片100| 性欧美长视频免费观看不卡| 午夜精品美女自拍福到在线| 亚洲人成网站色ww在线| 一区二区三区无码高清视频| 国产精品久久久久久久午夜| 亚洲国产精品久久久| 97精品欧美一区二区三区| 欧美大片va欧美在线播放| 国产91对白在线播放| 欧美成人在线网站| 国产在线精品成人一区二区三区| 亚洲精品一区中文字幕乱码| 黑人极品videos精品欧美裸| 亚洲2020天天堂在线观看| 成人天堂噜噜噜| 岛国av在线不卡| 欧美日韩国产综合新一区| 98午夜经典影视| 亚洲欧洲日本专区| 欧美成人精品三级在线观看| 91精品国产91久久久久久| 国产亚洲欧美日韩美女| 亚洲精品综合精品自拍| 国产精品亚洲欧美导航| 91亚洲人电影| 亚洲影院色在线观看免费| 亚洲免费伊人电影在线观看av| 欧美色视频日本高清在线观看| 日韩精品有码在线观看| 色樱桃影院亚洲精品影院| 欧美电影在线观看网站| 久久综合网hezyo| 国产精品嫩草影院一区二区| 神马国产精品影院av| 日韩av电影中文字幕| 久久人91精品久久久久久不卡| 亚洲欧美变态国产另类| 综合国产在线观看| 国产69精品久久久久9999| 91av在线免费观看视频| 国产精品嫩草视频| 欧美日韩成人在线观看| 国产精品视频男人的天堂| 午夜精品在线视频| 亚洲欧美在线播放| 俺去啦;欧美日韩| 欧美黑人巨大xxx极品| 综合国产在线视频| 成人有码视频在线播放| 国产精品色视频| 日本免费久久高清视频| 国产精品99久久久久久久久| 日韩精品在线免费播放| 午夜美女久久久久爽久久| 久久久亚洲国产| 亚洲欧美国产高清va在线播| 91精品国产自产91精品| 亚洲精品狠狠操| 国产91露脸中文字幕在线| 亚洲xxxx做受欧美| 日韩视频―中文字幕| 亚洲天堂视频在线观看| 一区二区欧美日韩视频| 久久久久久久97| 欧美激情视频播放| 国产一区二区三区在线看| 日韩在线观看免费全| 国产精品视频色| 亚洲色图日韩av| 国产精品福利片| 国产欧美精品一区二区| 欧美大片网站在线观看| 懂色av中文一区二区三区天美| 国语自产偷拍精品视频偷| 久久99视频免费| 精品夜色国产国偷在线|