免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sourxsunny
打印 上一主题 下一主题

mmc问题,挂载写入文件后,不能再挂载 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-02-18 11:09 |只看该作者
回复 10# Godbach


    是不是写的时候把某个register锁住了,然后热插拔的时候写不进去报错?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
12 [报告]
发表于 2011-02-18 11:20 |只看该作者
回复 11# sourxsunny
我回帖中都给你建议过两次了,既然驱动也是你们自己实现的,那你和实现驱动的同事一起定位问题会更高效。
别人的回复,只能靠猜测和经验,而你们完全可以进行代码级调试。

论坛徽章:
0
13 [报告]
发表于 2011-02-18 11:21 |只看该作者
回复 12# Godbach


    好的 谢谢

论坛徽章:
0
14 [报告]
发表于 2011-02-18 18:43 |只看该作者
回复 12# Godbach


    我们在调试的过程中发现,如果写完数据后等两分钟左右,mmc_debug会打出一些信息,然后再热插拔就没事。是它有命令还在执行?

论坛徽章:
0
15 [报告]
发表于 2011-02-18 18:47 |只看该作者
回复 3# scopengl


    我们在调试的过程中发现,如果写完数据后等两分钟左右,mmc_debug会打出一些信息,然后再热插拔就没事。是它有命令还在执行?

论坛徽章:
0
16 [报告]
发表于 2011-02-19 11:13 |只看该作者
1. 挂载跟你是否写入东西无法,那是属于cd的中断处理,然后交给framework去mount。所以就算你写入出错,对于下一次的挂载也没有影响。
2.首先保证你写入的数据已经写入card中,然后再removed。

论坛徽章:
0
17 [报告]
发表于 2011-02-20 12:03 |只看该作者
回复 16# chuck_huang


    是写进去了。

论坛徽章:
0
18 [报告]
发表于 2011-02-21 22:46 |只看该作者
没做umount就拔了吧?
error -110,timeout,查驱动去。

论坛徽章:
0
19 [报告]
发表于 2011-02-22 12:26 |只看该作者
回复 18# BENNYSNAKE


    static irqreturn_t mxcmci_gpio_irq(int irq, void *devid)
{
        struct mxcmci_host *host = devid;
        int card_gpio_status = host->plat_data->status(host->mmc->parent);

        pr_debug("%s: MMC%d status=%d %s\n", DRIVER_NAME, host->id,
                 card_gpio_status, card_gpio_status ? "removed" : "inserted");

        if (card_gpio_status == host->plat_data->card_inserted_state) {
                mmc_detect_change(host->mmc, msecs_to_jiffies(100));
        } else {
                mxcmci_cmd_done(host, STATUS_TIME_OUT_RESP);
                mmc_detect_change(host->mmc, msecs_to_jiffies(50));
        }

        do {
                card_gpio_status = host->plat_data->status(host->mmc->parent);
                if (card_gpio_status) {
                        set_irq_type(host->detect_irq, IRQT_FALLING);
                } else {
                        set_irq_type(host->detect_irq, IRQT_RISING);
                }
        } while (card_gpio_status !=
                 host->plat_data->status(host->mmc->parent));

        return IRQ_HANDLED;
}



我源代码没有改过,写进去内容之后,一段时间会打错一些信息,然后就可以正常插拔了.

论坛徽章:
0
20 [报告]
发表于 2011-02-22 12:27 |只看该作者
回复 18# BENNYSNAKE


    怎样在代码中实现umount?我想就直接拔出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP