精品麻豆一区二区三区乱码-人妻在线免费观看一区二区-欧美日韩在线观看精品99-美女极度色诱视频国产免费

 找回密碼
 請用中文注冊用戶!

QQ登錄

只需一步,快速開始

查看: 1859|回復(fù): 0

Linux中SD、MMC設(shè)備驅(qū)動流程

[復(fù)制鏈接]
1#

注冊登錄后可以在線提問,行業(yè)從業(yè)者將幫助您解答!

您需要 登錄 才可以下載或查看,沒有賬號?請用中文注冊用戶!

×
4.1.MMC子系統(tǒng)的基本框架
4.1.1.MMC子系統(tǒng)的代碼在kernel/driver/MMC下面,目前MMC子系統(tǒng)支持一些形式的記憶卡:SD,SDIO,MMC
4.1.2.HOST:針對不同主機的驅(qū)動程序,這一部分需要根據(jù)自己的特定平臺來完成。
4.1.3.CORE:這是整個MMC的核心層,這部分完成了不同協(xié)議和規(guī)范的實現(xiàn),并且為HOST層的驅(qū)動提供接口函數(shù)。
4.1.4.CARD:因為這些記憶卡都是塊設(shè)備,當然需要提供塊設(shè)備的驅(qū)動程序,這部分就是實現(xiàn)了將SD卡如何實現(xiàn)為塊設(shè)備的。

4.1.5.各層之間的關(guān)系
4.2.重要的結(jié)構(gòu)體
4.2.1. struct mmc_host 用來描述卡控制器位kernel/include/linux/mmc/host.h下面。
4.2.2.struct mmc_card 用來描述卡位于kernel/include/linux/mmc/card.h下面
4.2.3.struct mmc_driver 用來描述mmc卡驅(qū)動在kernel/include/linux/mmc/card.h下面。
4.2.4.struct mmc_host_ops用來描述卡控制器操作集,用于從主機控制器向core層注冊操作函數(shù),從而將core層與具體的主機控制器隔離。也就是說core要操作主機控制器,就是這個ops當中給的函數(shù)指針操作,不能直接調(diào)用具體主控制器的函數(shù)。
位于kernel/include/linux/mmc/host.h下面。
2.5.struct mmc_ios用于描述了控制器對卡的I/O狀態(tài)。位于kernel/include/linux/mmc/host.h下面。
4.2.6.struct mmc_request用于描述讀寫MMC卡的請求,它包括命令,數(shù)據(jù)以及請求完成后的回調(diào)函數(shù)。位于kernel/include/linux/mmc/core.h中。
4.2.7.struct mmc_queueMMC的請求隊列結(jié)構(gòu),它封裝了通用請求隊列結(jié)構(gòu),加入了MMC卡相關(guān)結(jié)構(gòu)。位于kernel/drivers/mmc/card/queue.h中。
4.2.8.struct mmc_data描述了MMC卡讀寫的數(shù)據(jù)相關(guān)信息,如:請求,操作命令,數(shù)據(jù)以及狀態(tài)等。位于kernel/include/linux/mmc/core.h中。
4.2.9.struct mmc_command描述了MMC卡操作相關(guān)命令及數(shù)據(jù),狀態(tài)信息等。位于kernel/include/linux/mmc/core.h中。
4.3.host,core以及card之間的關(guān)聯(lián)和處理流程
4.3.1總體的流程如下圖所示
4.3.2.數(shù)據(jù).命令的處理流程在代碼分析那里會仔細分析
4.4:核心任務(wù)
MMC/SD卡的驅(qū)動整個構(gòu)架由三個文件組成,其實一共就做了兩件事件:
1).卡的檢測。
2).卡數(shù)據(jù)的讀取。
4.4.1.卡的檢測中涉及到的函數(shù)
tcc_mmc_probe(host/tcc_sdhc.c)
mmc_alloc_host(core/core.c)
mmc_rescan(core/core.c)
mmc_attach_mmc(core/mmc.c)
mmc_init_card(core/mmc.c)
mmc_add_card(core/bus.c)
device_add
mmc_bus_match(core/bus.c)
mmc_bus_probe(core/bus.c) mmc_blk_probe(card/block.c)
alloc_disk/add_disk
4.4.2.卡中數(shù)據(jù)讀寫涉及到的函數(shù)
mmc_blk_issue_rq(card/block.c)
mmc_wait_for_req(core/core.c)
mmc_start_request(core/core.c)
host->ops->requset(host,mrq)
//tcc_sdhc.c中的tcc_mmc_request
深圳雷龍發(fā)展有限公司從事NANDFLASH行業(yè)10+年.目前代理ATO Solution小容量SLC NAND,SPI NAND,MCP等。想了解更多請咨詢扣二八伍二扒二陸扒六八;電話一三陸玖一玖八二一零柒

本版積分規(guī)則

QQ|返回首頁|有問題掃碼關(guān)注公眾號|LED控制卡 ( 魯ICP備18053106號 魯公安網(wǎng)備案號37170202666047 ) keywords:LED顯示屏 LED控制卡 LED顯示屏配件 麒麟電子

GMT+8, 2025-9-18 20:01

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復(fù) 返回頂部 返回列表