载入中...

| 载入中...'s blog

2007-7-21 17:30:00
S3C2410中SD卡驱动的移植
需要的源文件uploadfile-/2007-7/721853301.rar
1.         添加s3c2410mci..cs3c2410mci.hdrivers/mmc目录下,添加regs-sdi.h、mmc.hinclude/asm-arm/arch-s3c2410中。

2.         删除s3c2410mci.c中以下几句:

if(host->mrq->cmd->flags & MMC_RSP_CRC) {
host->mrq->cmd->error = MMC_ERR_BADCRC;
goto transfer_closed;
}

3.         arch/arm/mach-s3c2410/machsmdk2410.c platform结构中增加&s3c_device_sdi语句。
static struct platform_device *smdk2410_devices[] __initdata = {
 &s3c_device_usb,
 &s3c_device_lcd,
 &s3c_device_wdt,
 &s3c_device_i2c,
 &s3c_device_iis,
 &s3c_device_nand,
 &s3c_device_sdi,//add here
};
4.         修改drivers/mmc下的KconfigMakefile
在Kconfig中添加:
  menu "MMC/SD Card support"
config SD    //add here
     tristate "SD support"
     help
config MMC
 tristate "MMC support"
 help
   MMC is the "multi-media card" bus protocol.
   If you want MMC support, you should say Y here and also
   to the specific driver for your MMC interface.
在Makefile中添加:
obj-$(CONFIG_MMC_ARMMMCI) += mmci.o
obj-$(CONFIG_MMC_PXA)  += pxamci.o
obj-$(CONFIG_MMC_WBSD)  += wbsd.o
obj-$(CONFIG_SD)        +=s3c2410mci.o
     

5.         添加内核的支持。

 

通常的驱动还不支持热插拔,因此在内核启动前先将sd卡插上。移植成功后,在启动信息中会显示:

host->irq_cd=57

mmci-s3c2410: probe: mapped sdi_base=c4c80000 irq=37 irq_cd=57 dma=0.

mmci-s3c2410: initialisation done.

NET: Registered protocol family 1

NET: Registered protocol family 17

NET: Registered protocol family 15

mmc0: host does not support reading read-only switch. assuming write-enable.

mmcblk0: mmc0:cf99 S256R 244224KiB

进入内核后:

#cat proc/partitions

major minor  #blocks  name

  31     0         64 mtdblock0

  31     1       1984 mtdblock1

           31     2      30720 mtdblock2

  31     3      32768 mtdblock3

 254     0     244224 mmcblk0

 254     1     244172 mmcblk0p1

         #mount /dev/mmc/blk0/part1 /mnt

  可以在/mnt中看到sd卡中的内容。

   

  可能的问题,启动时会显示:

mmci-s3c2410: failed to request card detect interrupt.

s3c2410-sdi: probe of s3c2410-sdi failed with error -2

这是由于中断冲突引起的。通常的驱动根据Sumsung官方开发板的设置会把s3c2410EINT18脚连接到sd卡的cd脚上,用于插上sd卡后的中断检测。如果EINT18被用于其他的中断的话,sd卡的驱动将申请不到相应的中断。为此,需要将s3c2410mci.cs3c2410_mmc_defplatgpio_detect变量由gpg10改为自己设计中的cd脚,如果没有连接该脚的话,可以设为一个闲置的中断管脚。

By 流浪的精灵 | 阅读全文 | 回复(5) | 引用通告 | 编辑
  • 标签:S3C2410 SD 2.6内核 
  • 2008-6-14 22:59:00
    Re:S3C2410中SD卡驱动的移植
    访客Hlc5FS(游客)我按照你的方法,似乎还是不行.......
    我用的2.6.14,不知道是不是我的驱动下的有问题,你可以发个到我邮箱吗,谢谢。
    By 访客Hlc5FS(游客) | 个人主页 | 引用 | 返回 | 删除 | 回复
    2008-4-29 14:25:00
    Re:S3C2410中SD卡驱动的移植
    访客138Lcp(游客)可以最大支持多少G
    By 访客138Lcp(游客) | 个人主页 | 引用 | 返回 | 删除 | 回复
    2008-3-1 4:30:00
    Re:S3C2410中SD卡驱动的移植
    访客tXOa61(游客)wait_for_completion(&host->complete_request);
    等待中断~~
    但是sdi中断从来不发生 请问您知道为什么吗
    By 访客tXOa61(游客) | 个人主页 | 引用 | 返回 | 删除 | 回复
    2007-9-4 9:58:00
    Re:S3C2410中SD卡驱动的移植
    bairg521(游客)好文章!学习了。
    问一下,是原创吗?
    By bairg521(游客) | 个人主页 | 引用 | 返回 | 删除 | 回复
    2007-8-9 11:19:00
    Re:S3C2410中SD卡驱动的移植
    Joey(游客)请问您的驱动是基于2.6的吗?有没有2.4的?
    我的内核都还没有
    arch/arm/mach-s3c2410/mach-smdk2410.c,drivers/mmc下的Kconfig和Makefile
    By Joey(游客) | 个人主页 | 引用 | 返回 | 删除 | 回复
    发表评论:
    载入中...

    日历

    载入中...

    公告

    最新文章

    载入中...

    文章分类

    载入中...

    MY Favorite Blogs

    最近评论

    载入中...

    最近留言

    载入中...

    信息

    载入中...

    登陆

    载入中...