无法在C语言下在Linux下的SD卡上写入原始数据

时间:2015-03-27 01:00:02

标签: c linux file sd-card

我正在尝试在Linux Ubuntu 14.04下的SD卡上写入原始数据。

我需要这个原因我想编写自己的“文件系统”,我可以在微控制器(基于arm)下轻松阅读。

我可以从SD卡读取数据,但是当我尝试写一些时,它会给我一个错误:

Operation not permitted”。

这是我正在使用的代码:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>      /* open */
#include <unistd.h>     /* exit */
#include <sys/ioctl.h>      /* ioctl */
#include <errno.h>
#define DEVICE "/dev/sdb1" /* SD card */

int main()
{
   int file_desc, ret_val;
   char msg[512];
   msg[0] = 'H';
   char answer[512];
   file_desc = open(DEVICE, O_RDWR);
   if(file_desc < 0)
      printf("failed to open the device \n");

   ret_val = write(file_desc, msg, 512);
   fsync(file_desc);
   printf("%d\n", ret_val);
   printf("%d\n", errno);
   read(file_desc, answer, 512);

   printf("message read is %s\n", answer);
   close(file_desc);
   return 0;
}

正如我所说,我可以在read/write模式下打开文件并从中读取数据,但是在这些行中:

ret_val = write(file_desc, msg, 512);
fsync(file_desc);
printf("%d\n", ret_val);
printf("%d\n", errno);

我得到ret_val = -1(表示错误)和errno = 1(表示“不允许操作”)。

我会非常感谢任何有助于我在SD卡上写入原始数据的建议。

1 个答案:

答案 0 :(得分:2)

在进一步操作之前,请检查卡/适配器侧面是否有写保护开关,并确保其已关闭(如果存在)。