简体   繁体   English

无法在C中的Linux下将原始数据写入SD卡

[英]Can't write raw data on SD card under Linux in C

I am trying to write raw data on my SD card under Linux Ubuntu 14.04. 我试图在Linux Ubuntu 14.04下将原始数据写入SD卡。

I need this cause I want to write my own "filesystem" from which I can easily read under microcontroller (arm based). 我需要这个原因,因为我想编写自己的“文件系统”,可以在微控制器(基于ARM)下轻松读取。

I am able to read data from SD card, but when I try to write some it gives me an error of: 我能够从SD卡读取数据,但是当我尝试写一些数据时,出现以下错误:

" Operation not permitted ". Operation not permitted ”。

This is the code I'm using: 这是我正在使用的代码:

#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;
}

As I said, I can open file in read/write mode and read data from it, but in these lines: 就像我说的那样,我可以以read/write模式打开文件并从中读取数据,但是在以下行中:

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

I get ret_val = -1 (which means error), and errno = 1 (which means " Operation not permitted"). 我得到ret_val = -1 (这意味着错误),而errno = 1 (这意味着“不允许操作”)。

I would be very grateful for any advice that would help me write raw data on my SD card. 对于能帮助我将原始数据写入SD卡的任何建议,我将不胜感激。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM