|
|
  |
Защита FRAM |
|
|
|
May 30 2012, 14:51
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(juvf @ May 30 2012, 11:32)  Разработан девайс с фрамкой FM25CL64. Фрам воткнули как энергонезависимую память для конфигурационных параметров, серийного номера и т.п. На практике оказалось, что если снять питание с фрамки во время операции чтение/запись, то в ней портятся данные. Как программно решить эту проблему? Запись во FRAM ничем не отличается (кроме скорости) от записи в EEPROM/flash. Чтение из FRAM ничем не отличается от записи в неё же. Поэтому используются те же способы обеспечения целостности чтения/записи, что и для EEPROM/flash. Н-р, монитор входного напряжения стабилизатора и ёмкость на его (стабилизатора) выходе, достаточная для завершения чтения/записи. Если же только программно ... ФС с журналированием подойдёт?
|
|
|
|
|
May 30 2012, 19:08
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата если снять питание с фрамки во время операции чтение/запись Операции чтение/запись у FRAM нет. Есть отдельно чтение, есть отдельно запись. Причём, запись с явным разрешением (перед каждой операцией записи) отдельной командой. Т.е., если при чтении снять питание в середине передачи например адреса - портятся данные во многих ячейках? А Вы выжидаете время после подачи питания на микросхему памяти перед тем, как начинать читать данные (hint: читать даташит внимательно)? brown out detecor у микропроцессора есть?
Сообщение отредактировал Genadi Zawidowski - May 30 2012, 19:09
|
|
|
|
|
May 31 2012, 02:36
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Ещё раз хочу повторить..... аппаратно платы сделанны. Очень большой объем и очень дорогой. Аппаратную часть ни кто переделывать не будет. Поэотму изыскиваю пути исправить ошибру разработчиков платы программным путём. Цитата Операции чтение/запись у FRAM нет. Есть отдельно чтение, есть отдельно запись. ну то это понятно, просто сократил, читайте - "Во время отдельной операции записи с явным разрешением и во время отдельной операции чтения". Цитата Я пишу две копии, у каждой crc16. Случаев одновременного сбоя обеих копий не замечено. Я сейчас пока так и сделал. надеюсь что обе копии не попортятся. Цитата Т.е., если при чтении снять питание в середине передачи например адреса - портятся данные во многих ячейках? Вот, нашел где я это видел Цитата(sgs @ Jul 24 2008, 22:45)  Для FRAM'а существенно напряжение питания: 4.5 ..5.5 В. Если питание будет ниже 4.5 В во время обращения к чипу (все равно - по записи или чтению), вы рискуете потерять не только данные в ячейке обращения, но и во всех связанных с ней ячейках строки регенерации - конкретно для FM25C160 - 4 байта в 4-х разных банках. Поэтому производитель настоятельно рекомендует (page 3) контролировать питание и принимать меры, чтобы хотя бы сигнал CS был "1" при пониженном напряжении. Цитата ТС (как я понял) хотел сказать, что данные слетают при провале питания и на чтении, и на записи, что неудивительно - у FRAM принципиально разрушающее чтение, поэтому за любым чтением всегда следует восстанавливающая запись, просто пользователь этого не видит. это я и хотел сказать. А что за восстанавливающая запись?
|
|
|
|
|
May 31 2012, 07:58
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(Genadi Zawidowski @ May 31 2012, 12:49)  У Вас строго 3.3 должно быть. Имеется? моя микросхема FM25CL64. питание по даташиту Voltage Operation 2.7-3.65V. я её питаю 3.3. Смотрю 3-ю страницу: Цитата Note: The FM25CL64 contains no power management circuits other than a simple internal power-on reset circuit. It is the user’s responsibility to ensure that VDD is within datasheet tolerances to prevent incorrect operation. It is recommended that the part is not powered down with chip enable active. Прям как говорил sgs. У него микросхема очевидно FM25C160 и питается от 5 В.
|
|
|
|
|
May 31 2012, 10:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134

|
Цитата(Aner @ May 31 2012, 13:48)  ...Длительность циклов запись/чтение у FRAM десятки наносекунд. И где это вы такое прочитали? Посмотрите параметр tD минимум 60ns между последовательными обращениями. Я лично работал с FRAM c паралельным интерфейсом и их параметры практически совпадают со статической памятью SRAM с временем выборки 50-120ns Цитата(juvf @ May 31 2012, 14:19)  рубильнег дернул - вот и попал в эти "десятки наносекунд", за месяц на опытном образце раз 5 уже такое произошло. Причем можно в нормальном режиме, без ИБП только читать фрам, а в настроечном режиме, с ИБП, можно писать. Но баг происходит и при чтении. А конденсатор по питанию у вас стоит. И сколько времени он разряжается пока питание упадет на 10%. А если вы не позаботитесь чтобы процессор после снижения питания не начал писать что попало куда попало то он и флеш может потереть.
|
|
|
|
|
May 31 2012, 10:44
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(juvf @ May 30 2012, 10:32)  Не нашел лучшего раздела в это форуме
Разработан девайс с фрамкой FM25CL64. Фрам воткнули как энергонезависимую память для конфигурационных параметров, серийного номера и т.п. На практике оказалось, что если снять питание с фрамки во время операции чтение/запись, то в ней портятся данные. Как программно решить эту проблему? можете попробовать в любом сочетании: 1. Уменьшить частоту общения с FRAM насколько это возможно (обращаться на к ней, а к однажды считанной и хранящейся в RAM копии) 2. Исключить общение с FRAM во время переходных процессов (сразу после включения, после переключения мощного потребителя, при резком зафиксированном падении измеряемых величин...) 3. Использовать избыточное кодирование для восстановления данных 4. Использовать CRC для определения валидности пакета хранящихся данных. 5. иметь дубль хранимых данных на случай битого основного пакета. У меня была одна конструкция на RAM с аккумулятором (тогда DataFlash еще не было), там годами по кругу данные записывались, CRC16+номер блока хватало для корректной валидизации блоков длиной 256 байт. В другой конструкции (NANDFlash) применял избыточное кодирование плюс CRC - за несколько месяцев активных испытаний не было ни одного случая битого блока, а до применения избыточного кодирования это фиксировалось (благодаря CRC)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|