Привет, мужики, а также милые дамы.
Имеем:
- 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>