Linux下掛在SD卡

2021-07-05 11:18:28 字數 2158 閱讀 3272

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

linux中對s3c2440 sd驅動已經支援的非常好。為了讓s3c2440支援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;   /* 我開發板是fl2440 */

s3c2410_gpio_cfgpin(s3c2410_gpg10,s3c2410_gpg10_eint18);

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

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

3.     新增mmc核心配置選項

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

device drivers  --->   

mmc/sd/sdio card support  ---> 

mmc block device driver 

[*]     use bounce buffer for ****** hosts 

secure digital host controller inte***ce support 

sdhci support on samsung s3c soc 

[*]   dma support on s3c sdhci 

samsung s3c sd/mmc card inte***ce support  

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

zimage ,

這樣這個

zimage

就支援sd

卡驅動了。  

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

掛載檔案系統,命令如下:  /* 可以下個指令碼自動掛載, */

mount  /dev/mmcblk0p1 /tmp     這樣我們就可以使用sd卡了。

格式化sd卡: mkdosfs  /dev/mmcblk0p1

sd卡分割槽:fdisk /dev/mmcblk0

我們掛在的時候可以指定內容顯示的格式:

mount -t vfat /dev/sda1       /mnt      /* gbk碼,短3字元顯示 */

mount -t msdos /dev/sda1   /mnt    /* utf-8 碼,長8字元顯示  */

Linux驅動之掛在SD卡

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

Linux下的SD卡分割槽 解決sd卡分割槽損壞

首先在windows下面使用hp格式化工具格式化sd卡,然後將sd卡接入linux作業系統。識別sd卡後,開啟終端。檢視sd卡是否已經掛載,如果已經掛載需要先解除安裝再操作。可以通過mount來進行檢視。輸入mount,我們可以看到我們的碟符為sdb。在終端輸入umount media fat32將...

SD卡SPI模式下

sd卡學習 sdio和spi模式 sd卡的操作模式 sd卡模式 sdio spi模式 預設為sd模式 其中sd卡模式的訊號線有 clk cmd dat0 dat3,6根線。spi模式的訊號線有 cs clk miso dataout mosi datain 4根線。sd卡只能使用3.3v的i o電平...