|
|
  |
Выбор микроконтроллера |
|
|
|
Jan 20 2009, 13:34
|

Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428

|
Цитата(GetSmart @ Jan 20 2009, 20:18)  А перезапись - это запись нулей поверх едениц. Т.е. запись в ячейку флеш "0xff" эквивалентна не записи, и счётчик перезаписей ячейки 100000 - 1 = 100000? Цитата(GetSmart @ Jan 20 2009, 20:18)  Стирание - это отдельная операция. После того, как заполните весь сектор (32К допустим), потом стираете его целиком и пишете заново с начала. Это плохо, придётся стирать весь буфер, а у меня реализован алгоритм восстановления предыдущего значения в случае сбоя при записи текущего. На два буфера переходить чтоли ...
|
|
|
|
|
Jan 20 2009, 13:50
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Visor @ Jan 20 2009, 19:34)  Т.е. запись в ячейку флеш "0xff" эквивалентна не записи, и счётчик перезаписей ячейки 100000 - 1 = 100000? Ага. Примерно так. Цитата Это плохо, придётся стирать весь буфер, а у меня реализован алгоритм восстановления предыдущего значения в случае сбоя при записи текущего. На два буфера переходить чтоли ... Берите два буфера (сегмента). Стирать можно только сектор целиком. В начале флэш там есть 7 свободных сегментов по 4К, не считая нулевой, в котором таблица исключений. А в 128К, 256К и 512К процах много сегментов по 32К.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 20 2009, 19:31
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jan 20 2009, 15:19)  Все именно так, только "непрограмирующиеся" можно и считать из Flash. то есть пишем только изменения ? если можем записать... иначе сттираем страницу и перезаписываем... так ? Цитата(Visor @ Jan 19 2009, 20:57)  Что-то я не понял как это. В описании написано: копирование из RAM во flash блоками по 256 | 512 | 1024 | 4096 байт. Ткните носом пожалуйста.  Насколько я ничего не понимаю, NXP просто не дал других вариантов нам юзерам... флеш точно можно писать по 16байт минимум, но описания как это делать, нет... можно конечно дизасемблировать их процедуру записи/стирания, но никто не гарантирует что процедура не изменится в будующем... тч минимум для записи это 256 байт
|
|
|
|
|
Jan 21 2009, 05:34
|

Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428

|
Цитата(singlskv @ Jan 21 2009, 02:31)  флеш точно можно писать по 16байт минимум, но описания как это делать, нет... можно конечно дизасемблировать их процедуру записи/стирания, но никто не гарантирует что процедура не изменится в будующем... тч минимум для записи это 256 байт Ясно. Но если мы можем писать блок 256 байт, в котором все "0xff" (не изменяется ничего) и нет проблем с ECC, то записывая блок 256 байт, в котором первый "0x00" и далее все "0xff" (пишем первый байт только) будут проблемы?
|
|
|
|
|
Jan 21 2009, 08:48
|

Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428

|
Цитата(GetSmart @ Jan 21 2009, 13:47)  Какие проблемы? ... Я не корректно выразил свою мысль, имелось ввиду следующее: во флеш имеем группу из 16-ти байт: 00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff пишем поверх: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff , без проблем с ECC но если пишем поверх: ff,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff , то получаем ошибку, почему? Если ECC формируется по результату записи, то проблем не должно быть, а если по записываемым данным, то проблемы должны быть и со всеми ff.
|
|
|
|
|
Jan 21 2009, 09:24
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Visor @ Jan 21 2009, 14:48)  но если пишем поверх: ff,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff , то получаем ошибку, почему? Если ECC формируется по результату записи, то проблем не должно быть, а если по записываемым данным, то проблемы должны быть и со всеми ff. Дело в том, что после первой записи ECC сбросит некоторые из своих бит в 0. Даже если во второй раз записать в следующий байт группы не затронув предыдущий первый байт, то ECC изменится и с большой вероятностью некоторые биты ECC изменятся с "0" на "1", а так как флэш это не допускает делать без стирания байта (в LPC только сектор целиком), то ECC приобретёт совершенно некорректное значение. После этого читая эти 16 байт в них будут случайные биты (немного, возможно 1, 2 или 3) искажены алгоритмом ECC. Хотя большая часть бит в 16-ти байтах будет похожа на записанные значения.
Сообщение отредактировал GetSmart - Jan 21 2009, 09:36
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|