Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53891
  • 博文数量: 24
  • 博客积分: 1480
  • 博客等级: 上尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-12 16:20
文章分类

全部博文(24)

文章存档

2010年(24)

我的朋友

分类: 嵌入式

2010-06-21 16:08:37

SD卡移植

Secure Digital通常缩写为SD,作为一种存储卡,全名应该是Secure Digital Memory Card,中文翻译为安全数码卡或直接称为SD卡,是一种的标准,它被广泛地于便携式设备上使用,例如PDA)和等。

SD卡共支持三种传输模式:SPI模式(独立序列输入和序列输出),1SD模式(独立指令和数据通道,独有的传输格式), 4SD模式(使用额外的针脚以及某些重新设置的针脚。支持四位宽的并行传输)

低速卡的时钟频率为0~400KHz,支持模式有SPI1SD传输模式。全速卡的时钟频率为0~25MHz,支持模式有SPI1SD传输模式和4SD传输模式。

1.       从网站下载到内核目录

2.       Patch –p1 < s3c_mci.patch

3.       对于patch生成的s3cmci.c还要加入detect脚位,我选择的是S3C2410_GPG8。设定:
static struct s3c24xx_mci_pdata s3cmci_def_pdata = {
.do_dma = 0,
.gpio_detect = S3C2410_GPG10,
.set_power = NULL,
.ocr_avail = MMC_VDD_32_33,
};

4.       make menuconfig,选择MMC/SD ,选择语言CP437,ISO 8859-1

File systems--> 
                Native language support--> 
                   NLS ISO 8859-1 (Latin 1; Western European Languages)

5.       因为patch是针对内核版本2.6.24.3的,在移植到2.6.26.5中,由于它们的dma.c s3c2410_dma_request函数返回值不一样,内核2.6.24.3中的返回值为0,而2.6.26.5中的返回值是chan->number | DMACH_LOW_LEVEL,所以要修改/driver/mmc/host/s3cmci.c1244行,改成if (s3c2410_dma_request(host->dma, &s3cmci_dma_client, NULL)==0)

   在arch/arm/mach-s3c2410/mach-smdk2410.c

   static struct platform_device *smdk2410_devices[] __initdata 中加入

   &s3c_device_sdi,

6.成功后可见加载信息

Freeing init memory: 136K

s3c2410-sdi s3c2410-sdi: running at 0kHz (requested: 0kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 99kHz).

s3c2410-sdi s3c2410-sdi: running at 12675kHz (requested: 25000kHz).

s3c2410-sdi s3c2410-sdi: running at 12675kHz (requested: 25000kHz).

mmc0: new SD card at address dfc0

mmcblk0: mmc0:dfc0 SR01G 967680KiB

mmcblk0: p1

init starting: Ok!

7.验证:

cat /proc/partitions

显示为:

major minor #blocks name

31 0 384 mtdblock0

31 1 2048 mtdblock1

31 2 63040 mtdblock2

179 0 62080 mmcblk0

179 1 62060 mmcblk0p1

8.sd卡加载

mount -t vfat /dev/mmcblk0p1 /mnt/temp

阅读(692) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~