无法在 C 中 Linux 下将原始数据写入 SD 卡
Can't write raw data on SD card under Linux in C
我正尝试在 Linux Ubuntu 14.04 下将原始数据写入我的 SD 卡。
我需要这个因为我想写我自己的 "filesystem" 我可以在微控制器(基于 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 卡上写入原始数据,我将不胜感激。
在继续之前,请检查 card/adaptor 一侧是否有写保护开关并确保它已关闭(如果存在)。
我正尝试在 Linux Ubuntu 14.04 下将原始数据写入我的 SD 卡。
我需要这个因为我想写我自己的 "filesystem" 我可以在微控制器(基于 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 卡上写入原始数据,我将不胜感激。
在继续之前,请检查 card/adaptor 一侧是否有写保护开关并确保它已关闭(如果存在)。