Linux驅動之掛在SD卡

2021-09-23 23:31:39 字數 1767 閱讀 2556

講解之前我得說一下,現在有乙個新的技術在公司已經在用了,遠遠比你在學校學的東西要先進一點,我們燒寫u-boot程式一般是在flash上,然後由flash中的程式來引導linux核心,但是flash成本遠遠比sd卡要高,現在公司很多都用sd卡來代替flash,這個具體怎麼實現,還得自己去學習,我目前也不是很熟悉這個新的技術,就不寫出來了,等我熟悉以後再寫出來分享吧。

linux中對s3c2440 sd驅動已經支援的非常好。為了讓fl2440支援2g以上的sd卡,只需要完成幾個步驟即可。

linux2.6.30.9核心原始碼中s3c2440 cpu的sd卡控制器驅動對應的原始碼檔案為 s3cmci.c 存放在\drivers\mmc\host目錄下。 sd驅動的原始碼在平台裝置驅動架構,移植步驟如下:

這裡我得強調一下這個核心版本更新是很快的,所以些地方有可能是不一樣的,但是思路是不變得。

1.     在核心中註冊sd卡平台裝置。通過修改mach-smdk2440.c 檔案來實現。在mach-smdk2440.c檔案的smdk2440_devices陣列中增加s3c_device_sdi 平台裝置成員,如下所示:

static struct platform_device *smdk2440_devices __initdata = ;

s3c_device_sdi平台裝置定義在devs.c檔案中,如下所示:/* 這裡已經定義好了,就不需要我們在去定義了 */

struct platform_device s3c_device_sdi = ;

/* 第二部很重要了,這裡就得去分析你的sd卡函式介面,如果你用的核心預設的介面就不用修改了,一般也是預設的介面,只有極個別的開發板是用的其他介面,這個可以參考晶元手冊 */

2.     修改s3cmci.c, 設定檢測sd卡插入的中斷號,及配置響應的引腳為中斷功能。如下所示:修改s3cmci_probe函式,將

host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect);

修改為:

host->irq_cd = irq_eint18;

s3c2410_gpio_cfgpin(s3c2410_gpg10,s3c2410_gpg10_eint18);

設定檢測sd插入的中斷號為外部中斷18,這時是根據fl2440的原理圖來確定的。fl2440 sd卡介面的原理圖如下所示:

ncd pin腳是用於檢測sd卡插入的引腳,由圖可以看出ncd接的是eint18 號外部中斷。

3.     新增mmc核心配置選項

在核心的mmc配置選項中新增對s3c sd/mmc的支援,如下圖所示:

4.     在核心中取消所有分割槽型別

取消核心中的所有分割槽,如下所示:

進行以上修改後,重新編譯

zimage ,

這樣這個

zimage

就支援sd

卡驅動了。  

/* zimage很少使用了,一般都用u image,這裡還是可以實現動態載入驅動,不編譯進核心,這就根據自己的專案來確定了,為了節省成本,獲得高效率,沒用到的程式堅決不編譯進核心*/

/* 新核心版本已經不需要了 */

5.     建立sd卡分割槽裝置檔案節點,如下所示:

mknod  /dev/mmcblk0p1 b 179 1      

/* 手動建立裝置節點,也可以在程式寫給類,利用mdev機制自動建立裝置節點 */

6.掛載檔案系統,命令如下:

mount  /dev/mmcblk0p1 /mnt

這樣我們就可以使用sd卡了。

Linux下掛在SD卡

講解之前我得說一下,現在有乙個新的技術在公司已經在用了,遠遠比你在學校學的東西要先進一點,我們燒寫u boot程式一般是在flash上,然後由flash中的程式來引導linux核心,但是flash成本遠遠比sd卡要高,現在公司很多都用sd卡來代替flash,這個具體怎麼實現,還得自己去學習,我目前也...

SD卡的驅動

這幾天一直在調大容量sdhc卡的驅動,期間遇到一些問題,現在只調好一張4g容量的卡,8g容量的卡還不行。不得不感嘆sd卡協議的混亂和相容性之差。特別是命令響應這部分,看了很多文件,還是雲裡霧裡。期間參考正點原子的spi驅動sdhc的例子,那例子裡判斷cmd17的正確響應應該是0x00,然而在veri...

sd卡,驅動學習

linux sd卡驅動開發 一 sd 相關基礎概念 linux sd卡驅動開發 二 sd 卡驅動分析host篇 linux sd卡驅動開發 三 sd 卡驅動分析core篇 linux sd卡驅動開發 四 sd 控制器之真正的硬體操作 linux sd卡驅動開發 五 sd 卡驅動分析core補充篇 l...