Я нахожусь на ZedBoard, и я пытаюсь писать на SD-карте. Я работаю над встроенной системой, и у меня нет операционной системы, я бегу безболезненно.FatFS f_write не работает
Я могу нормально читать с SD-карты, это не проблема.
Но когда я triy читать, у меня есть странное поведение:
- f_write возвращает FR_OK
- м.т. (байт написано) переменная правильно
- создается файл (я могу видеть его когда я читаю SD-карту с моего ПК)
Но когда я прочитал файл, он пуст.
Вот мой код:
void WriteFile(char const* fileName, char* buffer, size_t size)
{
FIL file;
FATFS fs;
UINT bw;
FRESULT fr;
f_mount(&fs, "", 0);
f_open(&file, fileName, FA_WRITE | FA_CREATE_ALWAYS);
fr = f_write(&file, buffer, size, &bw);
if (size != bw || fr != FR_OK)
PRINT(("Error in writing !\n"));
f_close(&file);
f_mount(NULL, "", 0);
}
И я вызываю метод так:
WriteFile("Hello.txt", "Hello World !", 13);
Любая идея, что я делаю не так?
FatFs делает не предоставлять низкоуровневые устройства ввода/вывода - вы должны предоставить это самим сторонним разработчикам (например, платному или чип-вендору), поэтому, возможно, это проблема, хотя трудно понять, как создать файл , Также FatFs можно настроить как файловую систему «только для чтения», но опять-таки файл был создан таким образом, что, похоже, это не так. В любом случае представляется вероятным, что проблема не на уровне кода, который вы представили, а скорее на уровне уровня конфигурации библиотеки, так как он стоит, вы вряд ли получите ответ «вот ваша проблема». – Clifford
У меня такая же проблема, как у Aymen, но когда я пытаюсь использовать f_write в текстовом файле, созданном на моем компьютере, я могу перезаписать содержимое этого файла. Но я не могу заставить его работать с пустым файлом, созданным с помощью f_open. – Frostbite
@Frostbite: Когда вы говорите, переписываете, вы имеете в виду добавить в него свои собственные данные, а не просто пустой файл? Интересно, я не пробовал это ... Но, прочитав ваше сообщение, я вспомнил, что должен обновить вопрос до ответа, потому что нашел для меня рабочее решение. – Aymen