《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 其他 > Linux設(shè)備驅(qū)動(dòng)程序架構(gòu)分析之MMC/SD(六)

Linux設(shè)備驅(qū)動(dòng)程序架構(gòu)分析之MMC/SD(六)

2015-04-29
關(guān)鍵詞: Mini2440 MMC/SD

一、s3cmci_ops分析

在上一篇文章中我們分析了Mini2440 MMC/SD驅(qū)動(dòng)的probe函數(shù)s3cmci_probe。在該函數(shù)中初始化了struct mmc_host指針變量mmc,其中,設(shè)置mmc->ops為s3cmci_ops,s3cmci_ops定義在drivers/mmc /host/s3cmci.c文件中:

捕獲.PNG

struct mmc_host是mmc core層與host層的接口,mmc_host.ops是控制host完成用戶請求的接口函數(shù)集,其類型是struct mmc_host_ops,該結(jié)構(gòu)體定義在include/linux/mmc/host.h文件中:

捕獲.PNG

捕獲.PNG

request函數(shù)用于處理用戶的請求。

set_ios函數(shù)用于設(shè)置SDI的控制參數(shù),如時(shí)鐘、總線寬度等等。

get_ro函數(shù)用于探測SD卡是否有寫保護(hù)。

get_cd函數(shù)用于探測卡是否已插入插槽。

enable_sdio_irq函數(shù)用于啟動(dòng)或禁用SDI中斷。

需要注意的是,為什么沒有對MMC/SD進(jìn)行讀寫的read和write函數(shù)呢?這是因?yàn)長inux塊設(shè)備的讀寫操作是通過request函數(shù)完成的。

那么對于Mini2440,它的s3cmci_ops中的成員函數(shù)在什么時(shí)候會(huì)被調(diào)用呢?舉例如下:

在drivers/mmc/core/core.c文件中:

捕獲.PNG

捕獲.PNG

可以看到255行,調(diào)用了host->ops->request函數(shù),即s3cmci_request函數(shù)。

再比如,在drivers/mmc/core/core.c文件中:

捕獲.PNG

可以看到,970行,調(diào)用了host->ops->set_ios函數(shù),即s3cmci_set_ios函數(shù)。

下面我們就來看一下s3cmci_ops的各個(gè)成員函數(shù)的實(shí)現(xiàn)。

s3cmci_get_ro函數(shù)定義在drivers/mmc/host/s3cmci.c文件中:

捕獲.PNG

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。