fl2440添加SD卡驅動
linux中對s3c2440的驅動已經完善得比較好,如果需要使用相關驅動,我們只需要在make menuconfig中選上相應的配置選項,並且稍稍修改內核源碼就可以使用相關驅動。SD卡的驅動也不例外
make menuconfig 選項
Device Drivers --->
<*> MMC/SD/SDIO card support --->
<*> MMC block device driver
[*] Use bounce buffer for simple hosts
<*> SDIO UART/GPS class support
<*> Secure Digital Host Controller Interface support
<*> MMC/SD/SDIO over SPI
<*> Samsung S3C SD/MMC Card Interface support
修改內核源碼
mach-smdk2440.c
在 kernel/arch/arm/mach-s3c2440/mach-smdk2440.c文件中添加SD卡平臺設備,如下所示:
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9000,
/* 添加下SD卡 的設備成員 */
&s3c_device_sdi,/* suport SD card device,Add by liwannneg 2017-4-16 12:38:35 */
};
s3cmci.c
在./drivers/mmc/host/s3cmci.c文件中修改s3cmci_probe函數,設置檢測SD卡插入的中斷號,及配置響應的引腳爲中斷功能。如下所示:
static int __devinit s3cmci_probe(struct platform_device *pdev)
{
…
// host->irq_cd = gpio_to_irq(host->pdata->gpio_detect);
host->irq_cd = IRQ_EINT18;//sd卡中斷號爲18
s3c2410_gpio_cfgpin(S3C2410_GPG(10),S3C2410_GPG10_EINT18);
…
}
根據FL2440的原理圖,我們將SD卡插入的中斷號設置爲18,其原理圖如下所示:
NCD PIN腳是用於檢測SD卡插入的引腳,由圖可以看出 NCD接的是 EINT18 號外部中斷。
重新編譯內核
完成以上修改之後,重新編譯內核並燒錄到開發板,在關機狀態下插入SD卡之後開機。
可以在dev目錄下看到sd卡的設備文件
現在列查看sd卡里面的內容