ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
804068 Топик полностью
Николай Коровин (24.12.2017 15:37 - 15:40, просмотров: 246) ответил Николай Коровин на Как я понял выхлоп обсуждения, уже делали всё. FAT и rootdir только на чтение (захардкодено выдавать имитацию), любая перезапись проглатывается и игнорируется. Поскольку кластер один, тело файла посекторно мапится в EEPROM однозначно и
В принципе, можно сделать отдачу на чтение любого числа и объёма файлов, генерирующихся «на лету», главное, чтобы на запись был один файл из одного кластера. Берём виртуальную дискету (образ), монтируем, записываем туда сначала RW-нанофайл, потом «рыбы» всех RO-файлов, ставим им атрибут RO, размонтируем. Открываем в хексе образ, метим все остальные (свободные) кластеры как бэды. Монтируем, проверяем, чтобы свободного места было 0, размонтируем. Смотрим в хексе образ, разбиваем на три части: генерируемая служебная область, натуральный файл из одного кластера, генерируемая файловая область RO-файлов. Хардкодим первую часть: на чтение отдавать FAT и Root Dir по типу «если запросили сектор N, то отдаём один-два-сто восемь-дальше заполняем повторяющейся структурой», на запись отвечать «всё-всё сделано» и ничего не делать (ОС может разными способами менять наш микрофайл, скажем, сделать его NAME.EXT стёртым хAME.EXT и создать заново, или просто сразу тело записать, не трогая, смотря с какого боку оператор подошёл). Это можно игнорить, потому что под тело есть всего один кластер, остальное занято. Вторую часть мы честно читаем и пишем. Это и есть наши настройки. Если мы смелые и сильные, то мы можем парсить там текст и выдавать в ответ тоже текст (главное, чтобы по границе секторов не прошло). Тогда этот файл тоже получается генерируемым, а из настроечного софта остаётся один Блокнот. Третью часть мы на чтение тоже генерируем «на лету» в произвольном порядке (текстовые логи, графики в .BMP и прочее, превышающее всю наличную память на пару порядков). В случае записи возвращаем sector write error, чтобы хоть как-то объяснить оператору, что он кретин. Поскольку мы всё после окончания третьей части пометили как bad, то смело на чтение и запись их возвращаем всегда ошибку сектора. Ну, против форматирования и записи произвольного файлового говна ничего не поможет, как и против упорного стирания ReadOnly-файлов, но случайно это не сделаешь, а кретин может и просто вместо настроек мусор насыпать. Упорный кретинодестрой не считается. Где-то в старом треде была ссылка на статью каких-то разрабов, сделавших сие чьЮдо.