Hold 0 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба У автора, судя из письма, имеется SDRAM. Простое и очевидное решение в этом случае - кеширование по чтению. Тогда описанные Вами проблемы минимизируются. Кеширование на уровне ниже FatFS. SDRAM не бесконечна, 64 Мбайта на всё. Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10, память GUI, куча lwIP и виртуальный диск в FatFs (помимо карточки). Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался. Минимум- это копия таблицы FAT. Оптимум- еще и кэш читаемого кластера целиком (а не сектора). Ну и следующий шаг, что еще кэшировать- зависит от задачи. Еще подумайте про индексирование- однажды проводится при включении, и очень ускоряет доступ по чтению, то есть у Вас уже есть найденные адреса для быстрого доступа к необходимым данным на диске). Но это уже нужно смотреть конкретную задачу. Кстати, для AT45 я просто кэшировал в его же второй внутренний буфер RAM, там их два, и использовал их по очереди. Это уже сильно ускоряло процесс доступа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 224 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Как именно логичнее сделать кэш на чтение с карточки? Стандартно: если при чтении сектор есть в кеше - обновляем его время последнего доступа; если нет (кеш-промах) - читаем с карты и копируем в кеш, присваивая текущее время; при записи также копируем в кеш, обновляя время. При копировании в кеш, если в нём нет свободных мест, удаляем из кеша наиболее старый сектор. Пары мегабайт думаю вполне хватит (по минимуму). Кстати, для AT45 я просто кэшировал в его же второй внутренний буфер RAM, там их два, и использовал их по очереди. Это уже сильно ускоряло процесс доступа. Это не кеширование, это стандартный метод доступа к AT45, предусмотренный её интерфейсом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hold 0 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба На будущее запомню, однако не думаю что сейчас с наскоку решу эту задачку, надо лезть в дебри FatFs, не на один день вдумчивого ковыряния библиотеки. В случае с AT45 я читаю её лишь при включении, всё дальнейшее чтение идёт с кэша в SDRAM, там несложно. Хотя она и так относительно быстро читается, порядка 4 МБ/с при 45мгц клока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10, Если не секрет, зачем эти все ПЗУшки, если есть СД-карта??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadat 0 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Если не секрет, зачем эти все ПЗУшки, если есть СД-карта??? У ФМ-ки почти бесконечное количество циклов записи... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба У ФМ-ки почти бесконечное количество циклов записи... А AT45DB641?? Если уж такое дело, то у СД-рама еще больше, если устойство батарейное или есть возможность подключить к ИБП - то никаких доп. ПЗУшек не надо вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Если не секрет, зачем эти все ПЗУшки, если есть СД-карта??? в нашем деле самое главное - контакт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба в нашем деле самое главное - контакт Хотите сказать, что нельзя поставить надежный холдер?? Или в устройстве вообще нет ни одного разъема? По-моему - бред :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hold 0 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба На FM25V10 в количестве 4х штук лежит критически важная инфа. Ее повреждение, либо ошибка, равносильно полной неработоспособности аппарата. Ресурс дичайший, если постоянно по кругу писать на максимальной скорости, то порядка 20 или 40 лет(не вспомню сейчас). Питание +3.3 зарезервировано ltc3226+lowESR ионистор типа HS230F. На AT45 часть размечена под ежедневные бэкапы всей FRAM памяти, другая часть под различные настройки, третья под образ текущей прошивки и заводской прошивки, гарантировано рабочей. Оставщаяся часть диск FatFs, который доступен через FTP, на нем лежат последние логи, которые пишутся по кругу, по своей сути -черный ящик, на случай отказа. На SD карту пишутся теже самые логи, с нее возможно обновление ПО( а также по сети со странички, либо через FTP), лежат тяжеловесные файлы. Если карта накроетмя, то логов на AT45 хватит на 2-3 суток, за это время сервис мен успеет поменять карту. Если не успевает, то логи пишутся в виртуалтный диск в SDRAM в 32 мбайта. Может показаться избыточно, поначалу всё было куда проще и понятнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 октября, 2017 Опубликовано 16 октября, 2017 (изменено) · Жалоба На FM25V10 в количестве 4х штук лежит критически важная инфа. Ее повреждение, либо ошибка, равносильно полной неработоспособности аппарата. На AT45 часть размечена под ежедневные бэкапы всей FRAM памяти, другая часть под различные настройки, третья под образ текущей прошивки и заводской прошивки, гарантировано рабочей. На SD карту пишутся теже самые логи, с нее возможно обновление ПО( а также по сети со странички, либо через FTP), лежат тяжеловесные файлы. Если не успевает, то логи пишутся в виртуалтный диск в SDRAM в 32 мбайта. Может показаться избыточно, поначалу всё было куда проще и понятнее. Избыточно?? Это мягко сказано, практически четверное резервирование, это разве, что в космос или в "черный ящик" устанавливать. Только какой резерв, что программа не глюканет - неизвестно... ЗЫ. Основной лог - на Ф-раме, резервный и с доступом из вне - на СД-карте, буфер в СДРАМ, думаю, этого больше, чем нужно. Изменено 16 октября, 2017 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hold 0 16 октября, 2017 Опубликовано 16 октября, 2017 (изменено) · Жалоба Лог на sdram особо не в счет - питания нет 3 секунды, ионистор отрубаетмя, и лога тоже нет. А так вполне себе мажоритирование 2 из 3. Бывает и 4 из 5). На фраме не лог, а основная инфа, а логи-все действия извне, чтобы в случае отказа повторить/смоделировать ситуацию и внести правки. Потерять их очень нежелательно. Программа, конечно, может глюкпнуть, вон ракеты падают. Дтскутировать о методах оценки надежности ПО можно долго. Изменено 16 октября, 2017 пользователем Hold Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Лог на sdram особо не в счет - питания нет 3 секунды, ионистор отрубаетмя, и лога тоже нет. А так вполне себе мажоритирование 2 из 3. Бывает и 4 из 5). На фраме не лог, а основная инфа, Опять-же не понятно, что такое "основная инфа", это то, что задано в конфигурации или эта инфа создается в процессе работы устр-ва? Если первое - то логичнее эту инфу держать на СДшке, если второе - то это то же самое, что и лог. Из своего опыта - сделана куча автоматов с логом на единственную СД-карту - из сотни один, макс. 2 отказа и то, по причине банальной жадности, рекомендовали ставить "кингстон", а клиенты решили сэкономить и поставили "смартбай" или еще что-то. В охранках дублирование на 24хх серии i2c епромах - ни одного отказа, даже на г..но картах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 16 октября, 2017 Опубликовано 16 октября, 2017 (изменено) · Жалоба Хотите сказать, что нельзя поставить надежный холдер?? любой самый пренадёжный холдер рано или поздно закиснет, гораздо раньше, чем закиснет пайка так что в обычном режиме пишем на карточку, в аварийном - на плату или одновременно, если пенсия не далеко Изменено 16 октября, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hold 0 17 октября, 2017 Опубликовано 17 октября, 2017 · Жалоба Опять-же не понятно, что такое "основная инфа", это то, что задано в конфигурации или эта инфа создается в процессе работы устр-ва? Если первое - то логичнее эту инфу держать на СДшке, если второе - то это то же самое, что и лог. Из своего опыта - сделана куча автоматов с логом на единственную СД-карту - из сотни один, макс. 2 отказа и то, по причине банальной жадности, рекомендовали ставить "кингстон", а клиенты решили сэкономить и поставили "смартбай" или еще что-то. В охранках дублирование на 24хх серии i2c епромах - ни одного отказа, даже на г..но картах. Основная инфа - данные, которые создаются в процессе работы, проходят сквозь аппарат. За день может пройти до 3-4 Гб. Флеш бы может выдержал какое-то время, но рано или поздно начнутся ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться