将cmd发送到SD卡但在Linux上发生错误22

时间:2016-08-03 06:07:49

标签: c++ c linux ioctl

我引用了一篇文章:

Any way to send commands to SD card from Linux userspace?

并使用mmc-util的源将cmd发送到SD卡,有代码:

int cmd_test(int fd, __u8 *ext_csd)
{
    int ret = 0;
    struct mmc_ioc_cmd idata;
    memset(&idata, 0, sizeof(idata));
    memset(ext_csd, 0, sizeof(__u8) * 512);
    idata.write_flag = 0;
    idata.opcode = 17;
    idata.arg = 0;
    idata.flags = MMC_DATA_READ;
    idata.blksz = 512;
    idata.blocks = 1;
    mmc_ioc_cmd_set_data(idata, ext_csd);

    ret = ioctl(fd, MMC_IOC_CMD, &idata);
    if (ret)
        perror("ioctl");

    return ret;
}

最后收到错误22:无效的参数。我尝试了另外的操作码,如10,56 ......,它最终导致同样的错误。 SD卡通过USB读卡器连接,是否会导致错误?或者有参数设置错误?

感谢。

0 个答案:

没有答案