Chinaunix首页 | 论坛 | 博客
  • 博客访问: 974371
  • 博文数量: 192
  • 博客积分: 3070
  • 博客等级: 中校
  • 技术积分: 1861
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-27 23:44
个人简介

Start Linux Leave Linux a while Back to Linux

文章分类

全部博文(192)

文章存档

2023年(18)

2022年(11)

2021年(8)

2020年(14)

2019年(7)

2018年(13)

2017年(16)

2016年(4)

2012年(2)

2011年(13)

2010年(26)

2009年(13)

2008年(27)

2007年(20)

我的朋友

分类: LINUX

2008-04-09 14:44:19

linux-2.6.20.x 以上版本对SD卡有较好支持,可以支持1.0及2.0 SD卡的协议,所以linux2.6.2x 以上的版本都支持大容量(>=4G)的SD卡,而linux-2.6.1x 对SD卡的支持只能到 2G,大于2G的SD就无法识别.
发送CMD8,检查卡是否SD2.0。SD1.1是不支持CMD8的,因此在SD2.0 Spec中提出了先发送CMD8,如响应为无效命令,则卡为SD1.1,否则就是SD2.0(请参考SD2.0 Spec)。CMD8在SD1.1上是没有的.
在 mmc.c 文件中主要加入了这两个函数:
  mmc_read_switch_caps(host);
  mmc_process_ext_csds(host);
在读大容量的SD卡时用到
将linux-2.6.2x 以上版本SD卡的驱动植入 linux-2.6.18中,插入SD卡,检测容量及一些相关信息没有问题,但mount SD卡时有错误,提示 kernel debug error driver/mmc/mmc.c 111!
  BUG_ON(mrq->data->blksz > host->max_blk_size);
  BUG_ON(mrq->data->blocks > host->max_blk_count);
  BUG_ON(mrq->data->blocks * mrq->data->blksz > host->max_req_size);
屏蔽掉上面3行语句.问题解决!
但第二次插入SD卡时就没有任何反应!肯定是 remove 的时候出了问题,将 mmc_block.c文件中mmc_blk_remove 函数中的
  mmc_cleanup_queue(&md->queue);
去掉,加入以下一行:
  md->disk->queue = NULL;
SD卡的问题解决
 
 
 
 
 
阅读(4530) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

hrz20082008-08-04 13:44:48

怎么不回复

hrz20082008-05-01 19:43:51

朋友 您好 我 还是不懂 请您说详细点

chinaunix网友2008-04-26 11:13:01

内核本身的驱动都可以支持2G的SD卡,将一些CD脚,WP脚设置一下就可以了

hrz20082008-04-25 15:17:01

我的qq是805396213 谢谢

hrz20082008-04-25 15:05:37

朋友 您好 我刚找了个工作 真不容易哈 我们公司让我开发sd卡驱动 我的内核是2.6.11.1 让我内核至少支持2G 应该怎么做 请指点 谢谢