日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析

發(fā)布時間:2025/3/20 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

隨著越來越多的平臺支持從Nand Flash 中啟動,掌握Nand Flash 的驅(qū)動編寫有著重要的現(xiàn)實意義,由于內(nèi)核已經(jīng)完成了大部分的工作,實際工作中大部分工程師對Nand Flash 驅(qū)動只是簡單的修改。

下面分析一下Nand Flash 的代碼流程:

學(xué)習(xí)Nand Flash 之前,需要對塊設(shè)備中下面2點有個認(rèn)識:

1, gendisk: 描述塊設(shè)備實體(一整個Nand Flash 芯片)的結(jié)構(gòu)體,整個塊設(shè)備的注冊過程都是圍繞gendisk 來開展的;

2, add_disk(): 將一個分區(qū)信息(如:/dev/mtdblock3)注冊到內(nèi)核列表中

下面分析具體的驅(qū)動:

1, s3c2410 nandflash 控制器初始化步驟

s3c2410_nand_init(&s3c2410_nand_driver)

->driver_register->bus_add_driver()->driver_attach->bus_for_each_dev(_driver_attach)->driver_probe_device()->dev->probe()? /*最后這個函數(shù)實質(zhì)是 s3c2410_nand_probe() */

->s3c2410_nand_probe()

->s3c24xx_nand_probe()

->s3c2410_nand_inithw()?? /* 初始化nandflash 控制器 */

->s3c2410_nand_init_chip()? /* 初始化s3c2410 nandflash 驅(qū)動最底層的訪問控制函數(shù) */

->chip->write_buf = s3c2410_nand_write_buf;

->chip->read_buf = s3c2410_nand_read_buf;

->chip->select_chip = s3c2410_nand_select_chip;

->chip->cmd_ctrl = s3c2410_nand_hwcontrol()

->nand_scan()

->s3c2410_nand_add_partition()

->add_mtd_device()

將nandflash 的一個分區(qū)注冊成一個塊設(shè)備,并通過IO請求來訪問的步驟: /*塊設(shè)備驅(qū)動程序的注冊過程*/

module_init(init_mtdblock)

->init_mtdblock()

->register_mtd_blktrans(&mtdblock_tr)

->register_blkdev()? /* 注冊為塊設(shè)備 */

->blk_init_queue()?? /* IO請求隊列初始化 */

->kernel_thread(mtd_blktrans_thread) /* 塊設(shè)備(nandflash)讀寫訪問io請求處理線程 */

->tr->add_mtd()

mtdblock_add_mtd()

->add_mtd_blktrans_dev()

->alloc_disk()

->add_disk()?? /* 初始化一個gendisk 結(jié)構(gòu)體并注冊成一個disk */

->blk_register_region()

->register_disk()

->blk_register_queue()

1, nandflash io 請求處理線程mtd_blktrans_thread()等在一個等待隊列上

mtd_blktrans_thread()

->DECLARE_WAITQUEUE(wait,current);

->elv_next_request()? /* 檢查有沒有IO請求 */

->add_wait_queue(&tr->blkcore_priv->thread_wq)? /* 等在等待隊列上 */

->set_current_state(TASK_INTERRUPTIBLE)

->schedule();?? /* 讓出cpu使用權(quán) */

->??? /* 等待,直到有IO請求到來被喚醒 */

->do_blktrans_request()

->blk_fs_request();

->???/* 檢查訪問的偏移量不能大于整個nandflash 的容量 */

->?? /* 假設(shè)為讀訪問: */

->tr->readsect()

mtdblock_readsect()?? /* mtd_block.c */

->do_cached_read()??? /* mtd_block.c */

->mtd->read()

nand_read()?? /* nand_base.c */

->nand_do_read_ops()

->nand_read_page_raw()

->s3c2410_nand_read_buf()? /* 通過s3c2410 nandflash控制器發(fā)命令讀取nandflash 內(nèi)容*/??//s3c2410.c

->? /* 假設(shè)為寫訪問 */

->tr->writesect()

mtdblock_writesect()

->end_request()

2, 當(dāng)IO請求來時,喚醒線程 mtd_blktrans_thread()

mtd_blktrans_request()

->wake_up(&tr->blkcore_priv->thread_wq)

3, nandflash IO請求處理線程mtd_blktrans_thread()開始處理IO請求

->do_blktrans_request()

->/* 見上 */

從上面的代碼流程可見,Nand Flash 驅(qū)動作為一個塊設(shè)備的典型案例,為位于MTD的下層,其數(shù)據(jù)的讀寫通過mtd_blktrans_thread內(nèi)核線程來處理IO請求。

來源:oschina

鏈接:https://my.oschina.net/u/51715/blog/57930

總結(jié)

以上是生活随笔為你收集整理的linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩极品视频在线观看 | 四虎黄色网址 | 9999久久久久| 青青草社区 | 911国产视频 | 亚洲精品久久久久久久久久久 | 美女黄色小视频 | 日韩在线观看一区 | 超碰97在线资源站 | 绿帽在线 | www.中文字幕.com | 淫语对白 | 国产高清sp| 成年人视频在线看 | 久久久999 | 欧美天堂一区 | 性一交一乱一色一视频麻豆 | 国产精品日韩欧美 | 久久午夜精品人妻一区二区三区 | 日本久操| 免费看黄色a级片 | 少妇天天干 | 蜜臀av色欲a片无码精品一区 | 精品一区二区三区在线观看视频 | 国产在线a视频 | 国产chinese男男网站大全 | 日本在线中文 | 日韩成人在线观看 | 波多野结衣一区二区三区中文字幕 | 激情高潮呻吟抽搐喷水 | 日日夜夜噜噜噜 | 欧美色图一区二区 | 亚洲图片视频小说 | 欧美成人免费在线观看视频 | 两口子交换真实刺激高潮 | 国产乱码精品一区二区三区亚洲人 | 国产视频123区 | 亚洲视频在线一区 | 国产精品.xx视频.xxtv | 成人福利视频在线 | 国内性爱视频 | 欧美视频一二三 | av不卡免费| 久久午夜鲁丝 | 精品国产乱码久久久久久浪潮 | 国产三级短视频 | 国外成人性视频免费 | 欧美成人精品欧美一级 | 国产911在线观看 | 日韩成人高清视频在线观看 | 男女啪啪免费 | 久久成人免费 | 雨宫琴音一区二区三区 | 亚洲精品天堂在线 | 中文一区二区在线 | 亚洲成人一区在线观看 | 一级黄色免费大片 | 在线视频一区二区三区 | 欧美成人国产精品一区二区 | 日韩在线 | 亚洲精品一区二区三区不卡 | 欧美高清视频一区二区三区 | 日韩电影网站 | 美女露胸软件 | 日韩一区二区三区视频 | av青草| 无码精品人妻一区二区三区漫画 | 色香蕉av| 国产美女www爽爽爽 www.国产毛片 | 黄色刺激视频 | 人人妻人人澡人人爽久久av | 理论片在线观看理伦片 | 国产黄色一区二区 | 天天透天天操 | 日本一本久草 | 国产精品久久久久久久久久久久久 | 91性 | 亚洲一区二区三区婷婷 | 极品av在线 | 国产91精品ai换脸 | 伊人色区 | 黄色午夜视频 | 双乳被四个男人吃奶h文 | av片在线免费观看 | 揄拍自拍 | 婷婷综合一区 | 成人精品视频一区二区 | 久久久久久久影院 | 日本一区二区久久 | 玖草在线观看 | 成人h动漫精品一区二区无码 | 亚洲av无码一区二区三区在线观看 | 欧洲美女与动交ccoo | 色大师av一区二区三区 | 视频在线观看一区二区 | 毛片在线视频观看 | 成人三级在线播放 | 欧美一区亚洲一区 | 天天爽夜夜春 |