Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: KEIL Flash-FS в применении к SPI/I2C памяти.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
KnightIgor
Привет, мужики, а также милые дамы.

Имеем:
- KEIL Flash-FS (как часть RL 4.20);
- STM32F103RC;
- SD-Card на SPI;
- I2C EEPROM 16Kbyte.

На новом перспективном (для нас) устройстве, сердцем и пламенным мотором которого является упомянутый процессор, есть слот для SD карточки. Файловая система работает с SD карточкой через SPI успешно и без нареканий. Наличествующий I2C EEPROM на плате был предусмотрен для хранения различных настроек с хранением вне файловой системы, но возникла, однако, идея "натравить" Flash-FS на EEPROM, чтобы концептуально унифицировать использование данных с SD карты и EEPROM.

Как известно, Flash-FS может поддерживать (одновременно) различные типы памяти, в том числе всякие флэши, как параллельные, так и последовательные. Взяв за основу прилагаемый "драйвер" к 25F640S33 - это 1MB SPI Flash, - я переписал его, "перенаправив" запросы к I2C EEPROM. Создал, конечно, соответствующий FlashDev.h, который описывает сектора: получилось 256 секторов по 64 байта каждый (страница моего EEPROM - 64 байта).

Вроде все путем. Проформатировал (fformat("S0:")) - система прописала память 0xFF. Помощь утверждает, что будет не FAT, а EFS. Каталог пуст.
Попытался создать файл a.txt с тестовым содержимым "Content of the file". Система записала что-то в EEPROM; сказала, успешно.
Попытался открыть файл - ошибка.
Отобразил каталог (ffind(), последовательность действий отражена в распечатке моей консоли ниже):

\a.txtяяContent of the filяяяяяя 0, 01-01-1980 12:00:00

Total: 0
Free: 0.

То есть, в памяти подряд записано имя файла (a.txt), затем 2 раза 0xFF (я), затем подряд идет содержимое файла, лишь 18 символов из 19-ти (без последней буквы "e"), потом опять несколько 0xFF (я).

В общем, вопросы:
- кто-нибудь уже натравливал Flash-FS на embedded flash?
- что за формат файловой системы там поддерживался?
- как можно интерпретировать чушь, которую я вижу как результат работы ffind()?

Тыкание носом и полезные советы приветствуются.
Заранее спасибо.

P.S. dump EEPROM:


0000: 5C 61 2E 74 78 74 FF FF 43 6F 6E 74 65 6E 74 20
0010: 6F 66 20 74 68 65 20 66 69 6C FF FF FF FF FF FF
0020: FF FF FF FF FF FF FF FF FF FF FF FF 1B 00 00 00
0030: 01 00 FF FF 08 00 00 00 01 80 FF FF F0 FF FF FF




AREA CONTROLLER V1.0, STM32F at 72MHz
Compiled on Nov 9 2011 at 12:23:43
Configuration:
- RL-USB in use.
- VCOM implemented.
- HID implemented.

Flash: 256KB
EEPROM: 16KB
Battery: 3.01V
Temperature: +25
Actual time: 12:23:46

Media directory:

No files...

Free: 0.


ARC>write

EEPROM file created.
EEPROM written.
EEPROM file open error
ARC>dir

AREA CONTROLLER V1.0, STM32F at 72MHz
Compiled on Nov 9 2011 at 12:23:43
Configuration:
- RL-USB in use.
- VCOM implemented.
- HID implemented.

Flash: 256KB
EEPROM: 16KB
Battery: 3.01V
Temperature: +25
Actual time: 12:24:09

Media directory:

\a.txtяяContent of the filяяяяяя 0, 01-01-1980 12:00:00

Total: 0
Free: 0.


ARC>
Ivan Kuznetzov
я натравливал fat_fs от elm chan, только на M25P64 - воспроизводит аудио с флешки
KnightIgor
ПРОБЛЕМА РЕШЕНА: была-таки ошибка в моем коде, писалось на 2 байта меньше, чем надо. Теперь все работает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.