|
|
  |
stm32 и FatFs от Chan |
|
|
|
Oct 16 2017, 09:37
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Цитата(jcxz @ Oct 13 2017, 22:51)  У автора, судя из письма, имеется SDRAM. Простое и очевидное решение в этом случае - кеширование по чтению. Тогда описанные Вами проблемы минимизируются. Кеширование на уровне ниже FatFS. SDRAM не бесконечна, 64 Мбайта на всё. Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10, память GUI, куча lwIP и виртуальный диск в FatFs (помимо карточки). Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался.
|
|
|
|
|
Oct 16 2017, 10:00
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Hold @ Oct 16 2017, 11:37)  Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался. Минимум- это копия таблицы FAT. Оптимум- еще и кэш читаемого кластера целиком (а не сектора). Ну и следующий шаг, что еще кэшировать- зависит от задачи. Еще подумайте про индексирование- однажды проводится при включении, и очень ускоряет доступ по чтению, то есть у Вас уже есть найденные адреса для быстрого доступа к необходимым данным на диске). Но это уже нужно смотреть конкретную задачу. Кстати, для AT45 я просто кэшировал в его же второй внутренний буфер RAM, там их два, и использовал их по очереди. Это уже сильно ускоряло процесс доступа.
|
|
|
|
|
Oct 16 2017, 10:19
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Hold @ Oct 16 2017, 12:37)  Как именно логичнее сделать кэш на чтение с карточки? Стандартно: если при чтении сектор есть в кеше - обновляем его время последнего доступа; если нет (кеш-промах) - читаем с карты и копируем в кеш, присваивая текущее время; при записи также копируем в кеш, обновляя время. При копировании в кеш, если в нём нет свободных мест, удаляем из кеша наиболее старый сектор. Пары мегабайт думаю вполне хватит (по минимуму). Цитата(Ruslan1 @ Oct 16 2017, 13:00)  Кстати, для AT45 я просто кэшировал в его же второй внутренний буфер RAM, там их два, и использовал их по очереди. Это уже сильно ускоряло процесс доступа. Это не кеширование, это стандартный метод доступа к AT45, предусмотренный её интерфейсом.
|
|
|
|
|
Oct 16 2017, 12:50
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

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

Частый гость
 
Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575

|
Цитата(mantech @ Oct 16 2017, 16:13)  Если не секрет, зачем эти все ПЗУшки, если есть СД-карта??? У ФМ-ки почти бесконечное количество циклов записи...
|
|
|
|
|
Oct 16 2017, 17:56
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
На FM25V10 в количестве 4х штук лежит критически важная инфа. Ее повреждение, либо ошибка, равносильно полной неработоспособности аппарата. Ресурс дичайший, если постоянно по кругу писать на максимальной скорости, то порядка 20 или 40 лет(не вспомню сейчас). Питание +3.3 зарезервировано ltc3226+lowESR ионистор типа HS230F. На AT45 часть размечена под ежедневные бэкапы всей FRAM памяти, другая часть под различные настройки, третья под образ текущей прошивки и заводской прошивки, гарантировано рабочей. Оставщаяся часть диск FatFs, который доступен через FTP, на нем лежат последние логи, которые пишутся по кругу, по своей сути -черный ящик, на случай отказа. На SD карту пишутся теже самые логи, с нее возможно обновление ПО( а также по сети со странички, либо через FTP), лежат тяжеловесные файлы. Если карта накроетмя, то логов на AT45 хватит на 2-3 суток, за это время сервис мен успеет поменять карту. Если не успевает, то логи пишутся в виртуалтный диск в SDRAM в 32 мбайта. Может показаться избыточно, поначалу всё было куда проще и понятнее.
|
|
|
|
|
Oct 16 2017, 18:21
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Hold @ Oct 16 2017, 20:56)  На FM25V10 в количестве 4х штук лежит критически важная инфа. Ее повреждение, либо ошибка, равносильно полной неработоспособности аппарата. На AT45 часть размечена под ежедневные бэкапы всей FRAM памяти, другая часть под различные настройки, третья под образ текущей прошивки и заводской прошивки, гарантировано рабочей. На SD карту пишутся теже самые логи, с нее возможно обновление ПО( а также по сети со странички, либо через FTP), лежат тяжеловесные файлы. Если не успевает, то логи пишутся в виртуалтный диск в SDRAM в 32 мбайта. Может показаться избыточно, поначалу всё было куда проще и понятнее. Избыточно?? Это мягко сказано, практически четверное резервирование, это разве, что в космос или в "черный ящик" устанавливать. Только какой резерв, что программа не глюканет - неизвестно... ЗЫ. Основной лог - на Ф-раме, резервный и с доступом из вне - на СД-карте, буфер в СДРАМ, думаю, этого больше, чем нужно.
Сообщение отредактировал mantech - Oct 16 2017, 18:24
|
|
|
|
|
Oct 16 2017, 18:36
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Лог на sdram особо не в счет - питания нет 3 секунды, ионистор отрубаетмя, и лога тоже нет. А так вполне себе мажоритирование 2 из 3. Бывает и 4 из 5). На фраме не лог, а основная инфа, а логи-все действия извне, чтобы в случае отказа повторить/смоделировать ситуацию и внести правки. Потерять их очень нежелательно. Программа, конечно, может глюкпнуть, вон ракеты падают. Дтскутировать о методах оценки надежности ПО можно долго.
Сообщение отредактировал Hold - Oct 16 2017, 18:42
|
|
|
|
|
Oct 16 2017, 20:23
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Hold @ Oct 16 2017, 21:36)  Лог на sdram особо не в счет - питания нет 3 секунды, ионистор отрубаетмя, и лога тоже нет. А так вполне себе мажоритирование 2 из 3. Бывает и 4 из 5). На фраме не лог, а основная инфа, Опять-же не понятно, что такое "основная инфа", это то, что задано в конфигурации или эта инфа создается в процессе работы устр-ва? Если первое - то логичнее эту инфу держать на СДшке, если второе - то это то же самое, что и лог. Из своего опыта - сделана куча автоматов с логом на единственную СД-карту - из сотни один, макс. 2 отказа и то, по причине банальной жадности, рекомендовали ставить "кингстон", а клиенты решили сэкономить и поставили "смартбай" или еще что-то. В охранках дублирование на 24хх серии i2c епромах - ни одного отказа, даже на г..но картах.
|
|
|
|
|
Oct 17 2017, 03:58
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Цитата(mantech @ Oct 17 2017, 03:23)  Опять-же не понятно, что такое "основная инфа", это то, что задано в конфигурации или эта инфа создается в процессе работы устр-ва? Если первое - то логичнее эту инфу держать на СДшке, если второе - то это то же самое, что и лог.
Из своего опыта - сделана куча автоматов с логом на единственную СД-карту - из сотни один, макс. 2 отказа и то, по причине банальной жадности, рекомендовали ставить "кингстон", а клиенты решили сэкономить и поставили "смартбай" или еще что-то. В охранках дублирование на 24хх серии i2c епромах - ни одного отказа, даже на г..но картах. Основная инфа - данные, которые создаются в процессе работы, проходят сквозь аппарат. За день может пройти до 3-4 Гб. Флеш бы может выдержал какое-то время, но рано или поздно начнутся ошибки.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|