Перейти к содержанию
    

У автора, судя из письма, имеется SDRAM. Простое и очевидное решение в этом случае - кеширование по чтению. Тогда описанные Вами проблемы минимизируются.

Кеширование на уровне ниже FatFS.

SDRAM не бесконечна, 64 Мбайта на всё. Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10, память GUI, куча lwIP и виртуальный диск в FatFs (помимо карточки). Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался.

Минимум- это копия таблицы FAT. Оптимум- еще и кэш читаемого кластера целиком (а не сектора).

Ну и следующий шаг, что еще кэшировать- зависит от задачи.

 

Еще подумайте про индексирование- однажды проводится при включении, и очень ускоряет доступ по чтению, то есть у Вас уже есть найденные адреса для быстрого доступа к необходимым данным на диске). Но это уже нужно смотреть конкретную задачу.

 

Кстати, для AT45 я просто кэшировал в его же второй внутренний буфер RAM, там их два, и использовал их по очереди. Это уже сильно ускоряло процесс доступа.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как именно логичнее сделать кэш на чтение с карточки?

Стандартно: если при чтении сектор есть в кеше - обновляем его время последнего доступа; если нет (кеш-промах) - читаем с карты и копируем в кеш, присваивая текущее время; при записи также копируем в кеш, обновляя время. При копировании в кеш, если в нём нет свободных мест, удаляем из кеша наиболее старый сектор.

Пары мегабайт думаю вполне хватит (по минимуму).

 

Кстати, для AT45 я просто кэшировал в его же второй внутренний буфер RAM, там их два, и использовал их по очереди. Это уже сильно ускоряло процесс доступа.

Это не кеширование, это стандартный метод доступа к AT45, предусмотренный её интерфейсом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На будущее запомню, однако не думаю что сейчас с наскоку решу эту задачку, надо лезть в дебри FatFs, не на один день вдумчивого ковыряния библиотеки. В случае с AT45 я читаю её лишь при включении, всё дальнейшее чтение идёт с кэша в SDRAM, там несложно. Хотя она и так относительно быстро читается, порядка 4 МБ/с при 45мгц клока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10,

 

Если не секрет, зачем эти все ПЗУшки, если есть СД-карта???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не секрет, зачем эти все ПЗУшки, если есть СД-карта???

У ФМ-ки почти бесконечное количество циклов записи...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У ФМ-ки почти бесконечное количество циклов записи...

А AT45DB641??

Если уж такое дело, то у СД-рама еще больше, если устойство батарейное или есть возможность подключить к ИБП - то никаких доп. ПЗУшек не надо вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не секрет, зачем эти все ПЗУшки, если есть СД-карта???

в нашем деле самое главное - контакт

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в нашем деле самое главное - контакт

Хотите сказать, что нельзя поставить надежный холдер?? Или в устройстве вообще нет ни одного разъема? По-моему - бред :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На FM25V10 в количестве 4х штук лежит критически важная инфа. Ее повреждение, либо ошибка, равносильно полной неработоспособности аппарата. Ресурс дичайший, если постоянно по кругу писать на максимальной скорости, то порядка 20 или 40 лет(не вспомню сейчас). Питание +3.3 зарезервировано ltc3226+lowESR ионистор типа HS230F. На AT45 часть размечена под ежедневные бэкапы всей FRAM памяти, другая часть под различные настройки, третья под образ текущей прошивки и заводской прошивки, гарантировано рабочей. Оставщаяся часть диск FatFs, который доступен через FTP, на нем лежат последние логи, которые пишутся по кругу, по своей сути -черный ящик, на случай отказа. На SD карту пишутся теже самые логи, с нее возможно обновление ПО( а также по сети со странички, либо через FTP), лежат тяжеловесные файлы. Если карта накроетмя, то логов на AT45 хватит на 2-3 суток, за это время сервис мен успеет поменять карту. Если не успевает, то логи пишутся в виртуалтный диск в SDRAM в 32 мбайта. Может показаться избыточно, поначалу всё было куда проще и понятнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На FM25V10 в количестве 4х штук лежит критически важная инфа. Ее повреждение, либо ошибка, равносильно полной неработоспособности аппарата.

На AT45 часть размечена под ежедневные бэкапы всей FRAM памяти, другая часть под различные настройки, третья под образ текущей прошивки и заводской прошивки, гарантировано рабочей.

На SD карту пишутся теже самые логи, с нее возможно обновление ПО( а также по сети со странички, либо через FTP), лежат тяжеловесные файлы.

Если не успевает, то логи пишутся в виртуалтный диск в SDRAM в 32 мбайта. Может показаться избыточно, поначалу всё было куда проще и понятнее.

 

Избыточно?? Это мягко сказано, практически четверное резервирование, это разве, что в космос или в "черный ящик" устанавливать. Только какой резерв, что программа не глюканет - неизвестно...

 

ЗЫ. Основной лог - на Ф-раме, резервный и с доступом из вне - на СД-карте, буфер в СДРАМ, думаю, этого больше, чем нужно.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лог на sdram особо не в счет - питания нет 3 секунды, ионистор отрубаетмя, и лога тоже нет. А так вполне себе мажоритирование 2 из 3. Бывает и 4 из 5). На фраме не лог, а основная инфа, а логи-все действия извне, чтобы в случае отказа повторить/смоделировать ситуацию и внести правки. Потерять их очень нежелательно. Программа, конечно, может глюкпнуть, вон ракеты падают. Дтскутировать о методах оценки надежности ПО можно долго.

Изменено пользователем Hold

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лог на sdram особо не в счет - питания нет 3 секунды, ионистор отрубаетмя, и лога тоже нет. А так вполне себе мажоритирование 2 из 3. Бывает и 4 из 5). На фраме не лог, а основная инфа,

 

Опять-же не понятно, что такое "основная инфа", это то, что задано в конфигурации или эта инфа создается в процессе работы устр-ва? Если первое - то логичнее эту инфу держать на СДшке, если второе - то это то же самое, что и лог.

 

Из своего опыта - сделана куча автоматов с логом на единственную СД-карту - из сотни один, макс. 2 отказа и то, по причине банальной жадности, рекомендовали ставить "кингстон", а клиенты решили сэкономить и поставили "смартбай" или еще что-то.

В охранках дублирование на 24хх серии i2c епромах - ни одного отказа, даже на г..но картах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотите сказать, что нельзя поставить надежный холдер??

любой самый пренадёжный холдер рано или поздно закиснет, гораздо раньше, чем закиснет пайка

так что в обычном режиме пишем на карточку, в аварийном - на плату

или одновременно, если пенсия не далеко

 

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Опять-же не понятно, что такое "основная инфа", это то, что задано в конфигурации или эта инфа создается в процессе работы устр-ва? Если первое - то логичнее эту инфу держать на СДшке, если второе - то это то же самое, что и лог.

 

Из своего опыта - сделана куча автоматов с логом на единственную СД-карту - из сотни один, макс. 2 отказа и то, по причине банальной жадности, рекомендовали ставить "кингстон", а клиенты решили сэкономить и поставили "смартбай" или еще что-то.

В охранках дублирование на 24хх серии i2c епромах - ни одного отказа, даже на г..но картах.

Основная инфа - данные, которые создаются в процессе работы, проходят сквозь аппарат. За день может пройти до 3-4 Гб. Флеш бы может выдержал какое-то время, но рано или поздно начнутся ошибки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...