講解之前我得說一下,現在有乙個新的技術在公司已經在用了,遠遠比你在學校學的東西要先進一點,我們燒寫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電平...