Chinaunix首页 | 论坛 | 博客
  • 博客访问: 558799
  • 博文数量: 105
  • 博客积分: 3274
  • 博客等级: 中校
  • 技术积分: 1161
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 12:14
文章分类

全部博文(105)

文章存档

2011年(1)

2010年(104)

分类: LINUX

2010-04-08 22:46:45

 
0
把SPI模式的SD卡协议简单的看了下,知道SD卡的初始化过程,读写数据是怎么回事了。

然后跟踪SD卡的初始化,发现SD卡复位,进入IDLE模式都没问题,而问题是出在获取CID上,程序如下:
static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
        struct mmc_card *oldcard)
{
                省略
        ----------------

        err = mmc_send_if_cond(host, ocr);
        if (!err)
                ocr |= 1 << 30;

        err = mmc_send_app_op_cond(host, ocr, NULL);
        if (err)
                goto err;

        /*
         * For SPI, enable CRC as appropriate.
         */
        if (mmc_host_is_spi(host)) {
                //err = mmc_spi_set_crc(host, use_spi_crc);
                err = mmc_spi_set_crc(host, 0);  //zhh

                if (err)
                        goto err;
        }

        /*
         * Fetch CID from card.
         */
        if (mmc_host_is_spi(host))
    {      
        err = mmc_send_cid(host, cid);      
    }               
        else
                err = mmc_all_send_cid(host, cid);
        if (err)
                goto err;
-----------------------------
省略               
}
于是猜想会不会是spi加了ECC的原因,网上有位高手说SPI模式的SD卡加ECC是自讨苦吃,于是我把ECC去掉了,程序上面红色部分。

然后就成功了。

查看dev是179 0
然后mknod
试了下,OK。
 
以上是以前记录的SD卡驱动。
今天换了一张SD卡,就mount不上了,如下
# mount -t vfat /dev/sd_spi /mnt/sdcard
mount: mounting /dev/sd_spi on /mnt/sdcard failed: Invalid argument
看下分区
# cat /proc/partitions
major minor  #blocks  name
 
  31     0       2048 mtdblock0
  31     1       4096 mtdblock1
  31     2       4096 mtdblock2
  31     3       8192 mtdblock3
  31     4       8192 mtdblock4
  31     5       4096 mtdblock5
  31     6     231424 mtdblock6
 179     0     492544 mmcblk0
 179     1     492512 mmcblk0p1
#
那么SD卡驱动加载肯定没问题了。
发现
mknod /dev/sd_spi b 179 1
就可以了,
以前用的
mknod /dev/sd_spi b 179 0
 
但是以前的卡这样也可以的。
理论上来说,的确应该用mknod /dev/sd_spi b 179 1
 
修改后,2张SD卡都能正常使用,明天再多找几张试试。
 
 
 
 
 
阅读(4534) | 评论(0) | 转发(0) |
0

上一篇:近期安排

下一篇:select用法详解

给主人留下些什么吧!~~